HLFX.Ru Forum Страницы (2): [1] 2 »
Показать все 3886 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)


Отправлено ***FantoM*** 23-01-2015 в 00:11:

Half-Life нуб вопросы от <censored> и других нубов

всем привет
народ помогите у меня куча проблем
первая проблема в uzi
почему они стреляют но не оставляет следы и не видны спрайты выстрела
проблема номер два в fnh
почему они стреляют как надо в двиге hl а в Xash3D все не так как надо короче смотрите видео видео
проблема номер три че за ошибка gl_upload16: s&3 как исправить ?

Добавлено 23-01-2015 в 06:11:

XaeroX не закрывай тему


Отправлено XaeroX 23-01-2015 в 00:15:

Цитата:
***FantoM*** писал:
проблема номер три че за ошибка gl_upload16: s&3 как исправить ?

Я уже ответил тебе на этот вопрос. Что не устроило?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 23-01-2015 в 00:17:

в текстурах все норм может быть в спрайтах проблема ?


Отправлено XaeroX 23-01-2015 в 00:19:

Может быть.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 23-01-2015 в 00:23:

у меня походу с hud.txt пробдема


Отправлено Ghoul [BB] 23-01-2015 в 00:40:

Цитата:
***FantoM*** писал:
первая проблема в uzi
почему они стреляют но не оставляет следы и не видны спрайты выстрела




Проверь код на клиенте. скорее всего, ты не отправляешь эвент для этого оружия.

2 оружие - проверь, как и каким образом ты передаешь на клиентку мессадж или эвент, отвечающий за анимацию-вук и т.п.

З.Ы. Всё-таки подумай, ЗАЧЕМ ты делаешь мод? Не повторяй судьбу быдло-поделки ХЛВЕ, когда автор так же вот писал код то по туторам, то чужими руками, то просто не подумав каких-то вещей, и в итоге в это невозможно было играть из-за вылетов.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ***FantoM*** 23-01-2015 в 03:12:

первое и второе готово
осталось исправить ошибку


Отправлено ***FantoM*** 23-01-2015 в 15:49:

че не у кого не была эта ошибка ?


Отправлено XaeroX 23-01-2015 в 15:56:

***FantoM***
Написал же уже. Проверяй текстуры и спрайты на предмет размеров, не кратных 8.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 23-01-2015 в 16:00:

Цитата:
***FantoM*** писал:
осталось исправить ошибку

gl_upload16: s&3 ??
У тебя кастомный рендер прикручен? Если да, то копай в этом направлении. ЕМНИП, то спрайты со сторонами не делящимися на 2 не грузятся. А спрайты со сторонами, не делящимися на 8 смазываются жутко.
Цитата:
Ghoul [BB] писал:
Не повторяй судьбу быдло-поделки ХЛВЕ, когда автор так же вот писал код то по туторам, то чужими руками, то просто не подумав каких-то вещей, и в итоге в это невозможно было играть из-за вылетов.

Ghoul [BB] дело не в вылетах, их пофиксить можно со временем. Твой мод - штука интересная, но ты напихал туда и говна и конфет, и красную армию и наполеоновскую, и звёздные войны и стимпанк. Не сочетается. Поэтому и проехал.


Отправлено ***FantoM*** 24-01-2015 в 00:34:

у меня еще один вопросЪ
как сделать декали не вадом а тгашкой


Отправлено Ku2zoff 24-01-2015 в 04:04:

***FantoM*** кастомный рендерер прикрутить. Вон в паранойе и в тринити есть. А лучше спрайтами сделай.


Отправлено ***FantoM*** 24-01-2015 в 04:07:

Ku2zoff
на спрайтах поподробней


Отправлено ***FantoM*** 24-01-2015 в 12:41:

народ как понять декали спрайтом ?


Отправлено Ku2zoff 24-01-2015 в 22:10:

Цитата:
***FantoM*** писал:
на спрайтах поподробней

Тутора нет. Есть мод, в котором декали сделаны спрайтами - Invasion. Корректно в сингле не работают, потому что для них нету сейв-рестора.


Отправлено Ghoul [BB] 25-01-2015 в 02:28:

Цитата:
Ku2zoff писал:
А лучше спрайтами сделай.


Зачем учишь плохому?
Ведь если даже и сделает, то вскорости возникнет тема про вылет NO FREE EDICTS, когда на карте будет больше 256 моделей. (а это быстро достигается после нескольких автоматных очередей)

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ***FantoM*** 25-01-2015 в 23:21:

народ у меня ещк один вопрос
почему в моей модефикации не отображаются руский буквы
что делать как исправить

Добавлено 26-01-2015 в 05:21:

по моему в поранойе и в кс есть


Отправлено Cybermax 25-01-2015 в 23:33:

модификации, русские буквы, паранойе.

Добавлено 26-01-2015 в 02:33:

***FantoM***
У тебя стим, нонстим?

__________________


Отправлено ***FantoM*** 25-01-2015 в 23:36:

нонстим


Отправлено a-kush-er 26-01-2015 в 01:45:

***FantoM***
http://hlfx.ru/forum/showthread.php?threadid=1827
не оно?


Отправлено ***FantoM*** 26-01-2015 в 02:35:

a-kush-er
на моем моде не идет
проверено на won и Non steam


Отправлено KiQ 26-01-2015 в 08:08:

***FantoM*** так у вас, батенька, кодировка неправильная

__________________
-Brain is dead-


Отправлено ***FantoM*** 26-01-2015 в 09:58:

KiQ
как понять неправильная
как исправить


Отправлено Vit_amiN 26-01-2015 в 10:01:

***FantoM***
Например, так

__________________
Мои русификаторы и другие полезные файлы здесь
ЗАПОМНИТЕ, ПОИСК — БЛИЖАЙШИЙ ПУТЬ К ИСТИНЕ


Отправлено SteamPlay43 26-01-2015 в 12:38:

KiQ У меня вообще Unicode patch стоит на халфе, он как бы для кс, но и во всех модах русский работает, халфа но стим 1.1.2.1 build 4554


Отправлено ***FantoM*** 26-01-2015 в 22:02:

SteamPlay43
этот патч вроде на метамод устанавливается и только имена и чат на русский
а мне надо русские буквы из titles.txt


Отправлено GioHAUS0n 27-01-2015 в 07:56:

Цитата:
***FantoM*** писал:
этот патч вроде на метамод устанавливается и только имена и чат на русский
а мне надо русские буквы из titles.txt


XaeroX все знает. Посмотри как реализован русские буковки в HLFX 0.5b, мне кажется где-то был обход самом коде в клиента (когда изучал исходники OP4)


Отправлено ~ X ~ 27-01-2015 в 09:20:

SteamPlay43 для HL1121 не нужно никаких патчей - там и так везде UTF-8.

Про titles.txt я уже не помню. Надо потом посмотреть будет.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено SteamPlay43 27-01-2015 в 16:28:

~ X ~ это не стим, у Стима билд выше 4554, и вроде бы 1.1.2.2

Добавлено 27-01-2015 в 22:28:

~ X ~ в стиме такая или выше:
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
Exe build: 13:55:53 Mar 28 2013 (5999)
А у меня 1.1.2.1 build 4554 2009 год


Отправлено ***FantoM*** 29-01-2015 в 04:14:

всем здарова
у меня есть еще вопрос как сменить шрифт в hl
какие программы для этого нужны ?


Отправлено ***FantoM*** 09-02-2015 в 19:06:

народ для чего нужен fmod.dll
какие эффекты создает ?


Отправлено EXL 10-02-2015 в 04:29:

Цитата:
***FantoM*** писал:
какие эффекты создает ?

Эффект проигрывания звуковых файлов.


Отправлено ***FantoM*** 10-02-2015 в 07:10:

Цитата:
EXL писал:
Эффект проигрывания звуковых файлов.

как понять ?


Отправлено master07 10-02-2015 в 14:06:

***FantoM*** Звуки качественее играется. И много функций для звука.
ЗЫ. Поправте, если я что-то путаю.


Отправлено ***FantoM*** 10-02-2015 в 15:13:

master07
Ясно


Отправлено ***FantoM*** 15-02-2015 в 19:06:

в каком файле изменить слоты и позиции для оружия
хочу поставить вместо фонарика в правую сторону


Отправлено Ku2zoff 16-02-2015 в 05:46:

***FantoM*** ты ленивый или тролль? Используй Find in files в студии. ammo.cpp, там копай.


Отправлено ~ X ~ 16-02-2015 в 11:02:

Цитата:
master07 писал:
***FantoM*** Звуки качественее играется. И много функций для звука.



[off]
http://lmgtfy.com/?q=FMOD+API
[/off]

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено ***FantoM*** 16-02-2015 в 22:50:

Ku2zoff
я не через студи делаю
я через блокнот

Добавлено 17-02-2015 в 04:50:

с студиоай у меня пробремы


Отправлено Ku2zoff 17-02-2015 в 05:19:

Цитата:
***FantoM*** писал:
с студиоай у меня пробремы

На виндовс 7 устанавливаются все студии, кроме 2013 для Windows (приложений для магазина) и старой 2002. На Виндовс 8.1 при желании можно запустить все, кроме той же 2002. Visual C++ 2010 Express с помощью веб-установщика устанавливается за 5 минут при 1.5 мегабитах скорости скачивания. И прекрасно работает в бетке Виндовс 10.


Отправлено ***FantoM*** 17-02-2015 в 07:38:

у меня походу с виндовс что то
из за этова по моему не включается

Добавлено 17-02-2015 в 13:38:

народ помогите как передвинуть слоты и позиции для оружия на место фонарика
сам пытайся и не смог


Отправлено ~ X ~ 17-02-2015 в 11:09:

гыгы... студия 2010 может намертво положить микрософт инсталлер, виндовс и сделать так, что вы не сможете не только переставить ВС, но и вообще ничего... и никогда... ХА-ХА-ХА-Хааааа! (но я не скажу, когда это случается)

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено EXL 17-02-2015 в 12:43:

Цитата:
Ku2zoff писал:
На виндовс 7 устанавливаются все студии, кроме 2013

Windows 7, Microsoft Visual Studio 2013 Community - полет нормальный. Даже Quake II из сорцов id Software в ней собирается.


Отправлено Ku2zoff 17-02-2015 в 15:01:

Цитата:
EXL писал:
Microsoft Visual Studio 2013 Community

7.5 гигов ненужного гавна. А C++ составляющая там весит гига полтора от силы. Для справки: VS C++ 2010 Express (о чудо!) занимает чуть больше 900 мб.


Отправлено EXL 17-02-2015 в 17:46:

Цитата:
Ku2zoff писал:
7.5 гигов ненужного гавна. А C++ составляющая там весит гига полтора от силы. Для справки: VS C++ 2010 Express (о чудо!) занимает чуть больше 900 мб.


А няшный Qt Creator с MinGW'ом и без Qt'а и того меньше. К чему ты про размер пишешь? Я думал ты утверждаешь о работоспособности программы, а не о её размере. VS 2013 отлично работает на Windows 7.

Я разделяю твоё мнение о ненужности C# и прочей MS'овской ерунды, которую никак теперь не отрезать от VS 2013, но тут хотя бы весь стек MFC/ATL (необходимый для компиляции Doom 3) зарелизен и доступен для бесплатного использования. Да ещё некоторые фишки C++11/C++14.

Крякнутые MS VS уходят в прошлое и это хорошо.


Отправлено ***FantoM*** 18-02-2015 в 04:51:

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


Отправлено Ghoul [BB] 18-02-2015 в 05:31:

В исходниках ищи по ключевым словам SLOT и POSITION. По-моему, в weapons.h есть дефайны типа WEAPON_SLOT #
WEAPON_POSITION #,
где WEAPON_ - название конкретного оружия (Глок, Гаусс и т.п.)
Попробуй поменять цифры. После этого перекомпить и сервер, и клиент.

Фонарик никак не передвинешь, ибо ФОНАРИК != ОРУЖИЕ.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ***FantoM*** 18-02-2015 в 05:40:

Ghoul [BB]
я тебя не понял

Добавлено 18-02-2015 в 11:40:

я хотел перекинуть слоты на право где у меня был значок фонарика
по моему это в аммо цпп в int CHudAmmo::Draw(float flTime)


Отправлено ***FantoM*** 19-02-2015 в 12:52:

/


Отправлено Ghoul [BB] 20-02-2015 в 05:22:

Тебе просто *ПЕРЕДВИНУТЬ* графику слотов оружия надо штоль?
Ну, тогда да, надо поменять координаты прорисовки спрайтов оружия.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 20-02-2015 в 06:39:

Цитата:
Ghoul [BB] писал:
Ну, тогда да, надо поменять координаты прорисовки спрайтов оружия.

В файле ammo.cpp, я уже писал об этом.


Отправлено ***FantoM*** 20-02-2015 в 19:07:

Цитата:
Ghoul [BB] писал:
Тебе просто *ПЕРЕДВИНУТЬ* графику слотов оружия надо штоль?

да но как передвинуть
я вроде смотрел flashlight.cpp
но ничего не передвигается
Цитата:
Ku2zoff писал:
В файле ammo.cpp, я уже писал об этом.

ну это понятно но как


Отправлено master07 21-02-2015 в 02:22:

***FantoM*** в ammo.cpp
функция:
int CHudAmmo::DrawWList(float flTime)
смотри все "х" и "у" и меняй значения.
Там даже комментарий до функции есть.

C++ Source Code:
//
// Draw Weapon Menu
//


Отправлено ***FantoM*** 21-02-2015 в 06:08:

master07
спс

Добавлено 21-02-2015 в 09:36:

а вместо фонарика не как ?

Добавлено 21-02-2015 в 11:24:

НАРОД У МЕНЯ ДРУГОЙ ВОПРОС
Я НАЧАЛ ДЕЛАТЬ ТЕНИ ОТ BUzer

http://www.half-life.ru/forum/showt...&threadid=13398

ОШИБКА


--------------------

D:\Single-Player Source\cl_dll>set LIB=..\compiler

D:\Single-Player Source\cl_dll>set LIB=\GL

D:\Single-Player Source\cl_dll>..\compiler\cl.exe @cl_dll_compile.txt
crossbow.cpp
crowbar.cpp
egon.cpp
ev_hldm.cpp
gauss.cpp
handgrenade.cpp
hl_baseentity.cpp
hl_events.cpp
hl_objects.cpp
hl_weapons.cpp
hl_wpn_glock.cpp
hornetgun.cpp
interface.cpp
mp5.cpp
python.cpp
rpg.cpp
satchel.cpp
shotgun.cpp
squeakgrenade.cpp
tripmine.cpp
vgui_scrollbar2.cpp
vgui_slider2.cpp
voice_banmgr.cpp
voice_status.cpp
ammo.cpp
ammo_secondary.cpp
ammohistory.cpp
battery.cpp
cdll_int.cpp
com_weapons.cpp
death.cpp
demo.cpp
entity.cpp
ev_common.cpp
events.cpp
flashlight.cpp
GameStudioModelRenderer.cpp
gl/glext.h(2986) : fatal error C1083: Cannot open include file: 'stddef.h': No s
uch file or directory
geiger.cpp
health.cpp
hud.cpp
hud_msg.cpp
hud_redraw.cpp
hud_servers.cpp
hud_spectator.cpp
hud_update.cpp
in_camera.cpp
input.cpp
inputw32.cpp
menu.cpp
message.cpp
parsemsg.cpp
pm_debug.c
pm_math.c
pm_shared.c
saytext.cpp
status_icons.cpp
statusbar.cpp
studio_util.cpp
StudioModelRenderer.cpp
gl/glext.h(2986) : fatal error C1083: Cannot open include file: 'stddef.h': No s
uch file or directory
text_message.cpp
train.cpp
tri.cpp
gl/glext.h(2986) : fatal error C1083: Cannot open include file: 'stddef.h': No s
uch file or directory
util.cpp
vgui_checkbutton2.cpp
vgui_ClassMenu.cpp
vgui_ConsolePanel.cpp
vgui_ControlConfigPanel.cpp
vgui_CustomObjects.cpp
vgui_grid.cpp
vgui_helpers.cpp
vgui_int.cpp
vgui_listbox.cpp
vgui_loadtga.cpp
vgui_MOTDWindow.cpp
vgui_SchemeManager.cpp
vgui_ScorePanel.cpp
vgui_ServerBrowser.cpp
vgui_SpectatorPanel.cpp
vgui_TeamFortressViewport.cpp
vgui_teammenu.cpp
view.cpp
view.cpp(1717) : error C2143: syntax error : missing ';' before 'if'
view.cpp(1719) : error C2143: syntax error : missing ';' before '}'
view.cpp(1719) : error C2143: syntax error : missing ';' before '}'
view.cpp(1719) : error C2143: syntax error : missing ';' before '}'
view.cpp(1729) : error C2143: syntax error : missing ';' before '{'
view.cpp(1729) : error C2447: missing function header (old-style formal list?)
knife.cpp
ak74.cpp
fnh.cpp

D:\Single-Player Source\cl_dll>..\compiler\link.exe @cl_dll_link.txt
LINK : fatal error LNK1104: cannot open file "LIBCMT.lib"

D:\Single-Player Source\cl_dll>pause
Для продолжения нажмите любую клавишу . . .

--------------------

ГДЕ ВЗЯТЬ stddef.h ?
СКИНЬТЕ

Добавлено 21-02-2015 в 12:08:

НАРОД ПОЧЕМУ ТЕНИ НЕ РАБОТАЮТ В СЕТИ


Отправлено master07 21-02-2015 в 07:29:

***FantoM*** Для мультиплеера вообще лучше не делать эти тени. очень фпс жрут.
Компиль через визуалку и проблем не будет.


Отправлено master07 21-02-2015 в 12:25:

***FantoM*** Место фонарика указана по координатам "х" "у". Сам меняй и проверяй в игре.


Отправлено SteamPlay43 21-02-2015 в 14:42:

master07 У меня даже после компила без ошибок их в игре не было) Наверное во всём была виновата шестая студия)


Отправлено ***FantoM*** 21-02-2015 в 16:44:

Цитата:
master07 писал:
***FantoM*** Место фонарика указана по координатам "х" "у". Сам меняй и проверяй в игре.

по моему там на разных разрешениях будет криво смотреться
ну на прпимер если у меня разрешения экрана на ноуте 1366х768
то на обычном пк при разрешении 1920х1080 будет между серединой и краем
а есле разрешен7ие будет меньше то походу будет за разрешением экрана я не уверен


Цитата:
master07 писал:
Компиль через визуалку и проблем не будет.

через визуал не привычно както

ладно тени мне не нужны

Добавлено 21-02-2015 в 22:44:

народ у меня еще воПрос как сделать так
ну на пример я создай мдл зомби там есть модели и скины как сделать так чтобы когда я поставил энтиту монстер_зомби чтобы модели и скины были в разном порядке в игре


Отправлено ***FantoM*** 22-02-2015 в 07:49:

и еще как сделать такой еффект
или где найти тутор


Отправлено Ku2zoff 22-02-2015 в 08:23:

Цитата:
***FantoM*** писал:
ну на пример я создай мдл зомби там есть модели и скины как сделать так чтобы когда я поставил энтиту монстер_зомби чтобы модели и скины были в разном порядке в игре

В одну модель зашей несколько бодей и скинов. В функции CZombie::Spawn укажи pev->body = RANDOM_LONG(0,X) и pev->skin = RANDOM_LONG(0,X), где X - номер последнего скина или боди соответственно, если считать с 0 а не с 1.

Добавлено 22-02-2015 в 14:09:

Цитата:
***FantoM*** писал:
по моему там на разных разрешениях будет криво смотреться

Вот поэтому надо использовать не x = 10 и y = 10, а x = XRES(10) и y = YRES(10).

Добавлено 22-02-2015 в 14:13:

Цитата:
***FantoM*** писал:
ГДЕ ВЗЯТЬ stddef.h ?

Загуглить. Причём именно от 6-ой студии. И все инклуиды, которые этот файл за собой потянет - тоже. Либо поставить студию и не парить форумчанам мозг по поводу простых вещей. Времена диалапов, когда консольный компилятор БУзера был актуален, прошли.
Цитата:
***FantoM*** писал:
ладно тени мне не нужны

А зачем спрашивал тогда?
Цитата:
***FantoM*** писал:
и еще как сделать такой еффект
или где найти тутор

Он тебе тоже станет не нужен, когда ты его скомпилить не сможешь.

Добавлено 22-02-2015 в 14:14:

Цитата:
SteamPlay43 писал:
У меня даже после компила без ошибок их в игре не было)

Хакнутую OpenGL32.dll забыл положить в корень халфы?

Добавлено 22-02-2015 в 14:23:

***FantoM*** почитай туторы по кодингу на этом форуме, поищи на half-life.ru, http://articles.thewavelength.net/ и вообще на web.archive.org есть сохранённые странички с туторами десятилетней давности с planethalflife.com и других буржуйских сайтов. Очень интересно и полезно.


Отправлено KiQ 22-02-2015 в 09:03:

***FantoM*** зачем тебе воду в фольгу превращать?

__________________
-Brain is dead-


Отправлено ***FantoM*** 22-02-2015 в 09:46:

Цитата:
Ku2zoff писал:
Он тебе тоже станет не нужен, когда ты его скомпилить не сможешь.

почему я смог
но они в сети не работают
а у меня мод кооп

Добавлено 22-02-2015 в 15:46:

KiQ
а че нефигова смотрится


Отправлено FiEctro 22-02-2015 в 14:06:

***FantoM***
Отрисовать кубамапу или зеркало, а потом преломлять это изображение с помощью нормальки.


Отправлено ***FantoM*** 23-02-2015 в 02:57:

народ как сделать хромовую поверхность но не на моделах а на брашах или на пример текстура называния chrometextures как ее сделать хромовай


Отправлено KiQ 23-02-2015 в 07:18:

***FantoM*** посмотри в ксаше

__________________
-Brain is dead-


Отправлено ***FantoM*** 23-02-2015 в 23:04:

KiQ
а че в ксаше есть
сейчас посмотрю

Добавлено сегодня в 04:40:

народ по моему в ксаш нет
если ест то помогите найти
где искать ?

Добавлено 24-02-2015 в 05:04:

хочу сделать хром на func_water


Отправлено SteamPlay43 24-02-2015 в 11:09:

Ku2zoff Ложил, наверное потому что у меня в моде стандартные стен сильные тени уже стоят)

Добавлено 24-02-2015 в 17:09:

Ku2zoff А как отвязать opengl32.dll? А то не хочу чтобы меня потом за неё в кс 1.6 банили)


Отправлено XaeroX 24-02-2015 в 15:32:

Цитата:
SteamPlay43 писал:
стандартные стен сильные тени

Шта? Нет в халфе никаких "стандартных" стенсильных теней.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 24-02-2015 в 16:45:

Цитата:
SteamPlay43 писал:
А как отвязать opengl32.dll? А то не хочу чтобы меня потом за неё в кс 1.6 банили)

А она и не привязана никак. Без неё просто не заработают тени, а игра будет запускаться. Она нужна, ЕМНИП, ровно для одной цели: включения стенсил-буффера в халфе (по-умолчанию выключен). Если охота без лишних дллок заиметь тени, надо использовать технологию теневых карт, кажись в TrinityRenderers такая штука. Ну и в HLFX тоже


Отправлено XaeroX 24-02-2015 в 16:57:

Цитата:
Ku2zoff писал:
Ну и в HLFX тоже

В хлфх 0.5.
В хлфх 0.6 - тени как в хл2, проекционные.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 27-02-2015 в 10:41:

народ help
как сделать Шейдерню воду в халф-лайф
половино интернета пересмотрел не где нет
хотя один тутор быль на
http://detler.ucoz.ru/publ/shejdern...ast1/10-1-0-197
но второй части нет
ругается на cl_util.h и textures.h как поправить ?


Отправлено ~ X ~ 27-02-2015 в 12:43:

Ну зачем, ЗАЧЕМ Шедевры 2.0 в ХЛ 15-летней давности?

Прикручивать Шедевры(тм) - дело нетривиальное. С такими познаниями матчасти и подробными логами тебе не светит

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Cybermax 27-02-2015 в 13:47:

Цитата:
~ X ~ писал:
Ну зачем, ЗАЧЕМ Шедевры 2.0 в ХЛ 15-летней давности?


Поддерживаю! Лучше юзать более менее современный движок ну или на крайняк написать самому. https://developer.valvesoftware.com...gory:Modding:ru

__________________


Отправлено XaeroX 27-02-2015 в 13:49:

Цитата:
Cybermax писал:
Лучше юзать более мение современный движок

Проблема в том, что я его ещё не доделал. А то бы оно конечно да, все юзали.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 27-02-2015 в 14:02:

Цитата:
***FantoM*** писал:
Шейдерню воду в халф-лайф


я имей в виду в свой мод


Отправлено SteamPlay43 28-02-2015 в 06:29:

XaeroX Которые на r_shadows 1 включаются


Отправлено ***FantoM*** 11-03-2015 в 22:44:

ДОРОГИЕ форумчане
помогите пожалуйста как сделать анимированный спрайт


Отправлено ***FantoM*** 12-03-2015 в 12:27:

народ помогите как сделать анимированный спрайт в это туториале
http://hlfx.ru/forum/showthread.php...15&pagenumber=1


Отправлено PLut 12-03-2015 в 19:53:

***FantoM*** А зачем? Пульсирование проще альфой сделать.

__________________
Base Defense on Steam, ModDB


Отправлено ***FantoM*** 12-03-2015 в 20:23:

PLut
если честно то мне не этот эффект нужен
мне нужен зернистость на экране http://hlfx.ru/forum/showthread.php?s=&threadid=2321 но там чем больше значения SPR_Set(hspr, 50, 50, 50);
тем светлее вокруг
а мне надо чтоб без света
чтобы просто перед экраном

Добавлено 13-03-2015 в 02:23:

уже не надо


Отправлено SteamPlay43 13-03-2015 в 14:24:

***FantoM*** А 255 255 255 не пробовал? Тогда будет под цвет спрайта, как у прицелов в хл)

Добавлено 13-03-2015 в 20:24:

***FantoM*** И почему ты ничего не доводишь до конца? Сначала бы поэкперементировал, а потом уже на форум писал.


Отправлено ***FantoM*** 13-03-2015 в 15:36:

Цитата:
SteamPlay43 писал:
***FantoM*** А 255 255 255 не пробовал? Тогда будет под цвет спрайта, как у прицелов в хл)

тогда ничего кроме спрайта видно не будет

Цитата:
SteamPlay43 писал:
***FantoM*** И почему ты ничего не доводишь до конца? Сначала бы поэкперементировал, а потом уже на форум писал.

почему ?
я поэкперементировал и все получилось
могу скриншот скинуть


Отправлено SteamPlay43 13-03-2015 в 18:15:

***FantoM*** Почему тогда пишешь, что уже не надо? И ты просил чтобы света не было, только спрайты, а теперь ещё возмущаешся...

Добавлено 14-03-2015 в 00:15:

***FantoM*** А для прозрачности спрайтов есть волшебный SPR_DrawAdditive


Отправлено ***FantoM*** 13-03-2015 в 18:22:

Цитата:
SteamPlay43 писал:
***FantoM*** Почему тогда пишешь, что уже не надо?

потому что у меня уже все сделано


Отправлено SteamPlay43 13-03-2015 в 18:24:

***FantoM*** Сразу бы так, а то зря людям голову морочишь.


Отправлено ***FantoM*** 14-03-2015 в 14:46:

XaeroX помоги как ты сделай font спрайтами

Добавлено 14-03-2015 в 20:46:

и почему эту строчку закомментировали
// m_hsprFont = LoadSprite("sprites/%d_font.spr");


Отправлено Ku2zoff 14-03-2015 в 19:11:

Цитата:
***FantoM*** писал:
помоги как ты сделай font спрайтами

Это кажется есть в SoHL: Custom Build (или в старом ксашмоде). Я в какой-то версии видел код и даже сам использовал, но потом отказался. Потому что спрайтовый шрифт моноширинный, и без некоторых поправок мы будем иметь некрасивые пробелы между буквами в словах. А править самому мне было лень. Вообще, есть неплохие проги для редактирования True Type шрифтов, а стим-халфа поддерживает загрузку кастомных шрифтов из папки мода.


Отправлено ***FantoM*** 14-03-2015 в 19:19:

Ku2zoff
а в какой версии не помнишь?


Отправлено XaeroX 14-03-2015 в 19:47:

Цитата:
Ku2zoff писал:
Потому что спрайтовый шрифт моноширинный, и без некоторых поправок мы будем иметь некрасивые пробелы между буквами в словах.

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

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 14-03-2015 в 19:54:

***FantoM*** неа. Если спирит, то 1.7 и новее. Если ксаш, то сейчас наверное официальную ссылку на скачивание не найдёшь. Щас гляну, может у меня что-то осталось.
Так, у меня ничего нету. Но ты погугли. В моде для включения шрифта используется квар hud_altfont 1. В каком моде такой найдёшь, тот тебе и нужен.


Отправлено KiQ 14-03-2015 в 22:42:

Из ttf же качественнее выглядит, и сделать несложно

__________________
-Brain is dead-


Отправлено SteamPlay43 15-03-2015 в 08:25:

KiQ Как в хл2?


Отправлено XaeroX 15-03-2015 в 09:01:

KiQ
Если бы это было несложно - наверное уже везде было бы, и в хлфх, и в ксаше?
В том-то и дело, что сложно. Как минимум, левую либу подключать надо.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено SteamPlay43 15-03-2015 в 13:23:

XaeroX В hl2 beta это уже было, перенести никак?


Отправлено XaeroX 15-03-2015 в 14:06:

SteamPlay43
Перенеси, а мы дружно оценим.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 15-03-2015 в 21:05:


народ а можно ли запустить opengl32.dll не из папки игры а из папки мода на пример Half-Life\папка_мода\opengl32\opengl32.dll


Отправлено Ku2zoff 16-03-2015 в 04:37:

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


Отправлено ***FantoM*** 16-03-2015 в 07:46:

Ku2zoff
понятно


Отправлено SteamPlay43 16-03-2015 в 18:38:

Ku2zoff Вроде на форумах аранжевогосмента про это писали) Он у них так и работает


Отправлено ***FantoM*** 18-03-2015 в 00:34:

народ у меня ошибка в туториале Создаем реалистичный фонарик от от дяде мише
http://hlfx.ru/forum/showthread.php...15&pagenumber=3
Compiling...
entity.cpp
D:\Single-Player Source\cl_dll\entity.cpp(177) : error C2143: syntax error : missing ';' before 'if'
D:\Single-Player Source\cl_dll\entity.cpp(178) : error C2143: syntax error : missing ';' before '{'
D:\Single-Player Source\cl_dll\entity.cpp(178) : error C2447: missing function header (old-style formal list?)
D:\Single-Player Source\cl_dll\entity.cpp(185) : error C2143: syntax error : missing ';' before 'if'
D:\Single-Player Source\cl_dll\entity.cpp(186) : error C2143: syntax error : missing ';' before '{'
D:\Single-Player Source\cl_dll\entity.cpp(186) : error C2447: missing function header (old-style formal list?)
Error executing cl.exe.

знаю что она обозначает

вот часть кода

if (viewent->model && !stricmp(viewent->model->name, "models/v_flash.mdl")) --177
{ --178
if (dst->effects & EF_FLASHLIGHT)
viewent->curstate.skin = 1;
else viewent->curstate.skin = 0;
}

// g-cont: process flashlight here
if (dst->effects & EF_FLASHLIGHT && dst->number == player->index && viewent->model) --185
{ --186
// setup custom flashlight for local client only
dlight_t *dl = gEngfuncs.pEfxAPI->CL_AllocDlight (player->index);
studiohdr_t *phdr = (studiohdr_t *)IEngineStudio.Mod_Extradata (viewent->model);
mstudioattachment_t *pattachment = (mstudioattachment_t *)((byte *)phdr + phdr->attachmentindex);

Добавлено 17-03-2095 в 11:29:

HELP

Добавлено 17-03-2095 в 05:45:

еще раз help

Добавлено 18-03-2095 в 06:34:

не буду делать этот реалистичный фонарик


Отправлено Superuser8 18-03-2015 в 15:28:

***FantoM*** молодец, всё правильно сделал)


Отправлено Ghoul [BB] 18-03-2015 в 17:51:

Цитата:
***FantoM*** писал:
не буду делать этот реалистичный фонарик


Замечательно!
Как много, оказывается, всего лишнего и ненужного можно избежать при внесении в свой мод

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ***FantoM*** 18-03-2015 в 20:05:

Цитата:
Superuser8 писал:
***FantoM*** молодец, всё правильно сделал)

я как бы сделал
но у меня фонарик не туда светит
по этому не буду делать
этот фонарик в Paranoia красивее будет смотреться


Отправлено Superuser8 18-03-2015 в 20:25:

***FantoM*** на паранойе мне кажется не заработает.
P.S Вот на кой чъорт нужно пихать всё подряд?


Отправлено ***FantoM*** 18-03-2015 в 21:37:

Superuser8
почему ?
у меня на паранойе работает

Добавлено 19-03-2015 в 03:37:

товарищи у меня вопрос
короче так
когда гильзы падают на землю они исчезают через несколько секунд
как увеличить это время ???


Отправлено Ku2zoff 19-03-2015 в 06:43:

Цитата:
***FantoM*** писал:
у меня на паранойе работает

Цитата:
***FantoM*** писал:
но у меня фонарик не туда светит

Да потому что в паранойе фонарик сделан кастомным динлайтом. Соответственно, тутор, основанный на обычном динлайте надо подкорректировать, а не тупо копипастить. Если подумать головой, можно вообще приаттачить динлайт к вьюмодели как делал Shapirlic в своём моде. На рендерере паранойи будет очень недурно выглядеть. Но только в сингле. Для мульта там вообще много чего дописывать надо.


Отправлено ***FantoM*** 19-03-2015 в 08:05:

Ku2zoff
1 этот фонарик криво смотрится в SDK и в паранойе
2 я не тупо копипаститу
3 для мульта в паранойе надо много чего дописывать и без этова фонарика
4 я уже понял почему фонарик не туда светил там надо было немного модель через MilkShape 3D поправить

Добавлено 19-03-2015 в 14:05:

товарищи у меня еще вопрос
когда гильзы,разбитые ящики,стекла и тп. падают на землю они исчезают через несколько секунд
как увеличить это время ?


Отправлено Ghoul [BB] 19-03-2015 в 13:25:

Всё просто.
Если делаешь эффект на сервере, то смотри в настройках TE_BREAKMODEL,если на клиенте, то, соответственно, лезь в соответствующие настройки EjectBrass ---> TempModel

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено JPEG 19-03-2015 в 14:34:

Цитата:
***FantoM*** писал:
товарищи у меня еще вопрос
когда гильзы,разбитые ящики,стекла и тп. падают на землю они исчезают через несколько секунд
как увеличить это время ?

в cl_dll\ev_common.cpp

строка gEngfuncs.pEfxAPI->R_TempModel( origin, velocity, endpos, 2.5, model, soundtype ); - 2.5 - время в секундах, меняй на любое другое число

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 19-03-2015 в 15:22:

Yo Den
спасибо помог
еще вопрос
как уменьшить скорость игрока

Добавлено 19-03-2015 в 21:21:

где посмотреть ?

Добавлено 19-03-2015 в 21:22:

в player.cpp ?


Отправлено JPEG 19-03-2015 в 16:28:

Цитата:
***FantoM*** писал:

cl_forwardspeed - скорость движения вперёд, cl_backspeed - назад, cl_sidespeed - сбока (стрэйф). Можно менять через конфиги (как в консоле), либо в коде (клиент cl_dll)

Добавлено 19-03-2015 в 19:28:

input.cpp "cl_forwardspeed = gEngfuncs.pfnRegisterVariable ( "cl_forwardspeed", "400", FCVAR_ARCHIVE );" вот здесь, например число 400

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ghoul [BB] 19-03-2015 в 16:39:

еще настройки скорости игрока есть в pmmove, что в папке pmshared

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ***FantoM*** 22-03-2015 в 05:36:

народ помогите
я хотел сделать зажигалку как в invasion

и у меня у меня проблема
не могу прикрепить спрайт огня к зажигалке


Отправлено KiQ 22-03-2015 в 10:49:

***FantoM*** посмотри как muzzleflash сделаны

__________________
-Brain is dead-


Отправлено ***FantoM*** 22-03-2015 в 17:52:

и так значит
я посмотрел как muzzleflash сделаны
теперь у меня на зажигалке но теперь
как поменять спрайты в muzzleflash на огонек
искай по слову muzzleflash.spr но ничего не найдено


Отправлено Ku2zoff 22-03-2015 в 18:19:

Цитата:
***FantoM*** писал:
не могу прикрепить спрайт огня к зажигалке

Цитата:
KiQ писал:
посмотри как muzzleflash сделаны

Маззлфлеши трогать не надо. Надо написать свой код рисования огонька. В СтудиоМодельРендерере аттачить спрайт к модели, а в эвентах из ev_hldm.cpp включать/отключать его видимость. Тогда не надо будет делать несколько разных анимаций. Можно ататчить спрайт в entity.cpp, там же где и маззлфлеши.
Приаттачить спрайтик и заставить его рисоваться это довольно просто. А вот заставить работать освещение... Хотя, ХЗ, я не пробовал делать зажигалку, хотя всегда мечтал о такой штуке в моде. Инвазион очень этим раздразнил.
***FantoM*** если хочешь, я попробую написать тутор по этой зажигалке. Аж самому захотелось, как скрин увидел - ностальгия
З.Ы. только временных сроков никаких не обещаю.


Отправлено XaeroX 22-03-2015 в 18:20:

Ku2zoff
Лучше напиши тутор по инфракрасному зрению из того же инвазиона.
Только чур без читов в виде команд OpenGL, там оно и под D3D работает.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено KiQ 22-03-2015 в 18:26:

***FantoM*** да я же принцип имел в виду

__________________
-Brain is dead-


Отправлено ***FantoM*** 22-03-2015 в 18:27:

Ku2zoff

Цитата:
Ku2zoff писал:
А вот заставить работать освещение...

освещение легко


// "vecSrc" это координаты вспышки...
MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, vecSrc );
WRITE_BYTE( TE_DLIGHT );

WRITE_COORD( vecSrc.x ); // Позиция...
WRITE_COORD( vecSrc.y );
WRITE_COORD( vecSrc.z );
WRITE_BYTE( 30 ); // Радиус (300 унитов).

WRITE_BYTE( 128 ); // Оттенок красного
WRITE_BYTE( 128 ); // Оттенок зеленого
WRITE_BYTE( 0 ); // Оттенок синего

WRITE_BYTE( 2 ); // Продолжительность вспышки
WRITE_BYTE( 10 ); // Кол-во кадров
MESSAGE_END();


вставлять в PrimaryAttack


Отправлено Ku2zoff 22-03-2015 в 18:31:

Цитата:
***FantoM*** писал:
WRITE_BYTE( TE_DLIGHT )

Да не. Это не то. В инвазионе что-то наподобие статического лайта с лайтстилем. И свет излучает энтитя игрока вроде бы. Надо будет над этим подумать.


Отправлено ***FantoM*** 24-03-2015 в 01:25:

народ помогите
как сделать так чтоб при вторичной атаке
чтобы перед экраном тупо модель прицела была



Отправлено Ku2zoff 24-03-2015 в 09:10:

Цитата:
XaeroX писал:
Лучше напиши тутор по инфракрасному зрению

А вот эта фигня мне никогда не нравилась, и нигде я её юзать не хочу. Хотя, кажется, есть идея, где применить. Если сильно захочется, попробую. Пока что в приоритете зажигалка.

Добавлено 24-03-2015 в 15:10:

***FantoM*** с прицелом есть два варианта решения. Одно сложное, другое простое. Сложное, это где надо новые анимации оружию делать и смену этих анимаций учитывать. Как в паранойе. А простое - как в файр армс, менять вьюмодель на модель прицела. Это можно в коде сатчела подглядеть.


Отправлено ***FantoM*** 24-03-2015 в 13:58:

Ku2zoff
а ну ка давай второй способ подробнее


Отправлено Ku2zoff 24-03-2015 в 18:22:

Цитата:
***FantoM*** писал:
а ну ка давай второй способ подробнее

Цитата:
Ku2zoff писал:
Это можно в коде сатчела подглядеть.

Посмотри, как там меняются вьюмодели с взрывпакета на пульт и обратно. Вот и сделай у себя так же, меняй пушку на прицел и обратно. При смене можно сделать скринфейд на полсекунды, чтобы не было заметно. И модели прицелов можешь из FireArms стащить. Или сам намоделить. У тебя ситуация проще, чем с сатчелом, никаких дополнительных переменных не надо заводить.


Отправлено ***FantoM*** 25-03-2015 в 03:06:

Ku2zoff
помоги у меня проблема в прицеле
то есть я не могу отключить его
короче вот тебе видео
https://www.youtube.com/watch?v=1I1...eature=youtu.be


Отправлено Ku2zoff 25-03-2015 в 03:31:

Код SecondaryAttack в студию.


Отправлено ***FantoM*** 25-03-2015 в 03:45:

void CCrossbow::SecondaryAttack()
{
if ( m_pPlayer->pev->fov != 0 )
{
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 0; // 0 means reset to default fov
m_fInZoom = 0;
}
else if ( m_pPlayer->pev->fov != 20 )
{
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 20;
m_fInZoom = 1;
}

if ( m_chargeReady != 2 ) //new
{
Throw( );
}

pev->nextthink = UTIL_WeaponTimeBase() + 0.1;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0;
}


Отправлено Ku2zoff 25-03-2015 в 04:08:

***FantoM*** вот фигни наворотил, и удивляешься, почему глючит.

C++ Source Code:
1
void CCrossbow::SecondaryAttack()
2
{
3
  if (m_pPlayer->pev->fov != 0)
4
  {
5
    m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 0;
6
    DefaultDeploy("models/v_crossbow.mdl", "models/p_crossbow.mdl", CROSSBOW_IDLE, "crossbow");
7
    m_fInZoom = 0;
8
  }
9
  else if (m_pPlayer->pev->fov != 20)
10
  {
11
    m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 20;
12
    DefaultDeploy("v_scope.mdl", "p_crossbow.mdl", CROSSBOW_IDLE, "crossbow");
13
    m_fInZoom = 1;
14
  }
15
  pev->nextthink = UTIL_WeaponTimeBase() + 0.1;
16
  m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0;
17
}

Вроде всё. Набросал по памяти, с планшета. Ни исходников, ни компа рядом нет.


Отправлено ***FantoM*** 25-03-2015 в 04:22:

Ku2zoff
всё работает


Отправлено Ku2zoff 25-03-2015 в 04:27:

***FantoM*** задержки перед выстрелом не слишком большие при переключении? При убирании оружия прицел выключается? Видео залей, мне интересно. Был бы дома, скомпилил бы сам и проверил.


Отправлено ***FantoM*** 25-03-2015 в 04:40:

Ku2zoff
вот https://www.youtube.com/watch?v=rKH...eature=youtu.be


Отправлено ***FantoM*** 25-03-2015 в 11:13:

у меня еще один вопрос
как правильно вызывать серверные функций с клиента
приведите примеры


Отправлено Ku2zoff 25-03-2015 в 12:59:

Цитата:
***FantoM*** писал:
вызывать серверные функций с клиента

Правильно - никак. Но можно отправлять с клиента команду на сервер, типа:
C++ Source Code:
gEngfuncs.pfnClientCmd( "mycommand\n" );
или
gEngfuncs.pfnServerCmd( "mycommand\n" );

Клиентская и серверная соответственно. Не знаю, в чём разница, не проверял.
Ну а на сервере эту команду обрабатывать в client.cpp, в функции ClientCommand, типа:
C++ Source Code:
else if ( FStrEq( pcmd, "mycommand" ) )
{
  ClientPrint( pev, HUD_PRINTCONSOLE, "Received a client command.\n" );
}

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


Отправлено ***FantoM*** 25-03-2015 в 13:14:

Цитата:
Ku2zoff писал:
Что тебе надо сделать? Может быть можно и без извращений обойтись?

мне надо стекла как в The Specialists 3.0
http://hlfx.ru/forum/attachment.php?s=&postid=142197


Отправлено Ku2zoff 25-03-2015 в 14:10:

Тут не надо ничего серверного вызывать с клиента. Наоборот надо сделать отправку мессаги или эвента на клиент при разбивании брейкабли, при условии, что материал == matGlass. При создании карты указывать в качестве модели гибсов такой брейкабле невидимую модель, например null.mdl. Ну а сам эффект кодить на клиенте. При написании клиентской части я бы ориентировался на код "разбрызгивания" искр гаусса, там как раз спрайты-темпэнтити заюзаны. А вообще, стоит покопаться в структуре pEfxAPI, там много полезных эффектов есть, которые в халфе не заюзаны, или заюзаны не на 100%.


Отправлено ***FantoM*** 27-03-2015 в 02:51:

Цитата:
Ku2zoff писал:
надо сделать отправку мессаги или эвента на клиент

если через event то у меня какая то фигня происходит

Добавлено 27-03-2015 в 08:51:

у меня вопрос
как убрать шатания экрана при стрельбы из mp5 или хотябы уменьшить


Отправлено ***FantoM*** 27-03-2015 в 11:38:

help


Отправлено Superuser8 27-03-2015 в 11:42:

***FantoM*** на клиенте в void EV_FireMP5( event_args_t *args ) ищи строчку V_PunchAxis( 0, gEngfuncs.pfnRandomFloat( -2, 2 ) );
Вот она и шатает экран, закомментируй её и будет тебе щастье


Отправлено ***FantoM*** 31-03-2015 в 04:46:

люди помогите
я хочу немного уменьшить спрайт крови
в util.cpp
я меняю
WRITE_BYTE( min( max( 3, amount / 10 ), 16 ) ); // size
в
void UTIL_BloodDrips( const Vector &origin, const Vector &direction, int color, int amount )

на
WRITE_BYTE( min( max( 1, amount / 1 ), 1 ) ); // size

все работает но почему я не могу еще уменьшить например на 0.5


Отправлено ComradeAndrew 31-03-2015 в 12:08:

***FantoM***
Там int
#define WRITE_BYTE (*g_engfuncs.pfnWriteByte)
void (*pfnWriteByte) (int iValue);


Отправлено ***FantoM*** 31-03-2015 в 12:17:

ComradeAndrew
понятно


Отправлено ***FantoM*** 01-04-2015 в 13:27:

помогите сделать кастомные декали
хотел немного изменить этот http://hlfx.ru/forum/showthread.php?s=&threadid=3454 туториа
сделать его к себе мод но как видно я не оч в кодинге
что мне там надо сделать


Отправлено ***FantoM*** 02-04-2015 в 05:34:

короч так я начал переносить декали из паранои
и вдруг у меня ошибка
что эта ошибка от меня хочет ?

C++ Source Code:
1
Compiling...
2
effects.cpp
3
D:\Single-Player Source\dlls\effects.cpp(2504) : error C2027: use of undefined type 'CBasePlayer'
4
D:\Single-Player Source\dlls\util.h(300) : see declaration of 'CBasePlayer'
5
D:\Single-Player Source\dlls\effects.cpp(2504) : error C2227: left of '->pev' must point to class/struct/union
6
Error executing cl.exe.


Отправлено KiQ 02-04-2015 в 08:37:

***FantoM*** вот попробуй сам разобраться, правда. Ну это же банальная ошибка

__________________
-Brain is dead-


Отправлено XaeroX 02-04-2015 в 08:53:

***FantoM***
По какой книге ты изучаешь С++?
Уже довольно много времени прошло, пора бы продемонстрировать народу какие-то результаты.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 02-04-2015 в 12:16:

Цитата:
XaeroX писал:
По какой книге ты изучаешь С++?

по книге
Л.Аммерааль - STL для программистов на C++
и по сайт4у
http://the-programmer.ru/publ/c/obuchenie_c/9-5

Добавлено 02-04-2015 в 18:14:

Цитата:
KiQ писал:
вот попробуй сам разобраться, правда. Ну это же банальная ошибка


ошибка исправлена

Добавлено 02-04-2015 в 18:16:

но декали не отображаются

сейчас посмотрю что там не так


Отправлено XaeroX 02-04-2015 в 13:04:

***FantoM***
Не забивай себе голову STL, в халфе его нет.
И пожалуйста, не задавай на форуме вопросы, ответы на которые становятся тебе самому очевидными через пару часов. Здесь форум по HLSDK, а не по основам С++.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено KiQ 02-04-2015 в 18:22:

XaeroX ну, может только слегка http://hlfx.ru/forum/showthread.php?s=&threadid=3531

__________________
-Brain is dead-


Отправлено XaeroX 02-04-2015 в 20:21:

KiQ
Так Дядя Миша нас давно покинул.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 03-04-2015 в 15:52:

люди помогите
что за фигня с Visual Studio6
при запуска проекта выскакивает windows ошибка

Имя события проблемы: APPCRASH
Имя приложения: msdev.exe
Версия приложения: 6.0.8168.0
Отметка времени приложения: 35889584
Имя модуля с ошибкой: devprj.pkg
Версия модуля с ошибкой: 6.0.8168.0
Отметка времени модуля с ошибкой: 3588a346
Код исключения: c0000005
Смещение исключения: 00002e49
Версия ОС: 6.1.7601.2.1.0.768.3
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789

и так вопрос
как исправить ? че она обозначает ? и че она от меня хочет ?


Отправлено XaeroX 03-04-2015 в 15:59:

Цитата:
***FantoM*** писал:
и че она от меня хочет ?

Чтобы ты учебники читал.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 03-04-2015 в 16:43:

XaeroX
да это понятно но как исправить


Отправлено FiEctro 03-04-2015 в 16:57:

***FantoM***
какая венда? попробуй в режиме совместимости запустить


Отправлено ***FantoM*** 03-04-2015 в 17:03:

Цитата:
FiEctro писал:
какая венда?

win 7
Цитата:
FiEctro писал:

попробуй в режиме совместимости запустить

не помогает


Отправлено Ku2zoff 03-04-2015 в 17:44:

Цитата:
***FantoM*** писал:
что за фигня с Visual Studio6
при запуска проекта выскакивает windows ошибка

Цитата:
***FantoM*** писал:
win 7

Ну как вы умудряетесь-то, чесслово. У меня и на 8.1 нормально работала.

***FantoM*** что значит "при запуска проекта"?
1. Когда открываешь проект или когда запускаешь сборку?
2. При запуске пустой IDE тоже вылетает?
3. Проект какой? Дефолтные из хлсдк 2.3 за 2002 год должны норм открываться.
4. Студию как ставил? Инсталлятором или просто тупо скопировал?
5. Где взял студию? Я рекомендую торрентом качать, Professional или Enterprise, там даже лекарство не нужно.

Если уж никак не победишь эту фигню, качай Visual Studio 2010 и переходи на обновлённый СДК, что есть на гитхабе. Ну или скачай версию для 2005 студии по ссылке на форуме.


Отправлено ***FantoM*** 03-04-2015 в 18:16:

Цитата:
Ku2zoff писал:
1. Когда открываешь проект или когда запускаешь сборку?

запускаю .dsp

Цитата:
Ku2zoff писал:
2. При запуске пустой IDE тоже вылетает?

что такое IDE ?

Цитата:
Ku2zoff писал:
3. Проект какой? Дефолтные из хлсдк 2.3 за 2002 год должны норм открываться.

именно из хлсдк 2.3 за 2002

Цитата:
Ku2zoff писал:
4. Студию как ставил? Инсталлятором или просто тупо скопировал?

через инсталлятор конечно

Цитата:
Ku2zoff писал:
5. Где взял студию? Я рекомендую торрентом качать, Professional или Enterprise, там даже лекарство не нужно.

не помню где

и еще эта ошибка в hlmv когда на когда на крестик жму
и в некоторых играх


Отправлено FiEctro 03-04-2015 в 18:48:

***FantoM***
Я думаю тебе придётся качать 2010 студию и СДК под неё. У шестерки действительно есть проблемы с совместимостью, порой непредсказуемые.


Отправлено XaeroX 03-04-2015 в 18:49:

Цитата:
***FantoM*** писал:
и еще эта ошибка в hlmv когда на когда на крестик жму
и в некоторых играх

Поставь WinXP, и проблем не будет.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ComradeAndrew 03-04-2015 в 19:00:

Или поставь vs 10, как тебе посоветовали выше, с обновленным sdk.
Не пытайся искать совместимость там, где её нет. Используй заведомо проверенные варианты разработки.


Отправлено XaeroX 03-04-2015 в 19:26:

Цитата:
ComradeAndrew писал:
Или поставь vs 10, как тебе посоветовали выше, с обновленным sdk.

Но это не решит проблему с hlmv.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ComradeAndrew 03-04-2015 в 19:37:

XaeroX
Да, не решит. Но я думаю есть решения этой проблемы проще чем переустановка OS.


Отправлено XaeroX 03-04-2015 в 19:40:

ComradeAndrew
Вроде нету.
Я просто смирился, например.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 03-04-2015 в 20:14:

Цитата:
ComradeAndrew писал:
Но я думаю есть решения этой проблемы проще чем переустановка OS.

Совместимость с Windows 98 / Windows Me.
Цитата:
***FantoM*** писал:
что такое IDE ?

Среда разработки. То, что ты запускаешь с ярлыка. devenv.exe короче.


Отправлено XaeroX 03-04-2015 в 20:17:

Цитата:
Ku2zoff писал:
Совместимость с Windows 98 / Windows Me.

Тогда постоянно выскакивает окошко разрешения. Ещё больше раздражает.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 04-04-2015 в 02:33:

Цитата:
XaeroX писал:
Тогда постоянно выскакивает окошко разрешения. Ещё больше раздражает.

Странно, видимо поведение сильно варьируется в зависимости от набора драйверов.


Отправлено ***FantoM*** 04-04-2015 в 04:41:

Цитата:
Ku2zoff писал:
2. При запуске пустой IDE тоже вылетает?


нет не вылетает


Отправлено Ku2zoff 04-04-2015 в 09:04:

***FantoM*** а асли открывать проект в уже запущенной ide, тоже вылетает?


Отправлено ***FantoM*** 04-04-2015 в 13:22:

Ku2zoff
да вылетает


Отправлено KiQ 04-04-2015 в 16:01:

***FantoM*** сервиспак стоит?

__________________
-Brain is dead-


Отправлено ***FantoM*** 04-04-2015 в 16:46:

KiQ
а что эта ?


Отправлено Ku2zoff 04-04-2015 в 17:42:

KiQ вот кстати да. Я всегда ставил только на SP1 (и то только для проверки, потому что пользовался до перехода на Windows 8 .NET 2003 студией).

Добавлено 04-04-2015 в 23:04:

***FantoM*** ну ТОООООЛСТО
Ты дурачок или прикидываешься? Service Pack 1 для Windows 7.

Ещё один настолько тупой вопрос, и вместо тутора по зажигалке получишь только видео с демонстрацией. Я зажигалку почти дописал уже, между прочим. Только с темпэнтитей огонька ещё не закончил. Временно рисую огонь через TriAPI, но ущербно выглядит, да и в софтваре не заработает.

Добавлено 04-04-2015 в 23:42:

По зажигалке:
1. Логика работы оружия доделана на 90% (пока ещё не гаснет под водой и не расходует газ, хотя газ - это лично моя хотелка).
2. Огонёк горит всегда (пока не делал его активации/деактивации, поскольку буду делать его темпэнтитей как лучи эгона, а не тем быдлоспособом, что сейчас).
3. Не освещает (это сделать оказалось легче, чем огонёк, поэтому временное решение, при котором мессага с динлайтом отправляется каждый кадр, я закомментировал).
4. Не возился с сейв/рестором. Уверен, что после загрузки сейва огонёк гореть не будет.
Видео:


Отправлено XaeroX 04-04-2015 в 19:28:

Цитата:
Ku2zoff писал:
не расходует газ, хотя газ - это лично моя хотелка

Расходуемый газ в зажигалке - довольно бесполезная идея, имхо. Примерно, как батарейки для фонарика. Фонарик должен быть всегда под рукой. Максимум - восполняемый заряд, который ооочень долго тратится (как в халфе, где надо пол-уровня бегать с ним, чтобы он разрядился).

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено JPEG 04-04-2015 в 21:02:

Цитата:
Ku2zoff писал:

а зачем эта зажигалка, если её нельзя использовать одновременно с оружием?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 04-04-2015 в 21:32:

Yo Den
Ну ты в invasion играл?
Или хотя бы в doom3?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Cybermax 04-04-2015 в 21:42:

Цитата:
Ku2zoff писал:
Ещё один настолько тупой вопрос, и вместо тутора по зажигалке получишь только видео с демонстрацией.


Поделись туториалом со всеми пожалуста. И можно продублиоровать на хл.ру

__________________


Отправлено XaeroX 04-04-2015 в 21:47:

Пусть начнёт с видео.
Я, помнится, выложил видео вировок и продвинутого мовевитча из хлфх 0.7, мне накидали дислайков, ну я сделал выводы, что народ прекрасно без этого обойдётся.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Cybermax 04-04-2015 в 21:52:

Цитата:
Yo Den писал:
а зачем эта зажигалка, если её нельзя использовать одновременно с оружием?

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

Добавлено 05-04-2015 в 00:52:

Цитата:
XaeroX писал:
Пусть начнёт с видео.
Я, помнится, выложил видео вировок и продвинутого мовевитча из хлфх 0.7, мне накидали дислайков, ну я сделал выводы, что народ прекрасно без этого обойдётся.

Логично конечно, но за что дизлайки то? Завистники или им действительно не понравилось?

__________________


Отправлено XaeroX 05-04-2015 в 01:18:

Цитата:
Cybermax писал:
Завистники или им действительно не понравилось?

Да мне без разницы. Накидали дислайков - остались без мода. Мне же проще.
Если я действительно очень захочу чем-то с народом поделиться - дислайки меня не остановят.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 05-04-2015 в 18:30:

По зажигалке:
Теперь огонёк сделан православно, тэмпентитей. То, что он отстаёт на видео, это из-за редких обновлений ориджина. Скоро доделаю как следует, отставать не будет.
Видео:


Отправлено ***FantoM*** 05-04-2015 в 18:48:

Ku2zoff
отлично смотрится

Добавлено 06-04-2015 в 00:48:

и кстати мне интересно че за карта
что та знакомая


Отправлено XaeroX 05-04-2015 в 18:57:

Ku2zoff
Православно - привязывать спрайт к модели через аттачмент.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Cybermax 05-04-2015 в 18:58:

Лойс за проделанную работу. Действительно необычно и интересно.

__________________


Отправлено Ku2zoff 05-04-2015 в 19:21:

Карта de_torabora

Добавлено 06-04-2015 в 01:21:

Цитата:
XaeroX писал:
Православно - привязывать спрайт к модели через аттачмент.

Ну дык я темпэнтитю и привязал через аттачмент. Или что лучше, через триапи рисовать? МАсштабироваться в софтваре же не будет.


Отправлено XaeroX 05-04-2015 в 19:27:

Если привязал к аттачу - чего ж она тогда отстаёт?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 05-04-2015 в 19:47:

Цитата:
XaeroX писал:
Если привязал к аттачу - чего ж она тогда отстаёт?

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

Добавлено 06-04-2015 в 01:47:

А может быть дело в самом коде обновления тэмпэнтить? Или в том, что я рисую её как элемент ХУДа? Завтра напишу отдельный класс (без наследования CHudBase), и попробую вызывать обновление из разных мест.


Отправлено Ku2zoff 06-04-2015 в 04:38:

Темпэнтитя отстаёт от аттачмента. При рисовании через триапи отставания нет. Как ещё можно нарисовать спрайт в 3д средствами клиентской дллки или движка? Больше ничего на ум не приходит. Может создать простую клиентскую энтитю?

Добавлено 06-04-2015 в 10:38:

Софтвар у меня вообще почему-то не работает, не могу протестировать.


Отправлено ***FantoM*** 06-04-2015 в 05:51:

Ku2zoff
а разве в софтваре кто то играет ?


Отправлено XaeroX 06-04-2015 в 10:45:

***FantoM***
Поддержка софтвара - вопрос чести.
Не все поймут, немногие оценят.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 06-04-2015 в 16:05:

Тада! Отрисовка через триапи с небольшой примесью говнокода для координат спрайта и света. Свет пока что клиентский.


Отправлено KiQ 06-04-2015 в 16:11:

Ku2zoff нехилый свет такой

__________________
-Brain is dead-


Отправлено Ku2zoff 06-04-2015 в 16:25:

А теперь о грустном: не работает в софтваре, потому что триапи. ЧСХ, в Инвазионе во всех режимах пашет, значит не триапи. Что они там намудрили ХЗ, но у меня темпэнтитя R_TempSprite обновляет ориджин с опозданием. Наверное попробую нарисовать луч, как у эгона, ведь его лучи не отстают от взгляда игрока.


Отправлено XaeroX 06-04-2015 в 17:35:

Ku2zoff
В софтваре работает триапи в 3д.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 06-04-2015 в 18:59:

XaeroX проверил, работает.

Добавлено 07-04-2015 в 00:40:

UPD: доделал, работает норм в софтваре.

Добавлено 07-04-2015 в 00:59:

Доделаю искорки для анимации, когда не зажигается, и сделаю серверный свет для всех игроков в мульте. Может быть сделаю спрайт от третьего лица. Ну а потом причешу всё это и выложу в виде тутора.


Отправлено JPEG 06-04-2015 в 19:01:

Цитата:
XaeroX писал:
Тогда постоянно выскакивает окошко разрешения. Ещё больше раздражает.

что за окошко разрешения? У меня jed mdl viewer с совместимостью Windows 98 / Windows Me работает без нареканий, кроме того, что перестает работать функция импорта/экс текстур и сейв модел, но я клонировал для этой цели exe'шник уже без совместимости и использую оба по ситуации

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 06-04-2015 в 19:02:

Цитата:
Ku2zoff писал:
И масштабирование в софтваре всё равно не пашет.

Всё там пашет.
Я декали на моделях делал, которые работали в софтваре!

Добавлено 07-04-2015 в 01:02:

Цитата:
Yo Den писал:
что за окошко разрешения?

UAC.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 06-04-2015 в 19:03:

Цитата:
XaeroX писал:
Всё там пашет.

Извиняюсь, пашет. Это я накосячил Видео не могу приложить, фрапс чёрный экран пишет.


Отправлено XaeroX 06-04-2015 в 19:08:

Цитата:
Ku2zoff писал:
сделаю серверный свет для всех игроков в мульте

Зачем серверный? Делай предиктабельный эвент.

Добавлено 07-04-2015 в 01:08:

Ku2zoff
А вообще - молодец. Скоро ты у нас заместо Дяди Миши будешь туторы по QuakeStyle-движкам писать.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 06-04-2015 в 19:47:

Цитата:
XaeroX писал:
Делай предиктабельный эвент.

Не хотелось бы на клиент больше лезть, и так намаялся. Вопрос есть: анимации плющит при cl_lw 1. Это как-то можно решить? Или методом тыка временные интервалы подбирать?


Отправлено XaeroX 06-04-2015 в 19:55:

Ku2zoff
Если плющит при включённых локальных пушках - значит, где-то несовпадение кода сервера и клиента. Как следствие - нарушение предиктинга.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено PLut 07-04-2015 в 00:04:

Ku2zoff Искры легко стандартным эвентом в анимации сделать. Зажигалка крутая

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 07-04-2015 в 03:44:

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


Отправлено JPEG 07-04-2015 в 14:37:

Цитата:
XaeroX писал:
UAC.

ну uac же можно отключить

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 07-04-2015 в 15:00:

Yo Den
А ещё пароль можно сбросить, чтобы каждый раз не логиниться.
И антивирус отрубить, ибо ресурсы жрёт.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 07-04-2015 в 16:42:

Цитата:
Yo Den писал:
ну uac же можно отключить

Я сижу без UAC. Пару раз напарывался на говнодаунлоадеры с троянами и один вирусняк. Всё по собственной невнимательности. Удалил, вычистил и то и то. Так что UAC он нужен либо для совсем нубов, либо в интернет-кафе, где посетители сидят под учёткой админа.

Тутор по зажигалке срочно хотите? Могу завтра уже выложить. Есть просто пара моментов в сингле, которые требуют тестирования. А это займёт ещё денёк-другой.


Отправлено EXL 07-04-2015 в 17:07:

А я вообще сижу без антивируса, UAC и обновлений.

Запускаю exe только с официальных сайтов. Если exe вызывает сомнение - пускаю его в виртуальной машине и кидаю его на virustotal.com. Крякнутым ничем не пользуюсь. Флешем в браузере не пользуюсь (HTML5 уже нормально работает). Дырявой Java в браузере не пользуюсь. За четыре года подобного использования винды всё нормально и ни одного вируса не поймано.


Отправлено JPEG 07-04-2015 в 17:55:

Цитата:
Ku2zoff писал:
Я сижу без UAC. Пару раз напарывался на говнодаунлоадеры с троянами и один вирусняк. Всё по собственной невнимательности. Удалил, вычистил и то и то. Так что UAC он нужен либо для совсем нубов, либо в интернет-кафе, где посетители сидят под учёткой админа.

согласен, тоже пару раз напарывался, но это вообще ерунда, а так за несколько лет с виндой вообще ничего не случилось, работает идеально. Ещё и под учёткой админа сижу.. Брандмауер виндовый тоже безполезен

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 07-04-2015 в 19:05:

Цитата:
Ku2zoff писал:
Я сижу без UAC.

Цитата:
EXL писал:
А я вообще сижу без антивируса, UAC и обновлений.

Цитата:
Yo Den писал:
Ещё и под учёткой админа сижу.

Ну, видимо, вам сорцы вашей волатилы не очень дороги.
Дело не в том, что UAC заменяет собой внимательного юзера, а в том, что он дополняет безопасность, и отказываться от него ради сомнительной проги, автор которой сам не понимает, почему она крошится без совместимости - странно. Да и вообще, 99% программ права админа нафиг не нужны. Винда даже в свою директорию позволяет прогам писать без особенных прав (привет, линакс!), если, конечно, директория не помечена как системная.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено XF-Alien 07-04-2015 в 20:24:

Ku2zoff Очень красиво получилось. Мне, например, понравилось даже больше, чем в оригинале, в Invasion'е.


Отправлено ***FantoM*** 08-04-2015 в 11:47:

у меня есть несколько вопросов про формат .aur
1 что это такое ?
2 как их создавать ?
3 если не трудно объясните как он действует ?
4 и с чем его едят ?


Отправлено JPEG 08-04-2015 в 11:57:

Цитата:
***FantoM*** писал:
у меня есть несколько вопросов про формат .aur
1 что это такое ?
2 как их создавать ?
3 если не трудно объясните как он действует ?
4 и с чем его едят ?


ну aur - это аврора-партикли, можно редактировать блокнотом, а вообще XaeroX программу для их редактирования писал

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 08-04-2015 в 12:02:

Yo Den
какую ?

Добавлено 08-04-2015 в 18:02:

и где скачать ?


Отправлено XaeroX 08-04-2015 в 12:07:

***FantoM***
http://hlfx.ru/pub/pfxEd.exe

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено XF-Alien 08-04-2015 в 12:22:

***FantoM*** Есть ещё файлик с описанием параметров/ключевых слов.

__________________
To start the match, Let's draw the sketch, Then add some magic from your heart!
Take gold and blue, Take silver too and put a sparkle in your art!
I love that dress, I love It, YES!!! I love the way It makes me feel.
I love the shoes, I love to choose, It was a dream and now It's real!


Отправлено Cybermax 08-04-2015 в 12:35:

Цитата:
Yo Den писал:
Ещё и под учёткой админа сижу..

Первое что делаю на свеже установленной винде активировать учетку админа.
Цитата:
Yo Den писал:
Брандмауер виндовый тоже безполезен

Я его удалял раньше вообще. Привычка со сбера осталась. Сейчас забил тупо.

__________________


Отправлено KiQ 08-04-2015 в 15:19:

Цитата:
Cybermax писал:
Я его удалял раньше вообще. Привычка со сбера осталась.

а потом у людей деньги с карточек крадут

__________________
-Brain is dead-


Отправлено Ku2zoff 08-04-2015 в 19:40:

http://hlfx.ru/forum/showthread.php?s=&threadid=4573


Отправлено Cybermax 08-04-2015 в 22:34:

Цитата:
KiQ писал:
а потом у людей деньги с карточек крадут

Одно дело компы у клерков, другое дело процессинговые центры. И вообще,ты бы лучше в аську зашел бы днем, толку было бы больше.

__________________


Отправлено ~ X ~ 09-04-2015 в 17:41:

Цитата:
XaeroX писал:
Yo Den
А ещё пароль можно сбросить, чтобы каждый раз не логиниться.
И антивирус отрубить, ибо ресурсы жрёт.

+10

Без UAC жить нельзя. А эти фуфелы, небось, вообще под админом сидят.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено JPEG 10-04-2015 в 13:56:

Цитата:
~ X ~ писал:
Без UAC жить нельзя

ну а что случится то?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 10-04-2015 в 13:59:

Цитата:
Yo Den писал:
ну а что случится то?

Как - что? Ты в Doom3 не играл?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено JPEG 10-04-2015 в 14:02:

Цитата:
XaeroX писал:
Как - что? Ты в Doom3 не играл?

снова ты про дум три) играл давно, за сюжетом не следил, там он не нужен

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 10-04-2015 в 16:45:

почему в Paranoia не светит фонарик в MP
как исправить ?


Отправлено XaeroX 10-04-2015 в 16:49:

Цитата:
Yo Den писал:
играл давно, за сюжетом не следил, там он не нужен

Если вкратце: UAC нужен для того, чтобы не открылся портал в ад. Был там один сумасшедший доктор, пошёл против UAC, и результат всем известен.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено JPEG 10-04-2015 в 16:55:

Цитата:
XaeroX писал:

хах, но по моему опыту др-веб хорошо справляется с угрозами

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 10-04-2015 в 16:56:

Yo Den
UAC не справляется с угрозами, а предостерегает пользователя о потенциальных угрозах. Если ты нажал "Да" - никакой UAC не спасёт. Но задуматься он заставляет. И главное - препятствует самовольному запуску левого софта. В былые времена, бывает, вставишь дискету - а там авторан, и готово, сотни вирусов расползаются по винту.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ghoul [BB] 10-04-2015 в 16:57:

Цитата:
~ X ~ писал:
+10

Без UAC жить нельзя. А эти фуфелы, небось, вообще под админом сидят.


Точняк!

Еще +10 туда же!

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено JPEG 10-04-2015 в 17:34:

Цитата:
XaeroX писал:
а там авторан, и готово, сотни вирусов расползаются по винту

застал только xp, но там для этого был "проводник" в контекстном меню. Ну и антивирь блокирует всё. Да и левые exe не запускаю

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 10-04-2015 в 18:01:

еще раз вопросЪЪЪ
почему в Paranoia не светит фонарик в multiplay


Отправлено XaeroX 10-04-2015 в 18:31:

Цитата:
Yo Den писал:
застал только xp

Ну о чём тогда говорить.
***FantoM***
Не флуди. Раз не отвечают - значит, никто не знает. Здесь не справочная служба.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено JPEG 10-04-2015 в 19:10:

Цитата:
***FantoM*** писал:
почему в Paranoia не светит фонарик в multiplay

в мп еще игрок криво отображается, там вроде вырезано что-то, почитай тут http://cs-mapping.com.ua/forum/showthread.php?t=30192. А так вот форум паранои http://www.level-design.ru/forum/

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 16-04-2015 в 22:06:

еще вопрос
как сделать смену карт в MultiPlayer
как в Decay и Sven Co-op


Отправлено JPEG 16-04-2015 в 22:11:

Цитата:
***FantoM*** писал:

так же будет, если в консоли напишешь "coop 1", оружия только не будут даваться предыдущие, например

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 16-04-2015 в 22:15:

Yo Den
не работает


Отправлено JPEG 17-04-2015 в 00:06:

Цитата:
***FantoM*** писал:

в обычном хл проверь, всё там работает. Создаешь сингловую карту, пишешь кооп 1, рестарт.

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 17-04-2015 в 00:49:

Yo Den
не работает даже в обычной hl


Отправлено JPEG 17-04-2015 в 12:32:

Цитата:
***FantoM*** писал:

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

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Superuser8 17-04-2015 в 12:54:

***FantoM*** уже сто раз об этом говорили, используй поиск


Отправлено ***FantoM*** 17-04-2015 в 17:46:

Superuser8
я уже искал на форумах по словам
coop
co-op
кооператив
куп
кооп


Отправлено Superuser8 17-04-2015 в 20:02:

***FantoM*** и как результат? Неужто ничего не нашёл?


Отправлено ***FantoM*** 17-04-2015 в 22:42:

Superuser8
почему вот
http://hlfx.ru/forum/showthread.php...&highlight=coop
там где fire64 писал

1. mp_allowmonsters 1 надо прописать в конфиге сервера, тогда при запуске, монстры будут на карте.

2. Да, надо сделать на карте несколько стартовых точек, так как в противном случае игроки будут появляться друг в друге и либо сразу дохнуть, либо застревать.

3. Там нужно дизассемблировать сервер и пропатчить функцию ChangeLevelNow у энтити trigger_changelevel и тд и тп

я нне совсем понял как пропатчить вызов CHANGE_LEVEL
если не трудно объясните


Отправлено Superuser8 18-04-2015 в 06:06:

***FantoM*** окей)
По третьему пункту, объясняю:
Открываем файл triggers.cpp
И находим

C++ Source Code:
void CChangeLevel :: ChangeLevelNow( CBaseEntity *pActivator )

Итак, для начала комментируем этот кусочек кода:
C++ Source Code:
// Don't work in deathmatch
if ( g_pGameRules->IsDeathmatch() )
  return;

Теперь обходим ту самую проверочку ( попросту комментируем )
C++ Source Code:
1
// look for a landmark entity
2
pentLandmark = FindLandmark( m_szLandmarkName );
3
if ( !FNullEnt( pentLandmark ) )
4
{
5
  strcpy(st_szNextSpot, m_szLandmarkName);
6
  gpGlobals->vecLandmarkOffset = VARS(pentLandmark)->origin;
7
}

А теперь патчим CHANGE_LEVEL
А точнее, находим вот эту строчку
C++ Source Code:
CHANGE_LEVEL( st_szNextMap, st_szNextSpot );

И вместо st_szNextSpot пишем NULL

Вот и все дела.

P.S обращаюсь ко всем нашим товарищам-камрадам
Можно ли заюзать ShouldCollide из рикошета, для игроков в coop режиме? В таком случае можно запросто использовать лишь один info_player_***


Отправлено ***FantoM*** 20-04-2015 в 04:37:

еще одна проблема


я хотел немного изменить 9mmhandgun сделать так чтоб
на одно нажатия на кнопки мыши
один выстрел
я сделай так

C++ Source Code:
1
void CGlock::PrimaryAttack( void )
2
{
3
  if(! ( m_pPlayer->m_afButtonPressed & IN_ATTACK )) return;
4
  GlockFire( 0.001, 0.003, TRUE );
5
}


почему в half-life работает как надо
а в Xash3D не работает ?

Добавлено 20-04-2015 в 10:37:

вот видео

в half-life

https://www.youtube.com/watch?v=mzt...eature=youtu.be

d Xash3D

https://www.youtube.com/watch?v=lE2...eature=youtu.be


Отправлено KiQ 20-04-2015 в 05:04:

***FantoM*** cl_lw 0

__________________
-Brain is dead-


Отправлено ***FantoM*** 20-04-2015 в 05:17:

KiQ
работает
а че эта за команда ?


Отправлено FiEctro 20-04-2015 в 06:53:

***FantoM***
Одна из команд предиктинга. В ксаше он недописан.


Отправлено KiQ 20-04-2015 в 06:54:

***FantoM*** клиентские пушки

__________________
-Brain is dead-


Отправлено ~ X ~ 21-04-2015 в 09:44:

Superuser8 я думаю, ты будешь пренеприятнейше удивлён количеством действий, которые надо совершить ещё, чтобы получить более-менее годный кооператив...
(подсказывать не буду, пока что это ноу-хау )

***FantoM*** какой-то анальынй способ. можно было просто nextPrimaryAttack выставить в 0 или -1...

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Superuser8 21-04-2015 в 10:11:

~ X ~ ну вот зачем ты так, братишка?!! Я же спать не буду теперь ночами!


Отправлено ~ X ~ 21-04-2015 в 11:06:

Да я же вижу тебе злые monster_flyer мешают!
Хочешь я info_node_air создам, они сюда прилетят - и мы их убьём! И спать будет хорошо тебе.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено ***FantoM*** 22-04-2015 в 04:03:

еще один вопрос

можно ли худ рисовать на прямую спрайтами а не через hud.txt ?
и можно ли вместо спрайта сделать худ моделью ?


Отправлено Superuser8 22-04-2015 в 05:03:

***FantoM*** "А можно ли чистить туалет вилкой?" - Да можно, но зачем?


Отправлено KiQ 22-04-2015 в 05:48:

***FantoM*** худ моделью? В стиле третьей кваки что-ли? Или кукурузиса?

__________________
-Brain is dead-


Отправлено Ku2zoff 22-04-2015 в 06:26:

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


Отправлено Ghoul [BB] 23-04-2015 в 10:40:

Цитата:
Superuser8 писал:
***FantoM*** "А можно ли чистить туалет вилкой?" - Да можно, но зачем?


Ну что ж ты, братишка? Вилкой удобно проникать во всевозможные труднодоступные места, трещинки и неровности, достигая идеального состояния унитаза. Конечно, этот процесс долгий, но в армии не надо быстро, в армии надо, чтоб ты зае устал сверх меры.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ***FantoM*** 25-04-2015 в 06:04:

вот че у меня получилось


Отправлено ***FantoM*** 25-04-2015 в 06:05:

и вот


Отправлено Ku2zoff 25-04-2015 в 08:19:

***FantoM*** а если пострелять из гаусса, жёлтые круги не просвечивают через модель?


Отправлено ***FantoM*** 25-04-2015 в 09:13:

Ku2zoff
просвечивают
и еще если к стене прижатся то модель исчезает
это из за размера модели
я там ее подальше от экрана поставил чтобы игроку казалось что модель маленькая
потому что я больше способов не вижу как размер уменьшить у модели


Отправлено Ku2zoff 25-04-2015 в 15:01:

***FantoM*** pparams->nextview = 1 + глобальная переменная для обозначения отдельного прохода(вьюпорта), например int g_iHudPass. Потом рисуешь модельку в DrawNormalTriangles только в этом проходе.
view.cpp V_CalcRefdef:

C++ Source Code:
1
g_iHudPass = 0;
2
if (pparams->nextView == 1)
3
{
4
  pparams->onlyClientDraw = 1;
5
  pparams->nextView = 0;
6
  g_iHudPass = 1;
7
  return;
8
}
9
else if ((pparams->nextView == 0) && !(pparams->viewentity > pparams->maxclients) && (какое-нибудь условие рисования модельки худа))
10
{
11
  pparams->nextView = 1;
12
}

tri.cpp DrawNormalTriangles:
C++ Source Code:
1
if (g_iHudPass)
2
{
3
  StudioDrawHud(); // ну или как она у тебя называется
4
  return;
5
}


Добавлено 25-04-2015 в 20:56:

Цитата:
***FantoM*** писал:
потому что я больше способов не вижу как размер уменьшить у модели

m_pCurrentEntity->curstate.scale уменьшить. Ну и добавить скопипастить из спирита возможность скейлить студиомодели.

Добавлено 25-04-2015 в 21:01:

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


Отправлено ~ X ~ 25-04-2015 в 15:51:

а разве в ХЛ не было возможности скейлить модели?

also, spirit ещё актуален? кто-нибудь его movewith пользуется?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено KiQ 25-04-2015 в 16:49:

***FantoM*** пока что не вижу преимуществ перед просто заскриненной и вырезанной моделью. Сделай анимашку или вращение, чтоль

__________________
-Brain is dead-


Отправлено Ku2zoff 25-04-2015 в 17:50:

Цитата:
KiQ писал:
Сделай анимашку или вращение, чтоль

Лучше смену скинов. Чтоб переливалась, мерцала или мигала.
KiQ преимущество есть: это одинаковый размер "иконки" при любых разрешениях экрана.
***FantoM*** в очередной раз подкидывает мне вкусную идею Как только допилю зажигалку (в данный момент почти готово, жду только кастомную модель от одного форумчанина) и управлюсь с ползанием игрока, попробую заменить спрайтовый худ модельным. При этом способе можно будет реализовать отображение уровня чего-либо не просто полосочками, точками, уровнем прозрачности или цветом, но кругами и дугами (привет бонеконтроллеры). Заодно будет чем напостоянно занять дополнительный проход, в котором рисуется зажигалка.
Правда, я тут пришёл к выводу, что если охота ещё и грамотно рисовать ноги от 1-го лица, то надо и их пихать в отдельный проход, чтобы не перекрывали вьюмодель. Ну это не беда, вюмодель можно попытаться засунуть в дополнительный проход после худа и зажигалки.


Отправлено XaeroX 25-04-2015 в 18:45:

Цитата:
~ X ~ писал:
а разве в ХЛ не было возможности скейлить модели?

В оригинальном - нет, а вообще - да. Даже в софтваре (я делал ).

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Cybermax 25-04-2015 в 18:56:

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

Вот бы туториал ног от первого лица для хл.

__________________


Отправлено XaeroX 25-04-2015 в 19:09:

А разве между проходами не очищается буфер глубины?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено KiQ 25-04-2015 в 19:19:

Cybermax для ксаша надо?

__________________
-Brain is dead-


Отправлено Cybermax 25-04-2015 в 19:28:

Есть средней паршивости модель бинокля, ей анимацию немного изменить и руки перетекстурить и норм будет. Мало ли кому пригодится. Если
Перезалил все три модели v_, p_, w_
https://www.dropbox.com/s/w2jp4i16e..._binos.zip?dl=0

__________________


Отправлено Ku2zoff 25-04-2015 в 19:28:

Цитата:
Cybermax писал:
Вот бы туториал ног от первого лица для хл.

В Арранжевом Менте в исходниках есть. Правда там кривой и ненадёжный способ - темпэнтитя. Я поступил по-другому: подглядел в Паранойе функцию рисования кастомной модели и заюзал для зажигалки и ног. Ноги ещё не совсем готовы, надо придумать, как заставить их вертется не по yaw, а по gaityaw. Т.к. последний считается для локального игрока только от третьего лица, я подумал о передаче значения с сервера. Хотя православнее будет считать gaityaw отдельно для модельки ног.


Отправлено Cybermax 25-04-2015 в 19:30:

Цитата:
KiQ писал:
Cybermax для ксаша надо?

Нет не для ксаш, для стандартного стимовского хл1.

Добавлено 25-04-2015 в 22:30:

Цитата:
Ku2zoff писал:
Правда там кривой и ненадёжный способ - темпэнтитя.

Та мне вообще не нравится как там реализовано.

__________________


Отправлено Ku2zoff 25-04-2015 в 19:32:

Цитата:
Cybermax писал:
Есть средней паршивости модель бинокля

Ну можно и для бинокля в левой руке завести дополнительную вьюмодель Неплохая мысль. Только надо это лишь в сингле.

Добавлено 26-04-2015 в 01:32:

Цитата:
Cybermax писал:
Нет не для ксаш, для стандартного стимовского хл1.

Подожди немного, может я напишу мини-тутор. Там кода не особо много в общем-то.


Отправлено Cybermax 25-04-2015 в 20:07:

Модель игрока, с анимацией лежа из Tour_of_Duty_Redux. Скелет почти как у стандартных моделей игроков. https://www.dropbox.com/s/vygcdz5fg...machgun.7z?dl=0

__________________


Отправлено ~ X ~ 25-04-2015 в 23:17:

Цитата:
Ku2zoff писал:
можно попытаться засунуть в дополнительный проход

Я вот тут проснулся, открыл форум, а вы тут такие вещи пишете... (6_6)

Зачем столько проходов? Всё можно в один отрендерить...

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ghoul [BB] 26-04-2015 в 07:27:

И вот он, в выходной день, вместо того, чтобы, проснувшись, сделать гимнастику, принять душ, съесть сладкого хлеба фруктового салата из папайи, манго, банана и рамбутана под йогуртом, сразу же на форум лезет....

Ну да ладно, раз уж так, покажи им, как НАДО рендерить!

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Cybermax 26-04-2015 в 07:40:

Цитата:
Ghoul [BB] писал:
съесть сладкого хлеба фруктового салата из папайи, манго, банана и рамбутана под йогуртом, сразу же на форум лезет....

Что-бы зарядку делать, калории нужны же

__________________


Отправлено Ghoul [BB] 26-04-2015 в 11:03:

калории в обед получать надо, а не нагружать с утра пузо, которое, как и весь организм, еще не отошло ото сна ..

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 26-04-2015 в 11:17:

Цитата:
Ghoul [BB] писал:
Ну да ладно, раз уж так, покажи им, как НАДО рендерить!

Мне тоже это интересно. Чтоб спрайты рендерились после кастомной вьюмодели, и чтоб у неё не глючил рендермод, когда рядом additive env_sprite.

Добавлено 26-04-2015 в 17:17:

Цитата:
Cybermax писал:
Модель игрока, с анимацией лежа из Tour_of_Duty_Redux. Скелет почти как у стандартных моделей игроков.

Там анимации как у говна модели, сделанной тринадцатилетним шкальником. В этой модели больше всего полигонов израсходовано на пулемётную ленту и гранаты, спёртые из какой-то другой модели. Меня от таких моделей, где к основной по-быдляцки прилеплены ультра-хайполи куски от других, блевать тянет. Особенно когда основная модель имеет меньше поликов, чем прилепленные куски. См. всякие быдлопаки для ХЛ и модов.


Отправлено Ghoul [BB] 26-04-2015 в 11:58:

Вообще, это интересная мысль - вставить в ХУД модели от оружия. Опять таки, получится неплохая экономия ресурсов, плюс все это будет красивее выглядеть. А всякие эффекты при выборе нужного оружия из позиции можно модель делать более-или-менее прозрачной, добавить эффект GlowShell или еще чего там можно стандартными рендерами добиться. Для этого достаточно W_ модель заюзать. Ну или P_ , если первая уже вырезана, как в ХДМ.
Реально любоПЫТНО увидеть преображенный ХУД...
Единственный момент, который может меня настораживать - это одновременное появление на экране с десяток моделей, (особенно хайполи) когда открываешь нужный слот оружия...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 26-04-2015 в 12:21:

Цитата:
Ghoul [BB] писал:
особенно хайполи

Смеёшься? Надо быть извращенцем, чтобы юзать p_/w_ модели с более чем 500 поликами. Большинство огнестрельного оружия вполне укладывается в этот лимит с сохранением неугловатого внешнего вида. Вот несколько примеров, которые доказывают, что можно вполне уложиться в лимит до 1000 поликов:
http://pix.academ.org/img/2015/04/26/74598538e9c17c283a00756ec991ab78.jpghttp://pix.academ.org/img/2015/04/26/4a4a5450de1fff9b2cffdd858eb65dda.jpg
http://pix.academ.org/img/2015/04/26/56b2f6f89a19b8fa7b9f5e5bfdfd72f7.jpghttp://pix.academ.org/img/2015/04/26/1160648502fe2fae8e14dfa71ccd13d4.jpg
Всё что выше - лень моделлера, который не захотел оптимизировать меш.


Отправлено KiQ 26-04-2015 в 14:34:

для худа можно сделать дополнительную бодю со срезанной невидимой половиной треугольников

__________________
-Brain is dead-


Отправлено Ku2zoff 26-04-2015 в 15:12:

Цитата:
KiQ писал:
для худа можно сделать дополнительную бодю со срезанной невидимой половиной треугольников

А ещё можно пойти подметать дворы и делать ремонт дома вместо управляющей компании. Да и вообще, дороги от снега самим чистить. Срезанная невидимая часть - очень плохой подход. Стоит только попытаться добавить какое-то нестандартное поведение (weapon lag, concussion effect), и все дырки попадут в поле зрения игрока. Это в случае с вьюмоделями. В случае с ворлдмоделями, стоит добавить физику, и дырки тоже станет видно, если упадёт не на тот бок. А делать дополнительную бодю, как минимум неоптимально. Я бы предпочёл обкромсать лишние полики в 3дмаксе или полигон-кранчером без ухудшения внешнего вида. Полигон кранчер иногда позволяет избавиться от 50% полигонов, не испортив модель. Что говорит о лени моделлера.
Даже в сорсе w_ модели более 1000 поли не нужны, всё равно разницы не видно. Самое главное тут, чтоб текстура была не мыльная.


Отправлено KiQ 26-04-2015 в 15:30:

Цитата:
Ku2zoff писал:
А ещё можно пойти подметать дворы и делать ремонт дома вместо управляющей компании. Да и вообще, дороги от снега самим чистить.

порой только так и можно что-нибудь годное получить. Для себя всяко лучше сделаешь.

Я не говорю о том, чтобы взять уберполигональную модель и просто отрезать от нее половину. Конечно, сначала нужно максимально постараться снизить количество треугольников в исходном меше. А многие w модельки, кстати, именно так и сделаны.

__________________
-Brain is dead-


Отправлено Cybermax 26-04-2015 в 17:09:

Цитата:
Ku2zoff писал:
Я бы предпочёл обкромсать лишние полики в 3дмаксе или полигон-кранчером без ухудшения внешнего вида.

Не пинайте сильно ногами но у меня небольшое затруднение. Есть мешь хев костюма из Black Mesa. Хотелось бы сделать модель игрока хл1 на основе этой меши. Очень много полигонов. Пробовал полигон-кранчером уменьшить кол-во полигонов, получилось некрасиво. Может кто-то поможет? https://www.dropbox.com/s/akakce1sl.../bmsuit.7z?dl=0

__________________


Отправлено XaeroX 26-04-2015 в 18:11:

Cybermax
Слово "меш" традиционно мужского рода, уж простите граммар-нацизм.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Cybermax 26-04-2015 в 18:52:

Спасибо, учту. Просто был уверен что в обратном.

__________________


Отправлено ***FantoM*** 03-05-2015 в 19:09:

вот че у меня получилось c hud ом


Отправлено Ku2zoff 03-05-2015 в 19:22:

***FantoM*** хорошо выглядит. Снарк анимируется? Его можно сделать бегущим. Видео снять можешь? А то на скриншоте всего не увидишь. Особенно того, ныряют модели в стены или нет.


Отправлено FiEctro 03-05-2015 в 19:25:

***FantoM***
Это картинки или модельки?


Отправлено XaeroX 03-05-2015 в 19:32:

59 фпс - это ведь не то, что я подумал?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 03-05-2015 в 19:52:

Ku2zoff
сейчас не могу у меня с драйверами проблемы

FiEctro
модельки

XaeroX
у меня в goldsource выше не поднимается


----------

еще несколько недель и будет тутор


Отправлено JPEG 03-05-2015 в 23:39:

Цитата:
***FantoM*** писал:
вот че у меня получилось c hud ом

прикольно) можно ещё вместо аптечки поставить текущую динамическую модель игрока, типа как голова в вольфе

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 04-05-2015 в 17:32:

Цитата:
Yo Den писал:
можно ещё вместо аптечки поставить текущую динамическую модель игрока, типа как голова в вольфе

Ты эту модель сделаешь? Чтоб рожа от нормальной до разбитой менялась в зависимости от уровня здоровья? По мне так лучше заставить апечку вращаться, как предметы в кутри.


Отправлено JPEG 04-05-2015 в 17:47:

Цитата:
Ku2zoff писал:
Ты эту модель сделаешь? Чтоб рожа от нормальной до разбитой менялась в зависимости от уровня здоровья? По мне так лучше заставить апечку вращаться, как предметы в кутри.

ну зачем так, можно взять модель игрока в полный рост и при попадании анимировать отдачу, если игрок прыгает то анимацию прыжка, садится - duck (ну как в cod спрайт лежачего/сидячего игрока) и т.д.

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 04-05-2015 в 18:39:

Yo Den
а это идея
сделать hud который будет показывать анимацию игрока
но по моему лучше будет сделать отдельно HUD где то над аптечкой


Отправлено JPEG 04-05-2015 в 18:43:

Цитата:
***FantoM*** писал:
HUD где то над аптечкой

а что показывает сама аптечка? Ну и анимированного игрока лучше всё-таки в углу экрана ставить, чтобы не отвлекал

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 05-05-2015 в 02:00:

Цитата:
***FantoM*** писал:
сделать hud который будет показывать анимацию игрока

Я такое видел в каком-то сингловом моде на кутри. ИМХО, мало пользы от этого. Картинками лучше.


Отправлено ***FantoM*** 05-05-2015 в 02:15:

Ku2zoff
я всю ночь мучился над этим худом
и решил что
да картинками лучше и площе сделать


Отправлено Ghoul [BB] 05-05-2015 в 05:15:

Цитата:
***FantoM*** писал:
***FantoM***


Молодец, трудись! Будем с нетерпением ждать тутор. Худ с оружием моделями будет вполне достоит. Анимировать ничего не надо там, ИМХО. Проще накладывать какой-нибудь забавный эффект на модель при её выборе из списка...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено SteamPlay43 06-05-2015 в 16:21:

Ku2zoff В hl decay картинками, но смысл от такого худа нулевой.


Отправлено Ghoul [BB] 10-05-2015 в 05:40:

Насчет анимации выделенного оружия в ХУДе - думаю, что вращение вокруг своей оси будет самым правильным решением. Еще можно небольшую подсветку модели при этом сделать.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ***FantoM*** 11-05-2015 в 03:01:

нужна помощь

при переносе партикл систем аврора из спирита себе в мод возникли ошибки

code:
effects.cpp \dlls\effects.cpp(2493) : error C2065: 'kRenderFxEntInPVS' : undeclared identifier \dlls\effects.cpp(2515) : error C2065: 'UTIL_DesiredAction' : undeclared identifier \dlls\effects.cpp(2525) : error C2065: 'gmsgParticle' : undeclared identifier

что делать ?


Отправлено Ku2zoff 11-05-2015 в 03:50:

***FantoM*** gmsgParticle копипасть из спирита. DesiredAction можешь заменить на Xash Post Activate System, на форуме есть тутор. kRenderFxEntInPVS можешь выкинуть, он не нужен в общем-то.


Отправлено ***FantoM*** 11-05-2015 в 04:49:

Цитата:
Ku2zoff писал:
gmsgParticle копипасть из спирита

у меня с gmsgParticle проблемы
я вроде вставил как надо но ошибка все равно не уходит
что делать ?


Отправлено Ku2zoff 11-05-2015 в 05:03:

***FantoM*** в player.cpp добавил? В effects.cpp в начале файла написал extern int gmsgParticle?


Отправлено ***FantoM*** 11-05-2015 в 05:20:

Цитата:
Ku2zoff писал:
В effects.cpp в начале файла написал extern int gmsgParticle?


нет
сейчас сделаю
ошибок вроде нет
но в игре че не происходит
походу чето с Xash postActivate system


Отправлено ***FantoM*** 13-05-2015 в 10:35:

а эту как ошибку исправить
cl_dll\particlesys.cpp(504) : error C2065: 'CONTENT_SPECIAL1' : undeclared identifier
cl_dll\particlesys.cpp(508) : error C2065: 'CONTENT_SPECIAL2' : undeclared identifier
cl_dll\particlesys.cpp(512) : error C2065: 'CONTENT_SPECIAL3' : undeclared identifier


Отправлено XaeroX 13-05-2015 в 10:39:

Ну тривиально же.
Find in Files -> "CONTENT_SPECIAL1" -> copy-paste

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 13-05-2015 в 10:55:

XaeroX
у меня кроме этих трех строк больше не находит


Отправлено XaeroX 13-05-2015 в 12:20:

***FantoM***
Видимо, ты ищешь только по срр-файлам. Поищи по h-файлам.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 13-05-2015 в 12:38:

XaeroX
вроде там и там

Добавлено 13-05-2015 в 18:38:

вот
Infiles/file type: *.c;*.cpp;*.cxx;*.tli;*.h;*.tlh;*.inl;*.rc


Отправлено XaeroX 13-05-2015 в 12:58:

***FantoM***
Ну у автора кода же как-то компилируется?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 13-05-2015 в 13:13:

XaeroX
мне интересно как же у него компилируется?


Отправлено XaeroX 13-05-2015 в 14:07:

***FantoM***
Возьми его проект целиком и найди там эти дефайны. Они там стопроцентно есть.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 13-05-2015 в 15:48:

XaeroX
дефайны это же #define названия макроса и последовательность
символов
или я ошибаюсь ?


Отправлено XaeroX 13-05-2015 в 17:36:

не обязательно, там может быть enum.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено SteamPlay43 13-05-2015 в 19:17:

***FantoM*** Сделай поиск по всем файлам и не морочь себе голову)


Отправлено ***FantoM*** 13-05-2015 в 20:03:

SteamPlay43
поиск ничего не находит


Отправлено SteamPlay43 16-05-2015 в 13:34:

***FantoM*** В поле поска писать надо CONTENT_SPECIAL

Добавлено 16-05-2015 в 19:33:

***FantoM*** Пфф:
Searching for 'CONTENT_SPECIAL'...
C:\Plugins\SpiritSource19\cl_dll\particlesys.cpp(504): pType->m_iDrawCond = CONTENT_SPECIAL1;
C:\Plugins\SpiritSource19\cl_dll\particlesys.cpp(508): pType->m_iDrawCond = CONTENT_SPECIAL2;
C:\Plugins\SpiritSource19\cl_dll\particlesys.cpp(512): pType->m_iDrawCond = CONTENT_SPECIAL3;
C:\Plugins\SpiritSource19\common\const.h(601):#define CONTENT_SPECIAL1 -20 //LRC - used by the particle systems
C:\Plugins\SpiritSource19\common\const.h(602):#define CONTENT_SPECIAL2 -21
C:\Plugins\SpiritSource19\common\const.h(603):#define CONTENT_SPECIAL3 -22
6 occurrence(s) have been found.

Добавлено 16-05-2015 в 19:34:

***FantoM*** Ты пади искал в папке dlls


Отправлено ***FantoM*** 16-05-2015 в 19:33:

Цитата:
SteamPlay43 писал:
***FantoM*** Ты пади искал в папке dlls

и в cl_dll


Отправлено XaeroX 16-05-2015 в 19:39:

***FantoM***
Искать надо всегда во всех папках SDK. Во всех. Всегда.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено SteamPlay43 17-05-2015 в 05:07:

XaeroX Он наверное уроки копипасты прогуливал


Отправлено ***FantoM*** 17-05-2015 в 18:01:

SteamPlay43
прогуливать уроки это круто.


Отправлено ***FantoM*** 18-05-2015 в 04:37:

нужна помощь
не могу поставить широкоэкранный режим в hl
пробовал в интернетe искать не помогает
через реестор не помогает
через бат с параметром -w -h не помогает
драйвера установлены все


Отправлено Ku2zoff 18-05-2015 в 04:53:

***FantoM*** видеокарта какая? Винда какая? Версия халфы какая? Режим видео какой? OpenGL? Разрешение экрана какое?

Добавлено 18-05-2015 в 10:53:

Цитата:
***FantoM*** писал:
и в cl_dll

Find in files->Entire Solution (Including external items)
Если нет студии, заведи её. Кодить станет значительно легче. Ещё и дебажить сможешь.


Отправлено ***FantoM*** 18-05-2015 в 05:12:

Цитата:
Ku2zoff писал:
***FantoM*** видеокарта какая? Винда какая? Версия халфы какая? Режим видео какой? OpenGL? Разрешение экрана какое?


видюха nvidia GT 220M
винда XP
version 1.1.2.1
видео режим ОпенГл но и на других режимах не получается сделать
разрешение экрана 1366*768


Отправлено Ku2zoff 18-05-2015 в 05:24:

Цитата:
***FantoM*** писал:
version 1.1.2.1

Так устарела уже. Актуальную стимовскую качай. У меня на телевизоре почти такое же разрешение (1360х768), и халфа до выхода на SteamPipe его не поддерживала.
Цитата:
***FantoM*** писал:
но и на других режимах

В актуальной халфе из других режимов только софтвар. В старье есть конечно д3д, но он никому не нужен.


Отправлено ***FantoM*** 18-05-2015 в 05:29:

Цитата:
Ku2zoff писал:
Цитата:
***FantoM*** писал:
version 1.1.2.1

Так устарела уже. Актуальную стимовскую качай. У меня на телевизоре почти такое же разрешение (1360х768), и халфа до выхода на SteamPipe его не поддерживала.


вроде у меня стимовская


Отправлено Ku2zoff 18-05-2015 в 07:22:

***FantoM*** актуальная такая:

C++ Source Code:
Protocol version 48
Exe version 1.1.2.2 (valve)
Exe build: 13:14:12 Aug 29 2013 (6153)


Отправлено ***FantoM*** 18-05-2015 в 08:04:

Ku2zoff
сейчас обновлю

Добавлено 18-05-2015 в 14:04:

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


Отправлено Ku2zoff 18-05-2015 в 08:42:

***FantoM*** блин, ты Display Mode сменил с Normal на Widescreen? У меня это разрешение точно есть в списке. На нвидии глючить не должно, все разрешения должны быть доступны. Это не интел.

http://pix.academ.org/img/2015/05/18/9621d787181d4539a93813271dbe7599.jpg

Добавлено 18-05-2015 в 14:42:

Хотя, если у тебя есть в ноуте интеграшка в проц от интел, то она вполне может портить погоду.


Отправлено PLut 18-05-2015 в 08:49:

Ku2zoff У меня интел и даже на старых версиях хл есть разрешение 1440х900, которое, кстати, реже, чем 1360х768.

__________________
Base Defense on Steam, ModDB


Отправлено Ghoul [BB] 18-05-2015 в 09:45:

Кто то обещал тутор по моделькам в худе. И где он?

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ***FantoM*** 18-05-2015 в 10:18:

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

Ghoul [BB]
тутор будет если вы хотите но он ОЧЕНЬ нубский
вот если бы кто то помог бы исправить
тогда другое дело


Отправлено Ku2zoff 18-05-2015 в 12:26:

Цитата:
***FantoM*** писал:
не могу я сменить
кнопка заблокирована

Запусти с параметром -dev и посмотри, что выдаст. Нужна версия драйвера. У меня вот так:
C++ Source Code:
1
GL_VENDOR: NVIDIA Corporation
2
GL_RENDERER: GeForce GTX 760/PCIe/SSE2
3
GL_VERSION: 4.5.0 NVIDIA 350.12
4
GL_SIZES:  r:8 g:8 b:8 a:0 depth:24

Цитата:
***FantoM*** писал:
но он ОЧЕНЬ нубский

Запости в песочнице. А там может исправим, и перенесём в туториалы.

Добавлено 18-05-2015 в 18:26:

***FantoM*** посмотри ещё настройки масштабирования в драйвере нвидиа. Тоже могут влиять.


Отправлено SteamPlay43 19-05-2015 в 05:32:

PLut Вот вот, у меня даже в в версии 1.1.2.1 все разрешения есть, вплоть до 1920х1080)Это у него хл запускается на процессорной графике, хотя у меня и там все разрешения поддерживаются. Вообще в актуальных драйверах NVIDIA для моей видеокарты заблочен запуск хл на дискретной видеокарте, но это легко поправить с помощью NVIDIA inspector

Добавлено 19-05-2015 в 11:27:

Ku2zoff Достаточно нажать правой кнопкой на ярлыке и посмотреть пункт контекстного меню Запустить с графическим процессором, тогда сразу станет ясно на какой видеокарте запускается игра.

Добавлено 19-05-2015 в 11:30:

***FantoM*** А что за процессор у твоего ноутбука? Судя по видеокарте довольно ущербный, те же проблемы были на нетбуке с процессором Intel atom, там в некоторых играх не было родного разрешения и было всего 8 Мб видеопамяти, вместо мнимых 256.

Добавлено 19-05-2015 в 11:32:

Ku2zoff У пеня кстати в масштабировании стоит сохранять пропорции, а других пунктов нет, и если две видеокарты, то масштабирование настраивается через видеокарту Интел.


Отправлено ***FantoM*** 19-05-2015 в 05:49:

Цитата:
Ku2zoff писал:
Запусти с параметром -dev и посмотри, что выдаст. Нужна версия драйвера

у меня вот
C++ Source Code:
1
GL_VENDOR: NVIDIA Corporation
2
GL_RENDERER: GeForce GT 220M/PCIe/SSE2
3
GL_VERSION: 3.3.0
4
GL_SIZES:  r:8 g:8 b:8 a:0 depth:24


Добавлено 19-05-2015 в 11:43:

Цитата:
SteamPlay43 писал:
***FantoM*** А что за процессор у твоего ноутбука? Судя по видеокарте довольно ущербный, те же проблемы были на нетбуке с процессором Intel atom, там в некоторых играх не было родного разрешения и было всего 8 Мб видеопамяти, вместо мнимых 256.


процессор inter core2 duo

Добавлено 19-05-2015 в 11:49:

и кстати у меня в
C++ Source Code:
1
half-life 2
2
half-life 2 ep1
3
half-life 2 ep2
4
Left 4 Dead
5
Left 4 Dead 2
6
Portal
7
Portal 2
8
Garry's Mod 13
9
и Counter-Strike source

все разрешения
ПРОВЕРЕНО МНОЮ


Отправлено SteamPlay43 19-05-2015 в 06:14:

***FantoM*** Понятное дело что на Source там у тебя все разрешения, он же д3д, причём девятый, а gold source OpenGL и d3d, причём 6

Добавлено 19-05-2015 в 12:14:

***FantoM*** Напиши полное название процессора, т.е. У меня например Intel core i7 3610QM


Отправлено Ku2zoff 19-05-2015 в 06:19:

Цитата:
***FantoM*** писал:
GL_VENDOR: NVIDIA Corporation
GL_RENDERER: GeForce GT 220M/PCIe/SSE2
GL_VERSION: 3.3.0
GL_SIZES:__r:8 g:8 b:8 a:0 depth:24

Хм, запускается на дискретной. Попробуй дрова обновить.
Цитата:
SteamPlay43 писал:
а gold source OpenGL и d3d, причём 6

В актуальной версии нет d3d. Винда какая? Надеюсь 7?


Отправлено SteamPlay43 19-05-2015 в 06:27:

Ku2zoff Знаю, до сих пор сижу на 1.1.2.1, винда к сожалению 8.1 Pro

Добавлено 19-05-2015 в 12:22:

Ku2zoff Недавно винда летела, но 7 ставить не стал, т.к. некоторые драйвера, специфичные для моего ноутбука, только для 8-8.1

Добавлено 19-05-2015 в 12:25:

Ku2zoff В новом хл команда кстати есть -stetchaspect

Добавлено 19-05-2015 в 12:27:

Ku2zoff Ещё порадовала смена таблицы разделов с GPT в MBR


Отправлено ***FantoM*** 19-05-2015 в 06:41:

Цитата:
SteamPlay43 писал:
***FantoM*** Напиши полное название процессора


inter Core 2 Duo T6600

Цитата:
Ku2zoff писал:
Хм, запускается на дискретной. Попробуй дрова обновить.

у меня вроде авто обновления через DriverPack Solution


Отправлено Ku2zoff 19-05-2015 в 08:03:

Цитата:
***FantoM*** писал:
у меня вроде авто обновления через DriverPack Solution

Ну ага. Никогда не пользуйся таким говном. Обнови вручную с сайта нвидии, если там новее.
У тебя винда ХР? Если обновление драйверов не поможет, меняй винду.

Добавлено 19-05-2015 в 14:03:

Или эта, попробуй поставить в настройках видео в халфе галку "Low Video Quality", то есть "Низкое качество графики". Должно помочь.


Отправлено ***FantoM*** 19-05-2015 в 08:17:

Цитата:
Ku2zoff писал:
Обнови вручную с сайта нвидии, если там новее.


скачай последнюю версию не помогает

Цитата:
Ku2zoff писал:
У тебя винда ХР?


да

Цитата:
Ku2zoff писал:
Если обновление драйверов не поможет, меняй винду


винду менять не буду
из-за того что настраивать по новому лень
и привыкнуть не получается к новым виндовс
по моему пусть будет растянуто
самое главное что игра работает

Добавлено 19-05-2015 в 14:17:

Цитата:
***FantoM*** писал:
Или эта, попробуй поставить в настройках видео в халфе галку "Low Video Quality", то есть "Низкое качество графики". Должно помочь.

помогло


Отправлено Ku2zoff 19-05-2015 в 08:35:

Цитата:
***FantoM*** писал:
помогло

Значит дело не в интеле. Вроде бы твой процессор вообще не имеет встроенного видеоядра. Тут винда виновата. Точнее Valve, которые наговнокодили в движке всякие FBO.


Отправлено ***FantoM*** 19-05-2015 в 12:24:

Цитата:
Ku2zoff писал:
Вроде бы твой процессор вообще не имеет встроенного видеоядра.


это хорошо или плоха?


Отправлено Ku2zoff 19-05-2015 в 13:04:

Цитата:
***FantoM*** писал:
это хорошо или плоха?

Это нормально. Встроенное в процессор видео - зло, когда оно позиционируется как 3D ускоритель для игр. Для офисной работы наоборот, это большой плюс, т.к. не надо покупать видеокарту.
У меня, к примеру, встроенное видео в планшете на Intel Atom из моих любимых шутеров чисто тянет только ку2. В хл уже слайдшоу 10-15 фпс. Ну это особенности интеловской реализации опенгл. Некоторые товарищи умудрялись на подобных аппаратах выжимать 30-35 фпс в играх на сорсе. Так что у меня складывается мнение, что либо д3д на интел быстрее, либо новые игры лучше работают с новой процессорной архитектурой.


Отправлено ~ X ~ 19-05-2015 в 15:33:

Всё ещё мучитесь с анальными вальвовскими дефайнами? В XDM уже давно CONTENTS_* пофикшены

Интел - говно. Факт. Все, что выше тогд же мнения, правы.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 19-05-2015 в 15:43:

Цитата:
~ X ~ писал:
Интел - говно

Надеюсь, ты про видеокарты, а не про процессоры?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено SteamPlay43 19-05-2015 в 17:28:

Ku2zoff У моего нетбука на Intel Atom хл работал лучше в д3д

Добавлено 19-05-2015 в 23:24:

Ku2zoff А может быть у него графика в северный мост встроена?)

Добавлено 19-05-2015 в 23:27:

~ X ~ Ты наверное не имел дело с интеловким продуктом, хотя процессорная графика на самом деле его слабое место.

Добавлено 19-05-2015 в 23:28:

Ku2zoff На атоме кстаи идёт кое как ку 3, rtcw и конечно же xash, у меня он выдавал вплоть до 60 фпс


Отправлено Ku2zoff 19-05-2015 в 20:05:

Цитата:
SteamPlay43 писал:
и конечно же xash, у меня он выдавал вплоть до 60 фпс

Халфа у меня выдаёт слайдшоу в мультиплеере с 10 ботами - нагрузка идёт всего на 1 из 4 ядер, а частотка у ядра, на минуточку, 1.83 Ггц в турбо бусте. БИОС новый, поэтому проц гонится до этой частоты недолго, через пару минут начинает сбрасывать частоту, чтобы не перегреться. Со старым БИОСом Dell Venue 8 Pro можно было разгонять до неприличных температур, см. 4pda. Видеоядро в атомах Z3XXX откровенно слабое для 3д графики, но видео 1080р гоняет на ура. Сингловая халфа на планшете идёт у меня относительно неплохо. Сейчас ради интереса замерю фпс.

Добавлено 20-05-2015 в 01:07:

Вот вам видос геймплея с моего Dell Venue 8 Pro:

Модель с процем Intel Atom Z3745D, конца 2014 года. fps_max 50, всинк отключен, стоит галка "Low video quality". Запись видео слегка снизила фпс, без записи стабильно 40-50 (самое главное - нет фризов, потому что накопитель не занят записью видео), в сложных сценах проседает до 30, особенно когда много гибсов в кадре, или освещение нестатичное. С всинком фпс значительно сильнее проседает в сложных местах. Без ограничителя фпс выдаёт от 140-150, с проседаниями до заявленных выше 40-50.

Добавлено 20-05-2015 в 01:14:

Будет время, запишу вам видос подлиннее, со счётчиком фпс. Откуда-нибудь из главы "We've got hostiles", где много перестрелок с грантами, там точно будет проседать сильнее.

Добавлено 20-05-2015 в 02:05:

Цитата:
SteamPlay43 писал:
А может быть у него графика в северный мост встроена?)

Возможно. Учитывая что дискретная видеокарта старая и процессор старый, можно предположить, что и материнская плата тоже 5-ти летней давности. Это сейчас графику встраивают в процессор. Даже в такой, в котором она сто лет не нужна. К примеру, топовые i5-i7 и A8-A10. Процессоры мощные и игры тянут, но граф. ядро в них слабое. Проц дешевле + средняя современная видеокарта = такие же деньги, а производительность выше.


Отправлено KiQ 19-05-2015 в 22:14:

Ku2zoff встроенная видюха нужна в первую очередь для офисных компов и ноутов. Вот у меня радеон дискретный сгорел, так спасибо хоть, что можно на встроенной сидеть.

__________________
-Brain is dead-


Отправлено Ku2zoff 19-05-2015 в 22:44:

Цитата:
KiQ писал:
в первую очередь для офисных компов и ноутов.

Ну а для чего ж ещё? Странно, что производители пытаются позиционировать встроенную графику как альтернативу low- и middle-end дискретным видеокартам. Low-end вполне сопоставим со встраиваемой графикой, это зависит от конкретной игры и комплектующих компьютера. Но Middle-end выигрывает у встроенной графики, как ни крути. Про hi-end вообще молчу, такие видеокарты уделают любое видеоядро в процессоре.
Мне довелось сравнить встроенную в мат. плату видеокарту (GF 7050m-m) и GF GT220. Двести двадцатая выиграла. На ней я гамал в игры на движке УТ3 с фпс от 30 до 60 и выше. Встроенная выдавала не более 15. Ещё на работе погонял Intel Celeron G530 c Intel HD Graphics. Этот не такой уж устаревший процессор, как процессор справляется на ура. А вот графика - увы и ах... Даже в халфе есть проседания до 30 фпс.

Добавлено 20-05-2015 в 04:44:

А на GT-220 никогда не было проседаний в халфе. В обычных сценариях, конечно. Я сейчас умудряюсь свою GTX 760 просаживать до 25 фпс, подходя близко к стене, на которой более 5ти декалей крови. Ну и всякие трините и альтернате вей моды тоже. Что интересно, ХЛФХ 0.5, ХЛФХ: сингл демо и ХЛФХ: ЛБМ идут чище некуда. Проседания происходят только когда есть нагрузка на ЦП. Отсутствие многопоточности в халфе играет свою роль.


Отправлено KiQ 19-05-2015 в 22:46:

Ku2zoff так я и говорю. При этом не стоит забывать, например, что даже дискретные видеокарты в ноутбуках, например M-серия у радеонов, также отличаются от десктопных аналогов, то есть, HD6770M проигрывает обычной HD6770, связано это с электропотреблением и теплоотдачей

__________________
-Brain is dead-


Отправлено Ghoul [BB] 20-05-2015 в 07:27:

А давайте реренесем обсуждение видеокарт и показателей графики в отдельную тему, а?
эта тема несколько не про это....

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ~ X ~ 20-05-2015 в 11:38:

Цитата:
XaeroX писал:
Надеюсь, ты про видеокарты, а не про процессоры?

Ты ведь в курсе, что inhell - это ещё и сетевое говно, и чипсетное говно, и беспроводное говно, и сервачное говно, и ещё 9000 говн?
Так вот - оно ВСЁ говно.

Цитата:
SteamPlay43 писал:
Ты наверное не имел дело с интеловким продуктом

Наверное, я просто так сказал, что у меня интеловкий ноут сгорел на днях, да?

Ghoul [BB] да у нас уже все темы про говно )

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено SteamPlay43 21-05-2015 в 04:48:

~ X ~ Что значит интеловкий ноут? У меня самого уже третий ноут с процессором от Интел и т.п, но ничего не горело, это ты наверное сам его сжёг)

Добавлено 21-05-2015 в 10:41:

Ku2zoff Я тебе предлагаю погонять в халфу под ксашем на твоём нетбуке, он у тебя летать будет, у моего нетбука вообще был атом на 1.66 Ггц

Добавлено 21-05-2015 в 10:48:

Ku2zoff http://www.notebook.ru/notebook/ace...d250-0bqw-4538/
Вот такой был нетбук


Отправлено ~ X ~ 21-05-2015 в 11:23:

SteamPlay43 intel fanboy detected.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено SteamPlay43 21-05-2015 в 11:40:

~ X ~ С чего это? Я радеоны тоже уважаю


Отправлено XaeroX 21-05-2015 в 12:54:

Цитата:
~ X ~ писал:
Ты ведь в курсе, что inhell - это ещё и сетевое говно, и чипсетное говно, и беспроводное говно, и сервачное говно, и ещё 9000 говн?
Так вот - оно ВСЁ говно.

Я в курсе, что у интела офигенные процессоры, которыми я пользуюсь уже 15 лет, и ни один не заглючил до самой процессорной старости (то бишь глобального апгрейда системника).
Цитата:
~ X ~ писал:
Наверное, я просто так сказал, что у меня интеловкий ноут сгорел на днях, да?

Меня всегда интересовало, где люди покупают комплектуху, которая ГОРИТ? На горбушке? У меня сгорела всего один раз видеокарта, потому что я забыл отключить от неё кабель доп.питания и тестировал материнку без охлаждения северника. Но это так, рискованные эксперименты, там всякое бывает.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ghoul [BB] 21-05-2015 в 13:43:

Цитата:
~ X ~ писал:
Ghoul [BB] да у нас уже все темы про говно



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

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ~ X ~ 22-05-2015 в 10:28:

Цитата:
XaeroX писал:
Я в курсе, что у интела офигенные процессоры, которыми я пользуюсь уже 15 лет

Не могу найти статью, которая наградила горе2дуо званием "самый забагованный проц в истории". И это, кстати, правда. И заодно - самый популярый проц среди быдла.
Вот, кстати, тебе весёлая страничка:
http://undeadly.org/cgi?action=arti...panded&count=14

Про выгорание серверных чипсетов - вообще отдельная тема. Там у интелу ненависть просто колоссальная (тем не менее, закупают). Из первых уст самого крупного в РФ сборщика/производителя серверных и дом.компов мне стало известно, что "хуже материнок от интел - нет ничего." (лучшим назвали супермикро).

А у меня уже дважды горел чипсет и vrm в ноутах. Оба раза одно и то же. Асус скрывает, но если в аккуме/подсистеме питания не сработает софтовая вырубалка по разряду батареи, всё къедреням сдыхает. Т.е. если в венде, например, отключить действия при разряде батареи.
П 50% случаев прошивка не успевает сработать и вы получаете кирпич.

Кстати, мож, хватит флуда? А то фантом обидится.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 22-05-2015 в 10:32:

Цитата:
~ X ~ писал:
которая наградила горе2дуо званием "самый забагованный проц в истории"

Ага, а в первом пентиуме был баг с FDIV. Это всё мне известно. Но я ведь не говорил, что интеловские процессоры идеальные. Я сказал, что они лучшие.
Цитата:
~ X ~ писал:
Кстати, мож, хватит флуда? А то фантом обидится.

И то правда.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ~ X ~ 22-05-2015 в 10:39:

XaeroX по кол-ву багов интел никто ещё не обошёл. FDIV - только ОДИН баг. Из тыщ мильонов.

Кажись, у фантома каникулы Или творческий кризис. Или наоборот - стало всё понятно

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 22-05-2015 в 10:49:

~ X ~
Ну понятное дело, у AMD багов нет.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 22-05-2015 в 14:27:

нужна помощь
не могу создать первичную атаку в medkit как в sven coop
что делать ?


Отправлено Ku2zoff 22-05-2015 в 15:42:

***FantoM*** я тебе сейчас дам кусочек кода от инженерного ключа, который добавляет броню союзникам и бьёт врагов.

C++ Source Code:
1
float CWPNSpanner::Attack(BOOL bSecondary)
2
{
3
  TraceResult tr;
4
 
5
  UTIL_MakeVectors(m_pPlayer->pev->v_angle);
6
  Vector vecSrc = m_pPlayer->GetGunPosition();
7
  Vector vecEnd = vecSrc + gpGlobals->v_forward * SPANNER_DISTANCE;
8
 
9
  UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, ENT(m_pPlayer->pev), &tr);
10
 
11
#ifndef CLIENT_DLL
12
  if (tr.flFraction >= 1.0)
13
  {
14
    UTIL_TraceHull(vecSrc, vecEnd, dont_ignore_monsters, head_hull, ENT(m_pPlayer->pev), &tr);
15
    if (tr.flFraction < 1.0)
16
    {
17
      CBaseEntity *pHit = CBaseEntity::Instance(tr.pHit);
18
 
19
      if (!pHit || pHit->IsBSPModel())
20
        FindHullIntersection(vecSrc, tr, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, m_pPlayer->edict());
21
 
22
      vecEnd = tr.vecEndPos;
23
    }
24
  }
25
#endif
26
 
27
  m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
28
  m_pPlayer->SetAnimation(PLAYER_ATTACK1);
29
 
30
  // переменные для эвента и времени атаки
31
  int m_iHit;
32
  int m_iHitWorld;
33
  int m_iAllyPlayer = FALSE;
34
  float m_flDelay = 1;
35
 
36
  if (tr.flFraction >= 1.0) // мимо
37
  {
38
    m_iHit = FALSE;
39
    m_iHitWorld = FALSE;
40
    m_flDelay = 0.6;
41
  }
42
  else // удар
43
  {
44
    m_iHit = TRUE;
45
    m_iHitWorld = TRUE;
46
 
47
#ifndef CLIENT_DLL
48
    CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);
49
 
50
    if (bSecondary)
51
    {
52
      CBasePlayer *pPlayer = (CBasePlayer *)pEntity;
53
 
54
      if (pPlayer && (pPlayer->pev->team == m_pPlayer->pev->team))
55
        m_iAllyPlayer = TRUE;
56
    }
57
 
58
    if (m_iAllyPlayer)
59
    {
60
      CBasePlayer *pPlayer = (CBasePlayer *)pEntity;
61
 
62
      pPlayer->i_ArmorHelmet += SPANNER_ARMOR_ADD;
63
      pPlayer->i_ArmorVest += SPANNER_ARMOR_ADD;
64
      pPlayer->i_ArmorScutes += SPANNER_ARMOR_ADD;
65
 
66
      if (pPlayer->i_ArmorHelmet > 100)
67
        pPlayer->i_ArmorHelmet = 100;
68
      if (pPlayer->i_ArmorVest > 100)
69
        pPlayer->i_ArmorVest = 100;
70
      if (pPlayer->i_ArmorScutes > 100)
71
        pPlayer->i_ArmorScutes = 100;
72
 
73
      if (pPlayer->i_ArmorHelmet == 100 &&
74
      pPlayer->i_ArmorVest == 100 &&
75
      pPlayer->i_ArmorScutes == 100)
76
      m_iHit = FALSE;
77
    }
78
    else
79
    {
80
      // нам не нужно кускование с одного удара по башке
81
      int bitsDamage;
82
 
83
      if (pEntity->IsAlive())
84
        bitsDamage = DMG_CLUB | DMG_NEVERGIB;
85
      else
86
        bitsDamage = DMG_CLUB;
87
 
88
      ClearMultiDamage();
89
      pEntity->TraceAttack(m_pPlayer->pev, SPANNER_DMG, gpGlobals->v_forward, &tr, bitsDamage);
90
      ApplyMultiDamage(m_pPlayer->pev, m_pPlayer->pev);
91
    }
92
 
93
    if (pEntity)
94
    {
95
      if (pEntity->Classify() != CLASS_NONE && pEntity->Classify() != CLASS_MACHINE)
96
        m_iHitWorld = FALSE;
97
    }
98
#endif
99
    m_flDelay = 0.4;
100
  }
101
 
102
  PLAYBACK_EVENT_FULL(0, m_pPlayer->edict(), m_usSpannerAttack, 0.0, (float *)&g_vecZero, (float *)&g_vecZero,
103
  0.0, 0.0, 0, m_iAllyPlayer, m_iHit, m_iHitWorld);
104
 
105
  if (m_iHit && m_iHitWorld)
106
    UTIL_DecalTrace(&tr, DECAL_GUNSHOT1 + RANDOM_LONG(0, 4));
107
 
108
  m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + m_flDelay + 0.5;
109
 
110
  return m_flDelay;
111
}

Маленькое пояснение: первичная атака всегда наносит урон, даже союзникам, когда mp_friendlyfire 1. Вторичная бьёт только врагов, а союзникам добавляет броню. Самое главное, что ты тут можешь посмотреть, это как определить врага/союзника, и как этим оперировать. Код старый, тебе стоило бы заменить
C++ Source Code:
if (pPlayer && (pPlayer->pev->team == m_pPlayer->pev->team))

на
C++ Source Code:
if (g_pGameRules->PlayerRelationship((CBaseEntity *)m_pPlayer, pEntity) == GR_TEAMMATE)

Остальное тебе надо додумать самому. Я в свен не играл, и не уверен, работает там аптечка так же как в TFC или нет. Но код вот этой атаки в режиме вторичной совпадает с логикой из TFC: своих лечим - врагов калечим.


Отправлено ***FantoM*** 23-05-2015 в 05:31:

Ku2zoff
вот видео из свен купа https://www.youtube.com/watch?v=o8jRc7WbT8s


Отправлено Ku2zoff 23-05-2015 в 08:28:

Ну так бы сразу и написал, что оживление нужно. Сложновато, но реализуемо. Придётся писать новые таски и скедьюлы для монстров. (Task и Schedule). Дерзай. schedule.cpp и monsters.cpp, там расположен этот код.


Отправлено ***FantoM*** 23-05-2015 в 08:40:

понятно


Отправлено SteamPlay43 24-05-2015 в 07:02:

Ku2zoff А нельзя просто проверку на смерть сделать? Мне кажется, это тогда просто подбавит трупам здоровья и все)


Отправлено Ghoul [BB] 24-05-2015 в 20:18:

И как вы собираетесь трупы оживлять? С помощью аптечки?! Не смешите!
Я уж молчу про то, что с фрагом делать? Отнимать при оживлении, да?!

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 24-05-2015 в 20:40:

Цитата:
SteamPlay43 писал:
А нельзя просто проверку на смерть сделать? Мне кажется, это тогда просто подбавит трупам здоровья и все)

Неа. Если монстр умер, простым прибавлением здоровья не отделаешься. Здоровья ты ему прибавишь, но он всё равно будет мёртв. Надо его заново спавнить как минимум. Ну или новые таски выполнять на оживление, так красивее будет, он и анимацию проиграет, и спасибо скажет. Если сам не решишь, то может быть я накодю такую штуку. Т.к. аптечку у себя в моде буду делать скоро.


Отправлено Superuser8 24-05-2015 в 21:33:

Ku2zoff хотелось бы взглянуть на такую систему ( для игрока такое ещё бы было )


Отправлено Vadiman 25-05-2015 в 18:12:

Ребят, раз тут нубские вопросы проскакивали, я бы хотел спросить: можно ли сделать так, что пока игрок держит оружие, на него не действовал определенный дамаг от trigger_hurt (dmg_nervegas, например) ?


Отправлено Ku2zoff 25-05-2015 в 20:23:

Vadiman конечно. В функции триггера CBaseTrigger::HurtTouch делаешь проверку типа:

C++ Source Code:
1
if (pOther->isPlayer())
2
{
3
  CBasePlayer *pPlayer = (CBasePlayer*)pOther;
4
  if ((pPlayer->m_pActiveItem->m_iId == WEAPON_MP5) && (m_bitsDamageInflict & DMG_NERVEGAS))
5
  {
6
    твоё условие
7
  }
8
}


Отправлено Vadiman 25-05-2015 в 21:50:

Ku2zoff спасибо большое
Сделал противогаз на основе оружия (либо он, либо ствол), потому как не смог разобраться как оно в параное работает.


Отправлено ***FantoM*** 26-05-2015 в 10:37:

нужна помощь
меня заинтересовал VGUI
у меня вопрос
как закруглить вгуи


Отправлено XaeroX 26-05-2015 в 10:57:

***FantoM***
Никак, в вгуи таких функций нет.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 26-05-2015 в 11:13:

***FantoM*** во вгуи1 точно такой функции нет. Во вгуи2, может быть есть, хотя ХЗ, наверное там вручную сделано, как я сейчас покажу. Короче, что можно сделать: рисуешь как на картинке, три панели, наложенные друг на друга, а в углы, где красные кружки, крепишь ТГАшки с альфаканалом и такой же прозрачностью, как у панелей. ТГАшки спереть можешь из КС.

http://pix.academ.org/img/2015/05/26/4eb4164eedc218836999412e4fcb1e3f.jpg


Отправлено ***FantoM*** 26-05-2015 в 11:15:

XaeroX
а в Counter-Strike 1.6 вроде закругленный вгуи ?


Отправлено Ku2zoff 26-05-2015 в 11:16:

З.Ы. можно обойтись двумя панелями, ну ты понял кароч. Это я с дуру три почему-то нарисовал.


Отправлено ***FantoM*** 26-05-2015 в 11:18:

Ku2zoff
как бы понятно


Отправлено SteamPlay43 26-05-2015 в 12:41:

Ku2zoff Я про это и говорил, ведь даже у трупов есть хп)

Добавлено 26-05-2015 в 18:41:

Ku2zoff Помню как сорс с недостачей ресурсов запускал, там вместо округления были выкусаны квадраты)


Отправлено Ku2zoff 26-05-2015 в 15:25:

Цитата:
***FantoM*** писал:
а в Counter-Strike 1.6 вроде закругленный вгуи ?

Там ТГАшки скруглённые на углах. Может быть сделано как в моём способе, а может быть вгуи2 автоматом откусывает уголки у панелей.

Добавлено 26-05-2015 в 21:25:

***FantoM*** можешь не париться так. Нарисуй для каждого разрешения по ТГАшке со скруглёнными краями и крепи к полностью прозрачной панели. Координаты подгонишь для каждого разрешения.


Отправлено Vadiman 26-05-2015 в 17:41:

Ku2zoff проверку по твоему совету осуществил, но вот условие нормальное не могу описать, то не работает, то вылетает. Как грамотно описать полный игнор игроком урона?


Отправлено Ku2zoff 26-05-2015 в 17:45:

return туда поставь и всё. Только в начале функции, после условия

C++ Source Code:
if ( (pev->spawnflags & SF_TRIGGER_HURT_NO_CLIENTS) && pOther->IsPlayer() )
  return;

Вот так:
C++ Source Code:
1
if (pOther->isPlayer())
2
{
3
  CBasePlayer *pPlayer = (CBasePlayer*)pOther;
4
  if ((pPlayer->m_pActiveItem->m_iId == WEAPON_GASMASK) && (m_bitsDamageInflict & DMG_NERVEGAS))
5
  {
6
    return;
7
  }
8
}


Отправлено Vadiman 26-05-2015 в 20:55:

Ku2zoff
Спасибо, теперь все как надо) Только если я подойду к триггеру не имея маски вообще, то вылечу с ошибкой.
Отладчик указывает на строчку

C++ Source Code:
if ((pPlayer->m_pActiveItem->m_iId == WEAPON_MASK) && (m_bitsDamageInflict & DMG_NERVEGAS))


Добавлено 26-05-2015 в 23:55:

Проблему решил. Если кому-то понадобится, то вот код, который не приводит к вылету:
C++ Source Code:
1
if ( pOther->IsPlayer() )
2
{
3
  CBasePlayer *pPlayer = (CBasePlayer*)pOther;
4
  if( (pPlayer->m_pActiveItem ) &&( pPlayer->m_pActiveItem->m_iId == WEAPON_MASK ) &&(m_bitsDamageInflict & DMG_NERVEGAS))
5
  {
6
    return;
7
  }
8
}


Отправлено ***FantoM*** 28-05-2015 в 17:58:

я лазил по форуму и наткнулся на этот тутор Глушитель для M4A1
и у меня возник вопрос
как вместо анимации менять суб модель(Sub-model) ?


Отправлено Vadiman 28-05-2015 в 22:06:

У меня тоже вопрос есть. Т.к у меня маска реализована оружием, то в секции weapon_idle я сделал звуки дыхания для гг. Но, как только я беру маску в руки, гг дышит, а если сменить маску на какое-либо оружие, потом обратно, то звуки дыхания уже не слышны(

C++ Source Code:
1
void CMaskGun::WeaponIdle( void )
2
{
3
  if ( m_flTimeWeaponIdle >= UTIL_WeaponTimeBase() )
4
    return;
5
  switch ( RANDOM_LONG(0,3) )
6
  {
7
  case 0:
8
      EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/pl_mbreathe1.wav", 1, ATTN_NORM);
9
    break;
10
  case 1:
11
      EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/pl_mbreathe2.wav", 1, ATTN_NORM);
12
    break;
13
  case 2:
14
      EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/pl_mbreathe3.wav", 1, ATTN_NORM);
15
    break;
16
  }
17
  m_flTimeWeaponIdle = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 2, 4 );


Отправлено ***FantoM*** 29-05-2015 в 19:41:

вопрос № 2
как в VGUI растянуть tga по всей панели ?


Отправлено PLut 29-05-2015 в 20:22:

Vadiman

C++ Source Code:
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 2, 4 );


Ну и засунь этот код куда-нибудь в конец PrimaryAttack() тоже.

__________________
Base Defense on Steam, ModDB


Отправлено Vadiman 29-05-2015 в 21:05:

PLut Не помогло. Да и я убирал праймари-атаку от туда, на маске она не нужна


Отправлено PLut 29-05-2015 в 21:14:

Vadiman Хм... Недавно сам разбирался почему правильно анимации айдла не воспроизводит у меня в моде, закончилось тем, что отрезал нахрен клиентские пушки и всё, что с ними связано. Вечно были какие-то рандомные баги с правильным получением времени в пушках, то все патроны вылетают за секунду, то еще чего. В одних случаях работал gpGlobals->time, а в других UTIL_WeaponTimeBase(). И плевать, что по сути это одно и то же.

Чего просто не вытащишь противогаз из паранойи? Там делов то на 5 минут.

__________________
Base Defense on Steam, ModDB


Отправлено Vadiman 29-05-2015 в 21:18:

PLut Я пытался, но не смог разобраться до конца. Там хаки какие-то применялись, это мне пока не по зубам. Хотя конечно ты прав, делать противогаз на основе оружия идиотизм, но маска от газа сейчас защищает))


Отправлено PLut 29-05-2015 в 21:21:

Vadiman Ты под хаками подразумеваешь создание энтити для определения освещенности игрока? Можно рисовать противогаз и не учитывать освещение игрока, это было сделано чтобы пыль на стекле противогаза получала цвет и яркость от источника света, выглядит довольно круто, но сомневаюсь, что многие просекли эту фишку.

__________________
Base Defense on Steam, ModDB


Отправлено Vadiman 29-05-2015 в 21:24:

PLut Там много хитростей было. У меня была единственная ругань компилятора на "pl->m_pActiveItem->GetMode();". Плюс надо было еще приделать модель противогаза на фейс, вместо спрайта


Отправлено PLut 29-05-2015 в 21:27:

Vadiman Это проверка на прицел оптический, т.е. мы не можем одеть противогаз, если прицеливаемся через оптику. А модель пришпандорить - взять код щитка на шлеме.

__________________
Base Defense on Steam, ModDB


Отправлено Vadiman 29-05-2015 в 21:35:

PLut Где то я ее прошляпил, что не убрал. А как ее присобачить от щитка? Там Базер столько расписал.... Хотя, тут же недавно тутор по ногам для гг добавили, на его основе можно конечно попробовать...


Отправлено PLut 29-05-2015 в 21:43:

Vadiman Выдираешь щиток, да и всё, после чего уже мелочи: поменять модельку и добавить защиту от повреждений.
А вот это не стоит. Логичнее брать то, что больше тебе подходит под нужные цели.

__________________
Base Defense on Steam, ModDB


Отправлено Vadiman 29-05-2015 в 21:53:

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


Отправлено PLut 29-05-2015 в 21:56:

Vadiman Этого не знаю, завтра, может быть, посмотрю.

__________________
Base Defense on Steam, ModDB


Отправлено Vadiman 29-05-2015 в 23:18:

PLut Блин, не могу заставить работать маску из паранои, я оставлю это дело...


Отправлено Ku2zoff 30-05-2015 в 05:08:

Цитата:
PLut писал:
В одних случаях работал gpGlobals->time, а в других UTIL_WeaponTimeBase(). И плевать, что по сути это одно и то же.

Не одно и то же. gpGlobals->time - текущее время на сервере. Соответственно, от него должны плясать все серверные отсчёты. UTIL_WeaponTimeBase() возвращает gpGlobals->time при отключенных клиентских пушках, а при включенных возвращает 0. Его в таком виде нельзя использовать для некоторых фич (которые, внимание! Делаются на сервере), например для задержки перед выбрасыванием пустого магазина после перезарядки (см. выбрасывание гильз после перезарядки питона в Дядь Мишиных спиритах). При включенных клиентских пушках конечно. Для таких фич нужны зеркала на клиенте. Ну либо переписывать всю систему локальных оружий в hl_weapons.cpp.


Отправлено PLut 30-05-2015 в 07:08:

Ku2zoff Ужасы какие. Благодарю за объяснение, но факт есть фактом, что работало это через одно место.

__________________
Base Defense on Steam, ModDB


Отправлено JPEG 30-05-2015 в 12:05:

Ребят, как запретить использовать ноклип в сингле (ну или вообще запретить команду sv_cheats 1) и убрать команду куиксейва? Как разрешить ноклип в мп?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Chyvachok 30-05-2015 в 12:28:

Yo Den может это не мое дело, но ИМХО убирать ноклип и квиесейвы хреновая идея, первое помогает когда игрок застрял в лифте, баг движка халвы ну и когда совсем не понятно куда идти полетать вокруг карты, вдруг не приметную вентиляцию или щель пропустил, если сильно захотеть зачитерить всегда можно, а квиксейвы для большинства игроков настолько привычная вещь что грех ее убирать, чекпоинты - зло. А вообще можно поискать в коде слова noclip и для квиксейва команду, а там что надо просто кусок кода закоментить.


Отправлено KiQ 30-05-2015 в 13:08:

Yo Den ты лучше умно стимулируй игроков реже пользоваться квиксейвом, статистику там заведи какую-нибудь

__________________
-Brain is dead-


Отправлено Ku2zoff 30-05-2015 в 15:19:

Цитата:
Yo Den писал:
(ну или вообще запретить команду sv_cheats 1

В клиентской дллке надо в какую-нибудь функцию, что вызывается каждый кадр, например CHud::Redraw или CHud::Think вставить проверку
C++ Source Code:
if (CVAR_GET_FLOAT("sv_cheats") != 0)

Ну и при этом условии отправлять команду на сервер sv_cheats 0. Пардон, я щас пьяный, подробнее не распишу, т.к. СДК нет под рукой, и вспомнить не могу.


Отправлено JPEG 30-05-2015 в 20:03:

Цитата:
Chyvachok писал:

первое помогает когда игрок застрял в лифте, баг движка халвы ну и когда совсем не понятно куда идти полетать вокруг карты, вдруг не приметную вентиляцию или щель пропустил


это всё из-за невежественного маппинга
Цитата:


Chyvachok писал:

квиксейвы для большинства игроков


квиксейвы в хл рушат скриптовые сценки, музыку, декали и прочее. В чём кайф, когда можно каждую секунду сохранять игру, всю атмосферу портит, как год, гораздо лучше будет куча чекпоинтов, с детства к ним привык. Хотя было бы ограниченное количество квиксейвов на, допустим, определённый период времени или на уровень, было бы круче даже.
Цитата:
KiQ писал:


для квиксейва команду

в сорцах
Цитата:
Chyvachok писал:
не находит такого, поэтому и спрашиваю(

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

это будет неоправданно сложно

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 30-05-2015 в 20:53:

Цитата:
Yo Den писал:
с детства к ним привык

Тяжёлое, наверное, детство было?
Я в игры без квиксейва не играю принципиально. Исключение - только шедевры навроде Enclave. А так - терпеть не могу проходить одно и то же сложное место по сто раз только потому, что реакция недостаточно быстрая.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено JPEG 30-05-2015 в 21:41:

Цитата:
XaeroX писал:
Тяжёлое, наверное, детство было

приставочное

Добавлено 31-05-2015 в 00:41:

Цитата:
XaeroX писал:
не играю принципиально

Даже в гта? Представляю себе какой-нибудь нфс с куиками)

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 30-05-2015 в 21:52:

Цитата:
Yo Den писал:
Даже в гта?

Для вайс сити я сделал исключение - прошёл с читами.
А так - не играю.
Цитата:
Yo Den писал:
Представляю себе какой-нибудь нфс с куиками)

А ты, фантазёр!
Я думал, мы тут про экшоны говорим.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено JPEG 31-05-2015 в 01:07:

Цитата:
XaeroX писал:
мы тут про экшоны говорим.

да не, я не писал, что именно для экшена

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Crystallize 04-06-2015 в 17:02:

Как сделать плавный поворот монстра при слежении за игроком? А то он поворачивается рывками градусов по 10.


Отправлено Ku2zoff 04-06-2015 в 17:19:

Crystallize у монстра есть анимации поворота? С активностями ACT_TURN_LEFT/ACT_TURN_RIGHT? Можно попробовать накодить новую активность для разных углов поворота, см. функцию void CBaseMonster :: SetTurnActivity ( void ).


Отправлено Crystallize 04-06-2015 в 18:04:

Цитата:
Ku2zoff писал:
Crystallize у монстра есть анимации поворота? С активностями ACT_TURN_LEFT/ACT_TURN_RIGHT? Можно попробовать накодить новую активность для разных углов поворота, см. функцию void CBaseMonster :: SetTurnActivity ( void ).


Уточню, мне не важен внешний вид, дело в том что я через Ксаш прицепил к учёному камеру, и хотял бы чтобы он при слежении за Фриманом обновлял свой yaw в каждом кадре.
UPDATE: ну и yaw прицепленной к нему камеры, конечно.


Отправлено ***FantoM*** 04-06-2015 в 18:10:

Crystallize
анимацию можно через MilkShape 3D изменить


Отправлено ~ X ~ 04-06-2015 в 18:57:

Цитата:
Ku2zoff писал:
клиентской дллке надо в какую-нибудь функцию, что вызывается каждый кадр, например CHud::Redraw или CHud::Think вставить проверку
C++ Source Code:
if (CVAR_GET_FLOAT("sv_cheats") != 0)


))))))))))))))))))) РЖУНИМАГУ!!

>> клиентской дллке
>>> sv_cheats

не, чо, правда заработает?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 04-06-2015 в 19:18:

~ X ~ а, ну да
Для сингла должно. А православно надо в CBasePlayer::PostThink, к примеру, проверку делать.


Отправлено Crystallize 05-06-2015 в 06:17:

Цитата:
Ku2zoff писал:
В клиентской дллке надо в какую-нибудь функцию, что вызывается каждый кадр, например CHud::Redraw или CHud::Think

А как ты это понял?


Отправлено ~ X ~ 05-06-2015 в 07:56:

Crystallize это плохой метод. Если надо - суй в StartFrame() на сервере. Но только не в CBasePlayer().
Я бы схитрил и перерегистрировал команду noclip/save где-нибудь. Кроме того, сейвы можно элементарно запретить через DispatchSave().

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 05-06-2015 в 08:48:

~ X ~ а чем плох CBasePlayer? Я в него проверку на sv_cheats переместил из прекэша мира. Работает как в хл2, карту не надо перезапускать.


Отправлено JPEG 05-06-2015 в 09:47:

Цитата:
Ku2zoff писал:
~ X ~ а чем плох CBasePlayer? Я в него проверку на sv_cheats переместил из прекэша мира. Работает как в хл2, карту не надо перезапускать.

твой способ пока не проверял, позже отпишу. Но чисто для себя, просто интересно: а зачем вообще тебе команда св_читс, ведь если ты открыл консоль, то логично, что ты сейчас введешь чит, а если просто какой-нибудь бинд, то активный св-читс не помешает. Т.е. не легче прописать в аутоэгзец св-читс 1, чтобы он был активным всегда? Заодно и перезагружать не надо будет карту, имхо сама команда разрешения читов это пережиток прошлого в виде квейка и дума, да и там её наличие не понятно

Добавлено 05-06-2015 в 12:47:

Для мп может быть команда полезна, но ведь тот же ноклип и год в мп не работают даже с св-читс 1

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 05-06-2015 в 10:20:

Цитата:
Yo Den писал:
а зачем вообще тебе команда св_читс, ведь если ты открыл консоль, то логично, что ты сейчас введешь чит, а если просто какой-нибудь бинд, то активный св-читс не помешает.

В мульте работает impulse 101 при активном sv_cheats. Запретить, чтобы школие не бесилось. Воообще, если меня хватит на сингл, то разрешу читы только в нём. А в мульте воткну ограничители на всякие квары, засчёт которых можно читерить. Ну вот к примеру sv_airaccelerate. Даже в КС при отрицательном значении, к примеру -100, позволяет в прыжке пролетать полкарты.


Отправлено JPEG 05-06-2015 в 10:26:

Цитата:
Ku2zoff писал:
В мульте работает impulse 101 при активном sv_cheats. Запретить, чтобы школие не бесилось. Воообще, если меня хватит на сингл, то разрешу читы только в нём. А в мульте воткну ограничители на всякие квары, засчёт которых можно читерить. Ну вот к примеру sv_airaccelerate. Даже в КС при отрицательном значении, к примеру -100, позволяет в прыжке пролетать полкарты.

ну и с св_гравити таже история. Хотя лучше вообще запрещать консоль в мп, всякие бинды на распрыжки, закупки (если они стоят не у всех игроков) - тоже читерство, но консоль я умею только в сингле отрубать. Всё что нужно игроку, даже теже бинды, спокойно ставятся в меню

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 05-06-2015 в 10:30:

Я считаю, что Вэлв допустили грубейшую ошибку, зашив в движок те квары, которые не имеют к нему отношения. Noclip, god, mp_footspets, sv_cheats, например. Ими можно свободно оперировать внутри ддлок, отключая их воздействие, в коде pm_shared и проч. Но совсем вырезать их нельзя. Вообще, разрабы нагородили тупейший огород, чтобы прополоть который нужны десятки хаков. Ну вот нафиг mp_footsteps в движке, если проверка на проигрывание звуков продублирована в pm_shared? Да, квар глушит шаги. А если я хочу, чтобы шаги всегда были слышны?


Отправлено ***FantoM*** 05-06-2015 в 13:09:

я делаю фотокамеру на основе оружия и у меня проблема
как сделать так чтобы через PrimaryAttack активировалось команда snapshot


Отправлено SteamPlay43 05-06-2015 в 14:57:

***FantoM*** Используй лучше команду screenshot


Отправлено Madara88 05-06-2015 в 15:01:

SteamPlay43 это одно и тоже.


Отправлено SteamPlay43 05-06-2015 в 15:06:

Madara88 screenshot делаеть снимок в формате .tga и с лучшим касеством)

Добавлено 05-06-2015 в 21:06:

Madara88 А снап .bmp


Отправлено ***FantoM*** 05-06-2015 в 15:08:

SteamPlay43
значит screenshot лучше чем snapshot


Отправлено SteamPlay43 05-06-2015 в 15:12:

Madara88

] screenshot
Wrote HalfLife00.tga
] snapshot

Добавлено 05-06-2015 в 21:12:

***FantoM*** Тебе решать


Отправлено XaeroX 05-06-2015 в 16:21:

Главное отличие - куда сохраняется файл. В папку мода или в папку с hl.exe.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено JPEG 05-06-2015 в 17:29:

Цитата:
SteamPlay43 писал:
Madara88 screenshot делаеть снимок в формате .tga и с лучшим касеством)

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

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Vadiman 06-06-2015 в 17:55:

В консоли стал замечать такое сообщение

Цитата:
"Sentence or Pitch shift ignored. > 16 playing"

а после дисконнекта:
Цитата:
Netchan_Clear() : reliable length not 0, reliable_sequence: 3, incoming_reliable_acknowledged: 1

Что они означают? К чему могут относиться?


Отправлено ***FantoM*** 07-06-2015 в 19:53:

можно ли сделать все декали в четыре раза меньше ?


Отправлено XaeroX 07-06-2015 в 19:53:

***FantoM***
Перерисовать decals.wad можно. Увеличить разрешение (то бишь уменьшить скейл) нельзя.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено JPEG 07-06-2015 в 20:24:

Цитата:
***FantoM*** писал:
можно ли сделать все декали в четыре раза меньше ?

если они как в паранойе или тринити, то можно их скейлить конфигами

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ~ X ~ 08-06-2015 в 08:06:

Ku2zoff какбэ нарушаешь принципы разделения категорий ООП. Ты ж не будешь охранника предприятия только потому что он круглосуточно на работе заставлять принимать почтовую корреспонденцию и готовить обеды? (я надеюсь)

А ещё у тебя игроков может быть до ж.. тридцати двух т.е. И что, у тебя 32 раза в кадре будет проверяться одно и то же? Ай-яй-яй.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 08-06-2015 в 09:23:

~ X ~ ох, точно. Проверка ж для каждого игрока делается. Переместил в StartFrame. Действительно, что-то я про эту функцию не подумал. Для проверки серверных кваров - самое то место. И красиво, не затрагивает никаких классов, тчинкает по вызову движка.


Отправлено ***FantoM*** 08-06-2015 в 17:48:

у меня вопросы

вопрос первый
сколько максимум текстур можно засунуть в .wad ?

второй
какой максимальный вес вада должен быть ?

третий
какой максимальный размер текстуры можно запихать в вад ?


Отправлено Skaarj 08-06-2015 в 18:33:

У меня есть ВАД на 1810 текстур.
Есть ВАД на 245МБ.
1024х1024, такие текстуры даже работают в ХЛ1 но в софтверном режиме.


Отправлено ~ X ~ 08-06-2015 в 18:58:

Skaarj может, НЕ работают?
Мне пришлось бить на 512*512 таки чтоб всё работало. (см. DOM_SunDen). А так - текстура была 4096 или 8192 в квадрате... Главное gl_max_size в игре не забыть.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Skaarj 08-06-2015 в 20:43:

~ X ~ в софтверном режиме.


Отправлено JPEG 09-06-2015 в 18:42:

Цитата:
~ X ~ писал:
это плохой метод. Если надо - суй в StartFrame() на сервере. Но только не в CBasePlayer().
Я бы схитрил и перерегистрировал команду noclip/save где-нибудь. Кроме того, сейвы можно элементарно запретить через DispatchSave().

__________________

1) Как сделать, чтобы, при написании noclip в консоли вызывалось что-либо другое (например, clear или вообще ничего)?
2) Как сделать кастомную команду для ноклипа? К примеру, noclip2

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 10-06-2015 в 04:31:

1). Сделать, чтобы вываливалось что-то можно, но команда всё равно будет работать, если не изменить код в pm_shared.c
2). ClientCommand в client.cpp. Заводишь там кастомную команду и проводишь операции с игроком. То же самое и для п. 1, только отправляешь какую-нибудь команду, которая должна вывалиться.

Добавлено 10-06-2015 в 10:31:

Цитата:
~ X ~ писал:
Кроме того, сейвы можно элементарно запретить через DispatchSave().

Лучше бы было, если бы их можно было разрешить в коопе. После каждого чейнджлевела. И запретить респаун игроков. Когда все игроки сдохли - грузим сейв, чтобы начать уровень заново с теми же параметрами.


Отправлено JPEG 10-06-2015 в 12:02:

Цитата:
Ku2zoff писал:
1). Сделать, чтобы вываливалось что-то можно, но команда всё равно будет работать, если не изменить код в pm_shared.c

типа если поставлю активацию god-режима при написании noclip, то будет включаться и то, и то?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено thambs 10-06-2015 в 12:10:

Ku2zoff
в коопе, кстати, надо weapon_healthkit и дефибрилляторы.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Ku2zoff 10-06-2015 в 16:29:

Цитата:
Yo Den писал:
типа если поставлю активацию god-режима при написании noclip, то будет включаться и то, и то?

Да. Достаточно поставить игроку флаг FL_GODMODE. А если хочешь, чтобы команда god не работала, просто удали условие
C++ Source Code:
// check for godmode or invincibility
if ( pev->flags & FL_GODMODE )
{
  return 0;
}

в функции int CBaseMonster :: TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType ) в combat.cpp

thambs дефибриляторы в баню. Вон, это в свенкоопе есть. Я хочу запретить респавн на текущей карте в коопе. Только после перехода оставшихся в живых игроков на следующий уровень. А аптечку-оружие обязательно сделаю. Точнее не аптечку, а инъектор, syringe gun то бишь.
Аптечки - это всё вторично, на самом деле, и сделать их не трудно.
Я хочу нормальный чейнджлевел с переносом всех параметров и спауном относительно лэндмарка в коопе. Накодить эдакий брашевый триггер, когда в который заходят все игроки, начинается отсчёт до чейджлевела. После отсчёта происходит чейнджлевел, и делается сейв на новой карте. Сейв накодить кастомный, прямо изнутри дллки в бинарный файл, затрагивающий только параметры игроков, их оружия, патронов и прочего. Если все игроки сдохли, то карта перезапускается, игроки респавнятся, и к ним применяются параметры из сейва. Ну и, собственно, возможность продолжить игру тем же составом, например через неделю, загрузив последний сейв.


Отправлено JPEG 10-06-2015 в 17:36:

Цитата:
Ku2zoff писал:

Я ноклип для примера привёл. Вообщем я вот, что хочу: при нажатии на кнопку консоли вызывается команда toggleconsole, которая обозначает Con_ToggleConsole_f, аналогично, как при нажатии w вызывается +forward, обозначающий IN_ForwardDown.
В движке это Cmd_AddCommand( "toggleconsole", Con_ToggleConsole_f ); А нужно что-то типа, например Cmd_AddCommand( "toggleconsole", IN_ForwardDown), то есть toggleconsole будет обозначать, например, движение вперёд. И чтобы это было не на движке, а на клиенте. Типа нужно на клиенте переопределить toggleconsole на вызов другого действия... Возможно ли это?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 10-06-2015 в 19:09:

Цитата:
Yo Den писал:
Типа нужно на клиенте переопределить toggleconsole на вызов другого действия... Возможно ли это?

Не уверен, можно ли переопределить. Добавить какое-то действие вполне можно. А вот переопределить, скорее всего нет, т.к. команда движковая и обрабатывается не в дллке.


Отправлено thambs 10-06-2015 в 20:42:

Ku2zoff
глянь как у тов. икс-вайдера ченджлевел сделан, он там очень многое в этом плане наработал (возможно, нужно попросить его выложить свежую версию).

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Ku2zoff 11-06-2015 в 06:09:

Цитата:
thambs писал:
возможно, нужно попросить его выложить свежую версию

Пусть доведёт до ума и выложит, когда будет готово. Я пока оружиями занимаюсь, мне геймрулсы не к спеху. Может недельку на это потрачу, чтобы скопипастить стволы из старых сорцев и исправить мелкие баги. Потом напишу систему классов (она ещё очень сырая в старых сорцах). Ну а потом уже геймрулсы.


Отправлено ~ X ~ 12-06-2015 в 08:47:

Yo Den вы какой-то откровенной х...ерундой занимаетесь. Вместо того чтобы консолоь отключать, сходите посуду помойте, что-ли... (пока пользователи не пришли и не покалечили)

Цитата:
Ku2zoff писал:
Потом напишу систему классов

пффххххыхыхы ))))))) Ну давай, показывай, как ты отжимаешься. Я схожу за попкорном чтоб понаблюдать за твоими страданиями.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено JPEG 12-06-2015 в 09:53:

Цитата:
~ X ~ писал:

чепуха, игрокам нафиг не нужна консоль. В нфс её не видел, в гта тоже чё-то нет её печаль, какие злые разрабы даже консоль не сделали((

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ~ X ~ 12-06-2015 в 12:23:

так это всё YOBA-игры. для умственно неразвитых
(хотя я в НФС играл, и помню, что какая-то комстрока там есть)

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено JPEG 12-06-2015 в 12:38:

Цитата:
~ X ~ писал:
так это всё YOBA-игры. для умственно неразвитых
(хотя я в НФС играл, и помню, что какая-то комстрока там есть)

Да даже Кармак сделал вызов консоли ТРЕМЯ кнопками Вот скажи, зачем игроку консоль управления? Нет, если конечно игра безбожно глючная и недоработанная, в которой за каждым углом надо вводить god, после каждого лифта noclip, после загрузки уровня выдавать оружие читами, а управление настраивается только bind'ами, то да, я согласен с тобой, игроку необходима консоль

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ~ X ~ 12-06-2015 в 16:47:

Yo Den типично яблочная логика, кстати. Зачем, действительно, консоль? Надо всё делать в рамках. А я почему-то с детства не люблю сидеть в рамках игры. Если нет классного меча в Морровинде - я его запилю и буду с ним ходить (то же самое и для всех сиквелов). Кроме того, в некоторые игры авторы не удосуживаются запилить редактор настроек, а конфиги иногда бинарные. Ещё и графику настроить не дают. Бывает, что без читов проходить игру уныло и скучно. А яблочники - это люди, которые мыслят иначе - им нравится в тёплых уютных рамках, где за них решают, что и как им делать. Так что, если автор решил, что ты не можешь прыгать набегу, то...

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 12-06-2015 в 17:27:

Цитата:
Yo Den писал:
Да даже Кармак сделал вызов консоли ТРЕМЯ кнопками

Ящитаю, это самое удачное решение. Кнопок, доступных для левой руки и так немного, вот на тильду тогда можно забиндить чятик. А тильда+шифт - консоль.
Цитата:
Yo Den писал:
Вот скажи, зачем игроку консоль управления?

Ну например, поглядеть какие-нибудь квары, не описанные в документации. Или настроить значения кваров на лету. А потом забить нужные в свой эксклюзивный конфиг.
Цитата:
Yo Den писал:
в гта тоже чё-то нет её

Главная проблема ГТА - отсутствие чекпоинтов в начале миссии. Я даже согласен на остутствие квиксейвов, чёрт с ними, если игра хорошая, как Вайс Срите и Сран Андреас. Но ехать через полштата, чтобы заново начать миссию - чистой воды мазохизм.
Цитата:
~ X ~ писал:
Я схожу за попкорном чтоб понаблюдать за твоими страданиями.

Ой, да ладно тебе Потренируюсь в кодинге чуток. У меня уже давно есть сырые версии всего, что я задумал, кроме геймрулсов с ВИПом и побегом. Сейчас застрял на ногах от первого лица, всё думаю, как бы правильнее реализовать, чтоб хаков поменьше.


Отправлено Skaarj 12-06-2015 в 17:39:

Не в консоль, а в чат надо писать/смотреть квары, как в WoW.


Отправлено ~ X ~ 12-06-2015 в 18:51:

Skaarj вот уж не соглашусь... Как вспомню DeusEx - блевать хочется. Все команды пиши руками, никаких скроллов/дополнений, никакого визуального пространства, автодополнений. Зато надо среди чата искать, что же ты ввёл и что же получил...

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 12-06-2015 в 18:55:

Цитата:
~ X ~ писал:
Как вспомню DeusEx

Зато там можно открыть менюшку с настройками чего-либо, как в анриле. По крайней мере, можно так добраться до настроек рендерера.


Отправлено Skaarj 12-06-2015 в 19:10:

~ X ~ Тебе играть или что? Запусти терминал/cmd и оттягивайся сколько влезет, раз уж так хочется.


Отправлено ~ X ~ 12-06-2015 в 21:54:

Skaarj дая как-то хотел zsh к халвовской консоли прикрутить... вернее, мне посоветовали
Кстати, хороший аргумент! Я писишник и не уважаю консольные игры потому что там нет консолей. Такие дела.

Ku2zoff ага, ПЕРВОМ анриле.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Skaarj 13-06-2015 в 05:21:

А что в ПЕРВОМ анриле? Там есть удобный "адвансед опшонс" где можно настроить всё.
http://pix.academ.org/img/2015/06/13/55ad2b1e3eb35e0ffdf3b15253605938.gif


Отправлено ~ X ~ 13-06-2015 в 05:30:

Skaarj я и говорю, что в ПЕРВОМ. А в новых быдлоанрылах - хренвам, а не адвансед опшнс. Хотя УТ2004 сам по себе ничего такой.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Skaarj 13-06-2015 в 06:05:

~ X ~ всё там есть в УТ2к4.
http://pix.academ.org/img/2015/06/13/16b32364664542fe83aec7dc855d8949.jpg
А в УТ3 самих опций в игре больше стало и никто не запрещает редактировать ини или написать мутатор с более тонкими настройками.
Например, в игре мыльный доф отключается сразу вместе с блумом но есть мутатор Blossom управляющий мылом и блумом по отдельности.


Отправлено Ku2zoff 13-06-2015 в 09:11:

Цитата:
Skaarj писал:
А в УТ3 самих опций в игре больше стало

Настроек графики там туча в самом меню.
Цитата:
Skaarj писал:
но есть мутатор Blossom

Вот всё хочу его попробовать. Надо отключить доф и моушн блюр, а блум оставить.


Отправлено ~ X ~ 16-06-2015 в 07:40:

16b32364664542fe83aec7dc855d8949.jpg
1,599.53 KB (1,637,918 bytes)

Спасибо, не знал. А как оно вызывается?

Skaarj да, размазня - это первое, что пришлось отключать в УТ3.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено ***FantoM*** 20-06-2015 в 16:07:

сегодня я баловался исходным кодом studiomdl.exe
и заметил что текстуры в моделях больше 512х512 у меня в моде не идут
как это исправить ?


Отправлено Crystallize 20-06-2015 в 17:00:

В УТ3 вообще забавно, опция, которая переключает нормал и спекуляр, называется "Проективные текстуры", никогда бы не догадался.

Добавлено 20-06-2015 в 23:00:

Цитата:
***FantoM*** писал:
сегодня я баловался исходным кодом studiomdl.exe
и заметил что текстуры в моделях больше 512х512 у меня в моде не идут
как это исправить ?


Кажется это ограничение халфы. Ну Ксаш попробовать как минимум, насчёт Спирита, Арранжмента и прочего не знаю.


Отправлено Cybermax 20-06-2015 в 17:12:

Цитата:
Crystallize писал:
В УТ3 вообще забавно, опция, которая переключает нормал и спекуляр, называется "Проективные текстуры", никогда бы не догадался.

Можно ли просить вынести в отдельные тред: графические фичи в современных играх с объяснениями принципа работы на пальцах(можно даже вики формат).

__________________


Отправлено ***FantoM*** 20-06-2015 в 17:32:

ееще один вопрос
как правильно прицепить Aurora Particle System
например k ракете от rpg ?


Отправлено Ku2zoff 20-06-2015 в 20:52:

***FantoM*** гугли сорцы старого ксашмода 0.39. Или спроси 0.45 у FiEctro. У меня, к сожалению, не осталось. И те и другие пропали. Перезатёрты другими файлами на винте. У кого есть, выложите куда-нибудь. С ними я смогу восстановить свои старые сорцы спирита с встроенным рендерером паранойи и рендерсистем из XDM. Не хватает fmod.h и cva.h. Ну и ещё кое чего.


Отправлено ~ X ~ 21-06-2015 в 00:43:

Ku2zoff не знаю насчёт остального, но RS лучше сейчас не трогать, т.к. в новом релизе она лучше и стабильней (особенно с энтитями).

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено PLut 21-06-2015 в 16:13:

Пожалуй, чтобы не создавать новую тему, задам здесь свой нубский вопрос: как сделать чтобы нпц не поворачивался к игроку полностью, а только вертел головой в его сторону? Боунконтроллер выставлен.
У меня нпц стоит у стены и когда он начинает рывками поворачиваться полностью к игроку, то выглядит тупо, нужно чтобы он стоял всегда спиной к стене, но поворачивал временами голову к игроку.

__________________
Base Defense on Steam, ModDB


Отправлено GioHAUS0n 21-06-2015 в 23:33:

C++ Source Code:
1
//=========================================================
2
// SetYawSpeed - allows each sequence to have a different
3
// turn rate associated with it.
4
//=========================================================
5
void CBieber :: SetYawSpeed ( void )
6
{
7
  int ys;
8
 
9
  switch ( m_Activity )
10
  {
11
  case ACT_IDLE:
12
    default:
13
        ys = 90;
14
    }
15
 
16
  pev->yaw_speed = ys;
17
}


Отправлено Ku2zoff 21-06-2015 в 23:44:

Цитата:
~ X ~ писал:
но RS лучше сейчас не трогать, т.к. в новом релизе она лучше и стабильней (особенно с энтитями).

Ждём-с. До конца лета я ещё не планирую внедрять эффекты. Пока занялся оружиями. Исправил мелкие косяки чейнгана, прошёлся напильником по коду ножа и монтировки. В ближайшее время буду кодить только огнестрелы. Хотел начать огнемёт, но для него нужна система частиц. Аврору юзать не хочу, т.к. всё равно заюзаю RS из XDM для взрывов, а значит можно и для всего остального.


Отправлено PLut 21-06-2015 в 23:49:

GioHAUS0n Ну и что? yaw_speed и так 0, нпц всё-равно вертится.

__________________
Base Defense on Steam, ModDB


Отправлено SteamPlay43 22-06-2015 в 04:06:

PLut Врогде голограмма из bs game patch'а могла голову на игрока направлять


Отправлено PLut 22-06-2015 в 08:09:

Оказалось всё просто, находим код monster_sitting_scientist и используем его.

__________________
Base Defense on Steam, ModDB


Отправлено PLut 22-06-2015 в 12:53:

Еще один вопрос возник: почему текст в кнопке съезжает и обрезается? Кто-нибудь сталкивался?

Рисую кнопку вот так:

C++ Source Code:
1
m_pTalkChoice[i] = new CommandButton("", 0, 0, 580, 20);
2
m_pTalkChoice[i]->setParent( m_pTalkPanel );
3
m_pTalkChoice[i]->setFont( pSchemes->getFont(hBriefingScheme) );
4
m_pTalkChoice[i]->setContentAlignment( vgui::Label::a_west );
5
m_pTalkChoice[i]->setBorder( new LineBorder(Color(255, 160, 0, 0)) );
6
m_pTalkChoice[i]->setPaintBackgroundEnabled( false );

__________________
Base Defense on Steam, ModDB


Отправлено PLut 23-06-2015 в 13:15:

Разобрался, CommandButton смотрит наличие привязанной кнопки, если есть, то вставляет её номер перед текстом, однако, если этой кнопки нет, то он вставляет кучу пробелов. Текст обрезается из-за дефайна MAX_BUTTON_SIZE числом 32, соответственно в кнопке может быть только 32 символа, чтобы текста в них можно было написать больше, то просто увеличиваем дефайн.

__________________
Base Defense on Steam, ModDB


Отправлено ~ X ~ 24-06-2015 в 10:18:

PLut этот страшый VGUI...

давай, ковыrяй его!

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено ***FantoM*** 25-06-2015 в 15:01:

я уже вторую неделю пытаюсь перенести Paranoia Render себе в мод
у меня вопросЪ какие эффекты нужно убрать
чтоб не тянуть c модом хакнутый ОреnGL32.dlll ?


Отправлено Ku2zoff 25-06-2015 в 15:19:

***FantoM*** ЕМНИП, те, что требуют стенсил-буффер. Не помню точно, но у меня, кажется небо не работало и что-то с освещением было.


Отправлено JPEG 25-06-2015 в 16:03:

Цитата:
***FantoM*** писал:
у меня вопросЪ какие эффекты нужно убрать
чтоб не тянуть c модом хакнутый ОреnGL32.dlll ?

хз правильно ли так рассуждать, но вообщем, если убрать удалить ОреnGL32.dll и запустить паранойю, то те эффекты, которых не будет, и требуют dll, например, бамп требует. Но я не уверен, точно ли оно так

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 25-06-2015 в 17:05:

я могу ошибаться но многие эффекты из паранои берутся из системного ОпенГЛ
по моему в игре в игре опенгл нужен для отражения света ну или т.п.

Добавлено 25-06-2015 в 23:05:

и еще один вопросик
почему то если удалить опенгл из халфы то в игре наблюдается один баг
не знаю как объяснить
короче вот видео https://youtu.be/64hO08ZVdFg

из-за чего это может быть ? что я не так скопипастил ?


Отправлено Ku2zoff 25-06-2015 в 18:50:

Цитата:
***FantoM*** писал:
халфы то в игре наблюдается один баг

В простой халфе такого быть не может. В тринити или паранойе - видел собственными глазами. Это неправильное отсечение видимого пространства по фрустуму.


Отправлено JPEG 25-06-2015 в 19:06:

Цитата:
Ku2zoff писал:
В простой халфе такого быть не может. В тринити или паранойе - видел собственными глазами. Это неправильное отсечение видимого пространства по фрустуму.

ниразу не видел такого ни в паранойе, ни в тринити. В квейке1 на wm только видел. Что нужно сделать, чтобы такие глюки появились?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Cybermax 25-06-2015 в 20:07:

Цитата:
***FantoM*** писал:
короче вот видео https://youtu.be/64hO08ZVdFg

Чудеса.

__________________


Отправлено Ku2zoff 26-06-2015 в 04:24:

Цитата:
Yo Den писал:
ниразу не видел такого ни в паранойе, ни в тринити.

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


Отправлено JPEG 26-06-2015 в 15:53:

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

аа, ну так они на это и не были рассчитаны, при обычном использовании такого не возникнет

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Vadiman 28-06-2015 в 15:06:

Наверно такой вопрос задавали тут миллион и один раз, но внятного рабочего варианта вроде бы не попадалось. Как сделать burst fire, который за нажатие делает три выстрела подряд?
И еще один классический вопрос: ограничение переносимого оружия по слотам. Тобишь выкинь дробовик, чтобы взять мп5, выкинь рпг чтобы взять гаусс, итд...
И вопрос не по кодингу: v_модель оружия в 8к полигонов перебор для hl1, или можно оставить?


Отправлено JPEG 28-06-2015 в 16:47:

Цитата:
Vadiman писал:
ограничение переносимого оружия по слотам. Тобишь выкинь дробовик, чтобы взять мп5, выкинь рпг чтобы взять гаусс, итд...

http://hlfx.ru/forum/showthread.php?s=&threadid=2703 посмотри, подходит?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Vadiman 28-06-2015 в 18:55:

Yo Den в принципе да, только тутор не работает


Отправлено ~ X ~ 28-06-2015 в 23:49:

Цитата:
Vadiman писал:
И вопрос не по кодингу: v_модель оружия в 8к полигонов перебор для hl1, или можно оставить?

Это перебор полигонов во время сортировки. Довольно продолжительный.
Не надо пытаться сделать движку HL1 goatse.jpg

Цитата:
Vadiman писал:
Как сделать burst fire, который за нажатие делает три выстрела подряд?

Наверное, написать функцию Fire(), а потом из какого-то постоянно выполняющегося коллбэка типа WeaponIdle() (или что там счас) дёргать со чётчиком и интервалами.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 29-06-2015 в 07:57:

Цитата:
Vadiman писал:
Как сделать burst fire, который за нажатие делает три выстрела подряд?

C++ Source Code:
1
vecDir = m_pPlayer->FireBulletsPlayer(3, vecSrc, vecAiming, VECTOR_CONE_4DEGREES, 8192, BULLET_PLAYER_MP5, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed);
2
 
3
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usMP5, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pev->body, 0, 0, 0 );
4
 
5
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usMP5, 0.05, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pev->body, 0, 0, 0 );
6
 
7
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usMP5, 0.1, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pev->body, 0, 0, 0 );

Для FireBulletsPlayer указываешь нужное кол-во выстрелов первым параметром, а потом столько же раз вызываешь эвент стрельбы, указывая временную задержку в четвёртом параметре. Для удобства можно оставить только один вызов эвента, и вместе с FireBulletsPlayer обернуть их в цикл for и добавить туда проверку на количество патронов в магазине, чтобы когда их остаётся меньше трёх, выстреливалось именно столько, сколько осталось.


Отправлено Vadiman 29-06-2015 в 14:24:

Цитата:
~ X ~ писал:
Не надо пытаться сделать движку HL1 goatse.jpg

Глянуть модельки на банане для контры/халфы, так там стволы по 20к полигонов норма. Такое ощущение, будто народ для кукурузиса моделит.

Ku2zoff
Спасибо


Отправлено Ku2zoff 29-06-2015 в 15:03:

Цитата:
Vadiman писал:
так там стволы по 20к полигонов норма. Такое ощущение, будто народ для кукурузиса моделит.

Потому, что нефиг тырить модели из сорса и современных игр. Времена, когда моделили для кс 1.6 уже давно прошли. Году эдак в 2005-м. Фьюжн пак v12 для кс 1.6 сделан в 2003 году кажется. А для халфы вообще нормально никогда не моделили. Только авторы модов делали новые модели. Всё что есть на банане, откуда-то стырено, например, из того же кс.


Отправлено Chyvachok 29-06-2015 в 16:20:

Цитата:
Vadiman писал:
так там стволы по 20к полигонов норма.


Как по мне модели 20к у которых полигонов больше чем любой уровень с халвы просто не смотрятся на фоне этих уровней, да и сами по себе модели с дофига полигонов и текстурой ужатой с 2048х2048 до 512х512 не смотрятся, чем мне нравяться ЛД-шные модели что они контрастируют в игре с оригинальными уровнями.


Отправлено Vadiman 29-06-2015 в 18:15:

Ну тут уж смотря кто как использует. Я брал от туда пухи максимум 8к полигонов, нпц не больше 5. На текущем компе просадок fps никаких, но на втором пк, что послабее, они явно будут.


Отправлено ***FantoM*** 03-07-2015 в 01:09:

добрый день ( или ночь) НУЖНА ПОМОЩЬ!
немогу создать ауру вокруг монстра в Paranoi
делаю

C++ Source Code:
pev->renderfx = kRenderFxGlowShell;
pev->rendercolor.x = 55;
pev->rendercolor.y = 255;
pev->rendercolor.z = 255;
pev->renderamt = 150;


в Spawn нечего не выходить
есть ли еще способы сделать ауру вокруг монстра ?

Добавлено 03-07-2015 в 07:09:

код был взят из AMXX и переделан
вот amxx плагин


Отправлено master07 03-07-2015 в 02:13:

***FantoM***

C++ Source Code:
pev->rendercolor = Vector( 55, 255, 255 );

заместо
C++ Source Code:
pev->rendercolor.x = 55;
pev->rendercolor.y = 255;
pev->rendercolor.z = 255;


Отправлено ***FantoM*** 03-07-2015 в 02:22:

master07
не знаю почему
но на модели и так нет ауры


Отправлено ~ X ~ 03-07-2015 в 09:23:

Цитата:
master07 писал:
pev->rendercolor = Vector( 55, 255, 255 );

КГ/АМ. И я надеюсь, что не надо объяснять, почему.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 03-07-2015 в 16:07:

Цитата:
***FantoM*** писал:
но на модели и так нет ауры

Предположение: потому что кастомный рендерер моделей, написанный БУзером не имеет такой фичи, т.к. она не нужна была в паранойе.


Отправлено ***FantoM*** 09-07-2015 в 00:20:

Доброго времени суток!
у меня вопросс
чем отличается параноевский 3ssky от
обычного хайф-лайф sky ?


Отправлено Ku2zoff 09-07-2015 в 06:38:

***FantoM*** ну, тащем-то тем, что в паранойе 3д, а в халфе 2д. Текстуры неба вокруг самой карты не рисуются. На их место проецируется изображение с "небесной" камеры из коробки, в которую маппер ставит энтитю этой камеры. Используются две энтити: сама камера и центр "мира", относительно которого считается смещение, чтобы "небесные" объекты не были статичными, а сдвигались, создавая иллюзию, что зд небо тоже часть мира, как в сосрсе. Главное отличие от спирита - не нужно покрывать небо на самой карте специальной текстурой. Второе отличие - само смещение неба относительно мира. И третье - паранойевское небо работает только в OpenGL.

Добавлено 09-07-2015 в 12:38:

З.Ы. для правильной работы нужно собирать карты паранойевскими компиляторами.


Отправлено ***FantoM*** 21-07-2015 в 03:34:

Доброго времени суток!
сегодня ночью я пытайся сделать минига (MiniGun)
не получается сделать раскрутку стволов
вопрос
Есть ли у кого нибудь код минигана ?


Отправлено Ghoul [BB] 21-07-2015 в 21:25:

Есть. Все там же....

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ***FantoM*** 25-07-2015 в 22:26:

Не компилится карта!помогите!
bumprad.exe выдает ошибку

code:
bumprad.exe - Ошибка приложения Инструкция по адресу "0x00409b94" обратилась к памяти по адресу "0x6c9eb1e8". Память не может быть "read". "Ок"-- завершение приложения "Отмена" -- отладка приложения Ок Отмена


что делать? как исправить?


Отправлено Ku2zoff 25-07-2015 в 22:32:

Цитата:
***FantoM*** писал:
Есть ли у кого нибудь код минигана ?

У меня есть, у Ghoul [BB] есть. В сорцах HLWE. Я бы порекомендовал код Ghoul'а, т.к. у меня там жудь редкостная. Руки никак не доходят в порядок привести. Хотя собственная реализация мне нравится больше. Будет вообще конфетка, если избавиться от глючных клиентских пушек.


Отправлено ***FantoM*** 27-07-2015 в 07:46:

с миниганом разобрался
сейчас мне надо добавить глоку фонарик в SecondaryAttack
как я понимаю мне надо тупо взять из player.cpp с кода включение фонарика и переместить в SecondaryAttack ?


Отправлено Ghoul [BB] 27-07-2015 в 10:05:

Цитата:
Ku2zoff писал:
Будет вообще конфетка, если избавиться от глючных клиентских пушек.


В чем проблема? way to go!

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 27-07-2015 в 10:51:

Цитата:
***FantoM*** писал:
как я понимаю мне надо тупо взять из player.cpp с кода включение фонарика и переместить в SecondaryAttack ?

Ну да. Условие типа такого:
C++ Source Code:
if (m_pPlayer->FlashlightIsOff())
  m_pPlayer->FlashlightTurnOn();
else
  m_pPlayer->FlashlightTurnOff();


Отправлено Vadiman 27-07-2015 в 16:31:

Уважаемые знатоки, подскажите что-нибудь по такому вопросу: допустим, сделал я второй вид зомби, унаследовав класс от оригинального. Все, что мне нужно сделать, чтобы этот новый зомби в момент гибели не проигрывал анимацию падения а просто исчезал, или на куски взрывался (не важно гранатой или плевком его убили)


Отправлено Ku2zoff 27-07-2015 в 18:01:

Vadiman из функции CТвойНовыйЗомби::KIlled надо вызвать GibMonster(). Будет тебе кускование.


Отправлено ***FantoM*** 27-07-2015 в 20:17:

не могу объявить идентификатор gmsgFlashlight
помогите


Отправлено Ku2zoff 27-07-2015 в 20:23:

extern int gmsgFlashlight;
Вне тела функции в файле. Всё просто.


Отправлено ***FantoM*** 27-07-2015 в 20:32:

Ku2zoff
на клиенте
hl_wpn_glock.obj : error LNK2001: unresolved external symbol "int gmsgFlashlight" (?gmsgFlashlight@@3HA)


Отправлено Ku2zoff 27-07-2015 в 20:35:

***FantoM*** а зачем ты мессагу вызываешь напрямую из кода глока, если есть инструменты для этого в коде игрока?

C++ Source Code:
if (m_pPlayer->FlashlightIsOff())
  m_pPlayer->FlashlightTurnOn();
else
  m_pPlayer->FlashlightTurnOff();

Если уж так охота заняться мазохизмом, то оберни вызов мессаги в условие.
C++ Source Code:
#ifndef CLIENT_DLL
// тут твой код с вызовом
#endif


Отправлено Vadiman 28-07-2015 в 17:07:

Ku2zoff
Спасибо, как всегда выручил))
Напоследок, есть кое что еще:
1) Сделал item_laptop. Это ентитя ноутбука, которая при юзе меняет скин модельки и воспроизводит звук (ambient_gerenic). Можно ли сделать так, чтобы юзать ее можно было только 1 раз? Есть ли некий флаг, который за это отвечает?
2) Как уменьшить скорострельность у monster_sentry? В модельке это не регулируется. Я сделал на его основе танк, который стрелял как миниган. Добавил строчку (pev->nextthink = gpGlobals->time + 0.3; ) в spawn, но теперь он работает мягко говоря, не очень. Если брашевый танк сначала наведет дуло, потом выстрелит, то этот пытается делать все одновременно и в итоге попадает крайне редко.


Отправлено Ku2zoff 28-07-2015 в 17:17:

Vadiman:
автор ограничил доступ к видео.

Добавлено 28-07-2015 в 23:13:

1). Заведи булевую переменную BOOL m_bUsed. В спауне задай значение FALSE, в юзе TRUE. И в самом начале функции Use вставь условие:

C++ Source Code:
if (m_bUsed) return;

Элементарная вещь же. В сейв/рестор не забудь добавить её, если мод сингловый.

Добавлено 28-07-2015 в 23:17:

2). Гляди void CBaseTurret::ActiveThink(void). Возможно, придётся оверрайдить эту функцию для monster_sentry, чтобы увеличить интервалы между выстрелами.


Отправлено Vadiman 28-07-2015 в 17:31:

Ku2zoff
Вроде поправил
Спасибо еще раз, теперь помогло, до этого аналогичным путем я уже поступал, только ошибку допустил, т.к if (m_bUsed) return; втыкал в конец метода. Нуб чо)
Покопаюсь с этой штукой, в противном случае танк можно и выпилить, просто для интереса делал


Отправлено Ku2zoff 02-08-2015 в 08:32:

Настал черёд для моего нуб-вопроса. Скачал и установил CodeLite в качестве IDE, MinGW 4.8 в качестве компилятора. Запускаю сборку проекта и не могу понять, какие ошибки мне выдаёт в консоли вывода (build output). Вместо них каракули и иероглифы. Лазил в настройки CodeLite, кодировку в командной строке менял, так и не смог починить. Перерыл кучу интернетов, но решения нигде не нашёл. Помогите плиз, уж терпения нет.
З.Ы. За придурошные кодировки я бы авторам руки-то пооткрутил.


Отправлено ***FantoM*** 14-08-2015 в 18:02:

а что делать если фонарик включается и выключается по сто раз в секунду если держат правую кнопку мыши

можно ли это исправить ?


Отправлено Ku2zoff 14-08-2015 в 19:11:

Попробуй сделать проверку на нажатость кнопки:

C++ Source Code:
if (m_pPlayer->m_afButtonLast & IN_ATTACK2)
  return;

Это надо сунуть в самое начало функции вторичной атаки.

Добавлено 15-08-2015 в 01:09:

***FantoM*** у тебя веапон лаг какой-то интересный. Это не из ку2 случайно?

Добавлено 15-08-2015 в 01:11:

m_flNextSecondaryAttack укажи значение UTIL_WeaponTimeBase() + сколько_надо_секунд_задержки. Я думаю ты про это забыл. Тогда проверка на нажатость не нужна.


Отправлено ***FantoM*** 14-08-2015 в 19:21:

Цитата:
Ku2zoff писал:
Попробуй сделать проверку на нажатость кнопки

уже пробовал не работает

Цитата:
Ku2zoff писал:
у тебя веапон лаг какой-то интересный. Это не из ку2 случайно?


это не веапон лаг и не из кудва
он с
http://am.half-lifecreations.com/fo...E30&topic=110.0

Добавлено 15-08-2015 в 01:21:

Цитата:
Ku2zoff писал:
m_flNextSecondaryAttack укажи значение UTIL_WeaponTimeBase() + сколько_надо_секунд_задержки. Я думаю ты про это забыл. Тогда проверка на нажатость не нужна.

сейчас попробую


Отправлено Crystallize 29-08-2015 в 10:49:

А можно ли от какой-то модели рисовать только чётные строки экранных пикселей, а нечетные брать из фона?


Отправлено Ghoul [BB] 05-09-2015 в 09:05:

ЧТО?
Ты, вроде, по-русски написал, но ничерта не понятно, что имел ввиду...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Crystallize 05-09-2015 в 18:01:

Цитата:
Ghoul [BB] писал:
ЧТО?
Ты, вроде, по-русски написал, но ничерта не понятно, что имел ввиду...

Ну допустим тёмно-красное-это монстр, а самое светлое-стенка сзади него.


Отправлено Ghoul [BB] 05-09-2015 в 20:15:

А зачем такие эффекты? Я несколько секунд на картинку посмотрел, уже чуть не сблевал и в глазах неуютно. а ты предлагаешь в такое играть?

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Crystallize 06-09-2015 в 05:19:

Цитата:
Ghoul [BB] писал:
А зачем такие эффекты? Я несколько секунд на картинку посмотрел, уже чуть не сблевал и в глазах неуютно. а ты предлагаешь в такое играть?


Ну строки будут в 3-4 раза тоньше, и всего для пары монстров на экране. Эффект киберпространства.


Отправлено FiEctro 06-09-2015 в 09:26:

Crystallize
Ты же понимаешь что оно в игре покроется муаром?


Отправлено Crystallize 06-09-2015 в 15:36:

Цитата:
FiEctro писал:
Crystallize
Ты же понимаешь что оно в игре покроется муаром?

Так текстуру монстра никто не трогает, всё происходит непосредственно при отрисовке кадра. В обычном режиме пишем чётные строки, потом убираем монстра, пишем нечётные.


Отправлено GioHAUS0n 06-09-2015 в 16:23:

Как режим Fuzzy в DooM?


Отправлено Crystallize 09-09-2015 в 05:05:

Нет, вот так:


Отправлено Crystallize 25-10-2015 в 10:10:

В спирите вообще можно motion_manager включать-выключать на ходу? Через мультименеджер не получается.


Отправлено PLut 21-11-2015 в 13:33:

Чтобы не создавать новую тему, воспользуюсь старой. Вопрос по стимовской версии хл, есть ли там какой-нибудь ридми-ридер, типа как в ВОН-версии было, чтобы из меню можно было легко открыть текстовый файл с информацией о моде?

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 21-11-2015 в 13:55:

PLut насколько мне известно, нет. Сам искал


Отправлено PLut 21-11-2015 в 16:17:

XaeroX Благодарю за ответ. Очень жаль.

__________________
Base Defense on Steam, ModDB


Отправлено ***FantoM*** 22-11-2015 в 10:49:

Flashlight Attachments To Weapons

хочу прикрепить фонарик на оружие в ParanoiaRenderer как в Left 4 Dead 2
как посоветуете сделать?


Отправлено PLut 22-11-2015 в 11:19:

***FantoM*** На тринити подобное делал, но сорц того мода взорвался вместе с компьютером.

__________________
Base Defense on Steam, ModDB


Отправлено ***FantoM*** 22-11-2015 в 11:28:

PLut смотрится круче чем в Left 4 Dead 2


Отправлено PLut 21-12-2015 в 21:34:

Чтобы не создавать новую тему, воспользуюсь старой.
Три месседжа по байту или один месседж на 3 байта. Что лучше и почему?

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 21-12-2015 в 21:47:

Второе. У каждого мессажа есть отдельный, скажем так, заголовок.


Отправлено PLut 27-12-2015 в 11:30:

XaeroX Спасибо!

Еще один вопрос появился: есть key у dlightов, зачем он нужен, как его правильно ставить?
Я о том, что в скобках:

C++ Source Code:
dlight_t *dl = gEngfuncs.pEfxAPI->CL_AllocDlight( 0 );

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 27-12-2015 в 11:44:

key нужен для того, чтобы повторно использовать один и тот же длайт, в том числе активный. Если ставить 0, то будет при каждом вызове выделяться неактивный длайт (а если все активны - то первый в списке).


Отправлено PLut 27-12-2015 в 11:47:

XaeroX Спасибо за ответ, т.е. самое простое и безопасное - это, как раз, ноль?

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 27-12-2015 в 13:02:

PLut
В каком смысле - простое и безопасное? Это зависит от твоих целей. Если тебе нужно каждый клиентский кадр обновлять свет, а не создавать новый - для этого и нужен key. При каждом аллоке с нулевым ключом будет создаваться новый источник света в рамках лимита на них, что может привести к бессмысленным тормозам.


Отправлено PLut 27-12-2015 в 13:17:

XaeroX Теперь понял, спасибо

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 27-12-2015 в 14:52:

Цитата:
XaeroX писал:
key нужен для того, чтобы повторно использовать один и тот же длайт, в том числе активный. Если ставить 0, то будет при каждом вызове выделяться неактивный длайт (а если все активны - то первый в списке).

Цитата:
XaeroX писал:
Если тебе нужно каждый клиентский кадр обновлять свет, а не создавать новый - для этого и нужен key.

Ух ты! И ведь нигде нет доков по этой теме. Теперь попробую обновить код зажигалки, учитывая key.
XaeroX а вот этот самый параметр, он же учитывается только для того игрока, для которого создаётся длайт? То есть, если я отправляю мессагу (или эвент) для всех игроков, то и у длайта будет одинаковый key для всех игроков? Я о применении в мультиплеере, при значении key равном индексу игрока от 1 до 32.


Отправлено XaeroX 27-12-2015 в 14:59:

Цитата:
Ku2zoff писал:
И ведь нигде нет доков по этой теме.

Зачем доки, если CL_AllocDlight есть в сорцах первокваки?
Многие темп-эффекты перекочевали в халфу оттуда, типа TE_TAREXPLOSION.
Цитата:
Ku2zoff писал:
а вот этот самый параметр, он же учитывается только для того игрока, для которого создаётся длайт?

Длайты - клиентские. Для каких игроков создашь - для тех он и будет.
Цитата:
Ku2zoff писал:
у длайта будет одинаковый key для всех игроков?

Ты сам назначаешь key, это произвольное число.


Отправлено Crystallize 27-12-2015 в 15:19:

В спирите взял вектор от View Angle игрока, и пытаюсь развернуть его на 90 градусов по питчу вниз, что было как будто игрок на животе лежит. Но питчевая компонента развернулась, а yaw - нет. Я думал yaw превратится в roll.


Отправлено Crystallize 29-12-2015 в 18:44:

В Спиритах начиная с 1.4 появился свап осей вращения в моушн_менеджере. Только почему-то нифига не работает, в 1.4 и 1.5 по крайней мере. Help.


Отправлено XaeroX 29-12-2015 в 19:23:

Crystallize
Ну зачем ты вопросы такие задаёшь? Не думаю, что кто-то до сих пор спирит использует. Исходники его открыты - изучай.


Отправлено Crystallize 30-12-2015 в 02:34:

Цитата:
XaeroX писал:
Ну зачем ты вопросы такие задаёшь? Не думаю, что кто-то до сих пор спирит использует. Исходники его открыты - изучай.


Есть же ещё такая вещь, как память.

Открываешь исходники, а там:
code:
/*float tempswap; // MJB I've tried adding this code so I can swap the vector components, // but for some reason it just isn't working. I have no idea why. // Perhaps YOU know why and could fix it?

Ох лол. То есть фича у нас не работает, но в фгд мы её добавим.


Отправлено Crystallize 30-12-2015 в 16:25:

Я смотрю, чтобы повернуть вектор, они просто переводят его в углы, и прибавляют угол поворота. По-моему это бред.

code:
Vector CCalcVelocityPolar::CalcVelocity( CBaseEntity *pLocus ) { Vector vecBasis = CalcLocus_Velocity( this, pLocus, STRING(pev->netname) ); Vector vecAngles = UTIL_VecToAngles( vecBasis ) + pev->angles; Vector vecOffset = CalcLocus_Velocity( this, pLocus, STRING(pev->message) ); float fFactor = CalcLocus_Ratio( pLocus, STRING(pev->noise) ); if (!(pev->spawnflags & SF_CALCVELOCITY_NORMALIZE)) fFactor = fFactor * vecBasis.Length();


Отправлено Crystallize 16-01-2016 в 20:10:

Пытаюсь сделать для yaw игрока такое же ограничение углов -89...89, как это сделано для питча. Пробовал в функциях AdjustAngles и MouseMove, по аналогии с питчем писал

code:
if {viewangles[yaw] <= -89} viewangles[YAW] =-89;

и т.д.
результат один: внезапно халфа невзлюбила отрицательный yaw, и при виде его сразу выставляет максимально возможный положительный, который ты вписал.


Отправлено XaeroX 16-01-2016 в 20:50:

if ( yaw < 0 ) yaw += 360, не?


Отправлено Crystallize 17-01-2016 в 13:02:

Цитата:
XaeroX писал:
if ( yaw < 0 ) yaw += 360, не?


Ну я вписал по такому принципу рядом, не помогло.
Там у yaw диапазон 0-360, вроде разобрался.


Отправлено Crystallize 26-01-2016 в 08:14:

Что делает функция anglemod? Я раньше думал, что она для плавного поворота между двумя значениями. Тут нашёл такое объяснение:

code:
/** * This function adds or substracts 360 enough times needed to the given angle in * order to set it into the range [0, 360) and returns the resulting angle. Letting * the engine have a hand on angles that are outside these bounds may cause the * game to freeze by screwing up the engine math code. */ inline float AngleMod(float a) { return (360.0 / 65536) * ((int)(a * (65536.0 / 360.0)) & 65535); }

Судя по объяснению, это избавление от отрицательных значений угла. Но тогда почему запись такой пипец? По идее достаточно же if (yaw<0) yaw=yaw+360.
(int) этот со скобочками не гуглится. Битовый AND тоже непонятно зачем нужен, если 65535 битовое это одни единички, и в сочетании с & он просто передаёт значение дальше.


Отправлено XaeroX 26-01-2016 в 09:04:

Crystallize
Округляет угол до ближайшего 16-битного значения, которые используются для пересылки по сети.


Отправлено Crystallize 04-02-2016 в 03:43:

Делал гигантизм в Хаммере, получается карту с visibility matrix больше примерно 200мб в принципе нельзя осветить на 32-х битной версии из-за нехватки оперативки?


Отправлено Crystallize 07-02-2016 в 15:02:

Как добавить на клиента функцию ALERT?


Отправлено Ku2zoff 07-02-2016 в 18:12:

Crystallize возьми и сделай обёртку для ConPrintf.


Отправлено Crystallize 07-02-2016 в 19:26:

Спасибо. Погуглю конечно про обёртку, но особо не надеюсь... А можно напрямую заюзать gEngFuncs.ConPrintf? Или она принимает не нормальные типы данных, а эти ваши эдикты?


Отправлено Ku2zoff 18-02-2016 в 20:19:

Crystallize не совсем понял, при чём тут эдикты. Серверный ALERT имеет два аргумента: тип алерта и собственно текст. Тип не особо важен, если ты просто хочешь слать в консоль диагностические сообщения. НО если хочешь прям как на сервере, придётся писать мудрёную функцию. Чтобы учитывать каждый тип алерта:

at_notice - просто уведомление в левом верхнем углу экрана
at_console - уведомление с записью в консоль
at_aiconsole - то же, что и at_console, но только при кваре developer 2
at_warning - не помню точно, чем отличается от предыдущих. По-моему, добавляет перед текстом "WARNING: "
at_error - вроде бы добавляет перед текстом "ERROR: "
at_logged - сообщение в серверную консоль, так же пишется в лог сервера


Отправлено Crystallize 23-02-2016 в 09:32:

Цитата:
Ku2zoff писал:
не совсем понял, при чём тут эдикты.

Просто читал какое-то обсуждение на хлру, типа почему лучше использовать функции движка в обёрнутом, а не в сыром виде. Типа потому что в сыром виде они работают не с привычными данными, а только с эдиктами.
Вопрос в общем пока отпадает, оказалось я проглядел что в спирите на клиенте уже реализована gEngfuncs.Con_DPrintf и gEngfuncs.Con_Printf. Понять бы ещё разницу между ними...


Отправлено Ku2zoff 23-02-2016 в 13:43:

Цитата:
Crystallize писал:
оказалось я проглядел что в спирите на клиенте уже реализована gEngfuncs.Con_DPrintf и gEngfuncs.Con_Printf. Понять бы ещё разницу между ними...

Элементарно, Ватсон!

gEngfuncs.Con_Printf - выводит сообщение всегда.
gEngfuncs.Con_D(ebug)Printf - только когда игра запущена в дебаге, либо с кваром developer


Отправлено KorteZZ 23-03-2016 в 15:11:

Помогите, пожалуйста, с Iron Sight. Сделал, я, значит, эту штуку на Мосинке, теперь она практически работает: анимация, разброс, легкий зум. Осталось сделать замедление скорости передвижения игрока. Как это можно сделать? А то скачет с зумом, как угорелый.

Плюс вопрос: как убрать диагональное ускорение игрока? А то вперед и вбок нормально ходит, а диагонально скорость увеличивается чуть ли не в два раза.

И еще: как сделать двойное условие? Если зум включен и если патронов больше 1, то... Если зум включен и если патрон единственный, то...
Работаю в XashXT.

__________________

Killing Floor: Horzine Outbreak


Отправлено Vadiman 23-03-2016 в 19:32:

Есть проблемка с пулеметом из opposing force: перезарядка состоит из двух анимаций (SAW_RELOAD1_1 и SAW_RELOAD1_2) Как воспроизвести одну за другой, ведь обычно в DefaultReload только одна анимация?


Отправлено PLut 24-03-2016 в 04:27:

Vadiman Смотри как в дробовике перезарядка сделана, вот по аналогии делается перезарядка пулемета.

__________________
Base Defense on Steam, ModDB


Отправлено ILZM 24-03-2016 в 05:15:

KorteZZ насчет скорости: это все уже есть, остались только проблемы с получением максимальной скорости на клиенте. Да и еще на клиенте есть квары cl_sidespeed, cl_forwardspeed, cl_backspeed и sv_maxspeed. Посмотри на клиенте input.cpp по поиску этих кваров. Там есть формулы высчитывания гипотенузы, т. е. именно той диагонали. Нужно всего лишь скормить этому коду максимальную скорость игрока на сервере
насчет условия: тут без куска кода не понять


Отправлено PLut 24-03-2016 в 06:09:

KorteZZ [Кодинг] Замедление игрока

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 24-03-2016 в 07:44:

Цитата:
Vadiman писал:
Как воспроизвести одну за другой, ведь обычно в DefaultReload только одна анимация?

Там первая анимация проигрывается в Reload, а вторая в WeaponIdle. Довольно интересный и полезный подход, и вот почему:

Имеем очень длинную анимацию перезарядки (5 сек и более). Во время перезарадки хотим что-нибудь поюзать - хрен. Потому что время m_flNextAttack ещё не подошло, и игрок не тчинкает (функии PreThink и PostThink, не помню, какая из них). А вот если мы разрежем анимацию на 2 части, то после проигрывания первой и патроны в магазине сразу обновятся, и можно юзать что хочешь.

Я планирую длинные перезарадки оружий в своём моде понарезать таким образом.


Отправлено Chyvachok 24-03-2016 в 12:48:

Ku2zoff ну в опфоре перезарядка разделена все же не из-за юзания, а из-за бодигрупной ленты, чтобы указать правильную боди нужно уже перезарядить оружие.


Отправлено KorteZZ 24-03-2016 в 15:10:

Спасибо большое за помощь! Со скоростями разобрался, а насчет условий:

Это первичная атака Мосина. Мне надо сделать так, чтобы учитывался еще и последний патрон, как на Глоке.

C++ Source Code:
1
if ( m_fInZoom )
2
{
3
  m_fInZoom = FALSE;
4
  m_pPlayer->m_iFOV = 0;
5
  g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 170 );
6
  m_flNextPrimaryAttack = m_flNextPrimaryAttack + 1.6;
7
  m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_1DEGREES, 8192, BULLET_PLAYER_762MOS, 0);
8
}
9
else
10
 
11
{
12
  g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 170 );
13
  m_flNextPrimaryAttack = m_flNextPrimaryAttack + 1.6;
14
  m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 8192, BULLET_PLAYER_762MOS, 0);
15
}


Что-нибудь в стиле:

C++ Source Code:
1
if (m_iClip == 1)
2
  SendWeaponAnim( MOSIN_FIRE_LAST);
3
else
4
  SendWeaponAnim( MOSIN_FIRE1 + RANDOM_LONG(0,2));


Куда его поставить?

__________________

Killing Floor: Horzine Outbreak


Отправлено Vadiman 24-03-2016 в 16:05:

Цитата:
Ku2zoff писал:
Там первая анимация проигрывается в Reload, а вторая в WeaponIdle. Довольно интересный и полезный подход, и вот почему:

В принципе оно работает, только вот при простое или после каждого выстрела вторая анимация начинает о себе активно напоминать)
Тут где-то был тутор по добавлению saw и в нем предлагали такой вариант:
C++ Source Code:
1
if (DefaultReload( 100, SAW_RELOAD1, 2.0, 0 ))
2
{
3
  SendWeaponAnim( SAW_RELOAD2 );
4
  m_flSoundDelay = 1.5;
5
}

но проигрывается только 2-я


Отправлено Ku2zoff 24-03-2016 в 18:27:

Цитата:
Chyvachok писал:
опфоре перезарядка разделена все же не из-за юзания, а из-за бодигрупной ленты

Тащем-то, да, именно из-за бодей придумано разделение. Но почему бы его не использовать для других целей?
ИМХО, отображение патронов в ленте бодями, очень грамотный подход. Хотите увидеть неграмотный - посмотрите модели пулемётов из Day of Defeat. Там стопицот анимаций заведено для отображения патронов.
Цитата:
Vadiman писал:
В принципе оно работает, только вот при простое или после каждого выстрела вторая анимация начинает о себе активно напоминать)

В опфоре же не напоминает?
Цитата:
Vadiman писал:
где-то был тутор по добавлению saw и в нем предлагали такой вариант:

C++ Source Code:
m_flSoundDelay

Можно завести какую угодно переменную в классе оружия. И какую угодно временную задержку от неё считать. Прблема в том, что WeaponIdle - не самая лучшая функция, чтобы рисовать анимации и менять боди. Так уж устроена халфа, там всё завязано на тчинках CBasePlayer'a. Лучше юзать для мгновенной смены бодей функцию CBasePlayerItem::PostThink, из которой вызывается CBasePlayerWeapon::WeaponIdle. Если менять боди в посттчинке кбэйсплейеритем, то они будут меняться сразу, а не когда оружие протчинкает в очередной раз.

Добавлено 25-03-2016 в 00:27:

Цитата:
Vadiman писал:
if (DefaultReload( 100, SAW_RELOAD1, 2.0, 0 ))
{
SendWeaponAnim( SAW_RELOAD2 );
m_flSoundDelay = 1.5;
}

Косяк 100%.
Надо так:
C++ Source Code:
1
if (DefaultReload( 100, SAW_RELOAD1, 2.0, 0 ))
2
{
3
  m_flSoundDelay = UTIL_WeaponTimeBase() + 1.5;
4
}

а затем в функции WeaponIdle
C++ Source Code:
1
if (m_flSoundDelay <= UTIL_WeaponTimeBase())
2
{
3
  SendWeaponAnim( SAW_RELOAD2 );
4
  m_flSoundDelay = 0.0;
5
}

Это просто навскидку. Но должно сработать.

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


Отправлено Vadiman 24-03-2016 в 22:15:

Цитата:
Ku2zoff писал:
ИМХО, отображение патронов в ленте бодями, очень грамотный подход. Хотите увидеть неграмотный - посмотрите модели пулемётов из Day of Defeat.

Пока здесь не описали эти бодигруппы, я их вообще не замечал. Сложна. Наверно мне все-таки пулемет не нужен
Цитата:
Ku2zoff писал:
Это просто навскидку. Но должно сработать.

Нет, не работает. Я тоже заводил переменную, все работало как надо, только вот при простое или выстреле вторая анимация перезарядки снова появлялась. Но на мысль ты меня навел, буду эксперементировать)
Цитата:
Ku2zoff писал:
Я не понимаю, почему вы эти коды не читаете внимательно, а копипастите бурду из сомнительных источников.

Ну это как в фильме "матрица": ты смотришь на код и видишь женщину в красном, а мы.....выражаясь предельно просто - фигу
Вот например недавно решил гонома к себе в проект добавить. Еле-еле откопал код Демиурга. Вроде все четко прописано где какие функции, звуки, ивенты, а работает на выходе все наоборот: при ударе руками звуки плевков, при плевках рычание какое-то, или непись вдруг сквозь игрока начинает пробегать

PS: А тебе удалось побороть тот баг с ногами от 1-го лица?


Отправлено ***FantoM*** 25-03-2016 в 09:24:

Цитата:
Vadiman писал:
Вот например недавно решил гонома к себе в проект добавить. ... при ударе руками звуки плевков, при плевках рычание какое-то, или непись вдруг сквозь игрока начинает пробегать


не совпадают евенты или анимация в модели с кодом мoнстра.


Отправлено Ku2zoff 25-03-2016 в 16:29:

Цитата:
Vadiman писал:
А тебе удалось побороть тот баг с ногами от 1-го лица?

Нет. Если рисовать ноги в отдельном вьюпорте, к ним на некоторых картах в определённых местах применяется эффект типа fullbright. Не знаю, с чем это связано. Если рисовать во вьюпорте вьюмодели - то ноги могут летать где-то за пределами уровня.

Добавлено 25-03-2016 в 22:27:

Цитата:
Vadiman писал:
ты смотришь на код и видишь женщину в красном

Не целиком правда, а по частям: к примеру, только одну ногу или руку Мои познания в кодинге всё-таки не супер.

Добавлено 25-03-2016 в 22:29:

Цитата:
KorteZZ писал:
Что-нибудь в стиле:

C++ Source Code:
if (m_iClip == 1)
____SendWeaponAnim( MOSIN_FIRE_LAST);
else
____SendWeaponAnim( MOSIN_FIRE1 + RANDOM_LONG(0,2));



Куда его поставить?

Ну куда? В эвент на клиенте, вестимо. По аналогии с глоком.


Отправлено KorteZZ 25-03-2016 в 16:49:

Ну, надо сделать чтобы были условия:

1) Если с зумом и патронов больше 1, то играть MOSIN_IRON_SHOOT
2) Если с зумом и патрон единственный, то играть MOSIN_IRON_SHOOT_LAST

3) Если без змуа и патронов больше 1, то... MOSIN_SHOOT
4, Если без зума и патрон единственный, то... MOSIN_SHOOT_LAST

А просто по аналогии с глоком я сделал. У меня XashXT. Сейчас проигрывается стандартная анимация выстрела, вне зависимости от наличия зума. Он просто убирается.

__________________

Killing Floor: Horzine Outbreak


Отправлено Shadow762 25-03-2016 в 21:40:

***FantoM*** А у тебя есть псевдоисходники опфора? Поделишься? Я на каком-то зарубежном сайте ухватил файлик волтигоры, но гонома там не видел.


Отправлено ***FantoM*** 26-03-2016 в 00:48:

Цитата:
Shadow762 писал:
А у тебя есть псевдоисходники опфора? Поделишься?

Я лично не встречай таких исходников
Цитата:
Shadow762 писал:
... но гонома там не видел.

Гонома лучше создать на основе зомби + добавить атаку из bullsquid и пожирания трупов
по моему ничего сложного


Отправлено PLut 26-03-2016 в 04:33:

***FantoM*** KorteZZ Проще только буллсквида взять.

__________________
Base Defense on Steam, ModDB


Отправлено Vadiman 27-03-2016 в 22:34:

Цитата:
***FantoM*** писал:
Я лично не встречай таких исходников

Гонома лучше создать на основе зомби + добавить атаку из bullsquid и пожирания трупов
по моему ничего сложного


Пожирание трупов? Зачем? Что оно дает? Я у себя реализовал только "плевок", но чувствуется, что это не тот гоном, что в оп-фор был)

PS: Проблемы с перезарядками, бодигруппами решил, все оказалось проще, чем казалось на первый взгляд)
Теперь другой вопрос: как реализовать mp3 в моде? Вот например триггер проигрывающий cd-треки, на его основе можно что-то соорудить?
Где-то на half-life.ru имелся туториал по fmod, который вполне себе работает, но время-от времени крашит игру


Отправлено PLut 28-03-2016 в 05:14:

Vadiman С чего ты взял, что он крашит игру?

__________________
Base Defense on Steam, ModDB


Отправлено Ghoul [BB] 28-03-2016 в 07:49:

Цитата:
Vadiman писал:
Пожирание трупов? Зачем? Что оно дает?


Это служит следующим целям:

1. И основная - восстановить здоровье едока, если он получил в бою какие-то повреждения.
2. Санитарно-гигиеническая. Согласись, что трупы портят внешний вид местности, разлагаются, могут являться источником болезнетворных микро- да и чего уж там, макро организмов.
3. Реалистическая. Согласись, что если есть труп, то, значит, с ним надо что-то делать?
4. Оптимизация памяти и ресурсов игры. Многочисленные трупы "съедают" или понижают ФПС, требуют под себя эдикты, дополнительный объём аппаратных ресурсов.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Vadiman 28-03-2016 в 15:23:

Цитата:
PLut писал:
Vadiman С чего ты взял, что он крашит игру?

Потому, что на практике с этим столкнулся. Я могу ошибаться конечно, но краши я заметил не сразу. Они достаточно редки. Сначала код с сайта был оригинальным, потом товарищ Ku2uzoff модифицировал данную фичу, добавив паузы треков во время выхода в меню. Вот после модификации кода и стал замечать краши. Краш выпадал с вероятностью 20 на 80, ты пересекаешь триггер и смотришь сообщение об ошибке, потом еще 2-3 раза перезапускаешь карту\игру и все нормально работает.

Цитата:
Ghoul [BB] писал:
Это служит следующим целям:

1. И основная - восстановить здоровье едока, если он получил в бою какие-то повреждения.
2. Санитарно-гигиеническая. Согласись, что трупы портят внешний вид местности, разлагаются, могут являться источником болезнетворных микро- да и чего уж там, макро организмов.
3. Реалистическая. Согласись, что если есть труп, то, значит, с ним надо что-то делать?
4. Оптимизация памяти и ресурсов игры. Многочисленные трупы "съедают" или понижают ФПС, требуют под себя эдикты, дополнительный объём аппаратных ресурсов.


1. - это чит)
На замену остальным есть игромех под названием fade_corpse)


Отправлено ***FantoM*** 29-03-2016 в 15:30:

как работает режим indexalpha в спрайтах?


Отправлено Ku2zoff 29-03-2016 в 16:48:

Normal - без прозрачности.

Additive - чёрный цвет прозрачный, белый непрозрачный.

Indexalpha - градиентная прозрачность первых пикселей цвета, похоже на Additive, только прозрачный не чёрный, а видимо, любой.

Alphatest - один цвет, последный в палитре, прозрачный.

Тут описание Indexalpha переведённое мной лично. В учебниках по деланью спрайтов пишут такое: "Черно-белый спрайт; последний цвет в палитре определяет цвет спрайта". Не знаю, чему верить.


Отправлено XaeroX 29-03-2016 в 17:00:

Цитата:
Ku2zoff писал:
Indexalpha - градиентная прозрачность первых пикселей цвета, похоже на Additive, только прозрачный не чёрный, а видимо, любой.

На самом деле Indexalpha-спрайт это та же декаль. Вся палитра - это градиент прозрачности, т.е. по сути цвет не имеет значения, учитывается только номер в палитре. А цвет спрайта - это последний цвет в палитре.
Советую декомпилировать indexalpha-спрайты крови из Headcrab Frenzy и изучить их палитру в фотошопе.

Добавлено 29-03-2016 в 23:00:

Цитата:
Ku2zoff писал:
Черно-белый спрайт; последний цвет в палитре определяет цвет спрайта

Всё правильно. Надо только добавить, что чем ближе к началу палитры цвет пикселя - тем пиксель прозрачнее. При этом сам цвет значения не имеет - движок его игнорирует.
Да, мутно это всё описывать. Когда понимаешь, как это устроено - всё кажется простым, а вот описать кому-то трудно.


Отправлено Ku2zoff 29-03-2016 в 17:26:

Цитата:
XaeroX писал:
На самом деле Indexalpha-спрайт это та же декаль.

Вот и я об этом подумал. Механизм точь-в-точь, как у декалей, исходный цвет значения не имеет.


Отправлено ***FantoM*** 29-03-2016 в 17:29:

Цитата:
XaeroX писал:
Советую декомпилировать indexalpha-спрайты крови из Headcrab Frenzy и изучить их палитру в фотошопе.

Не вижу никаких спрайтов крови(в версии Headcrab Frenzy 1ю6)


Отправлено XaeroX 29-03-2016 в 18:29:

***FantoM***
Ты прав, там не спрайты, а декали в вад-файле. Я изначально делал это спрайтами, а потом сделал иначе.
Но суть в том, что индексальфа-спрайт и декаль это практически одно и то же.


Отправлено Vadiman 31-03-2016 в 18:09:

Можно-ли изменить прозрачность у v_модели оружия?
Задумка в том, чтобы вторичная атака придавала эффект невидимости (модель оружия и рук становилась прозрачной) и желательно, чтобы нпц в этот момент переставали реагировать


Отправлено Cybermax 31-03-2016 в 18:22:

Заменить модель на прозрачную?

__________________


Отправлено Ku2zoff 31-03-2016 в 18:22:

Цитата:
Vadiman писал:
Можно-ли изменить прозрачность у v_модели оружия?

А почему нельзя? И рендермоды к ней применять можно, я думаю. Напиши нужную функцию в студиомодельрендерере, и управляй состоянием модели через эвенты.


Отправлено FanaT2 31-03-2016 в 20:59:

Как сделать анимированную кровь при попадании в монстра или в игрока.
Заранее спасибо.


Отправлено Ku2zoff 01-04-2016 в 05:12:

FanaT2 кровь и так сделана анимированным спрайтом. Опиши подробнее, что хочешь видеть.


Отправлено FanaT2 01-04-2016 в 15:30:

Игра берет один кадр из спрайта, а мне нужна каждый кадр.


Отправлено Crystallize 03-07-2016 в 13:52:

Игрок не рисуется через trigger_camera, пустое место.


Отправлено Дядя Миша 03-07-2016 в 21:01:

А переменная player чему равна?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 04-07-2016 в 17:50:

Цитата:
Дядя Миша писал:
А переменная player чему равна?


Ты про skin у info_player_start? Её вообще не было. Я прописывал 0 1 2, не помогало. На спирите такое творится, 1.4 1.5 к примеру.


Отправлено Дядя Миша 04-07-2016 в 20:49:

В консоли переменная player чему равна?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 05-07-2016 в 16:00:

Цитата:
Дядя Миша писал:
В консоли переменная player чему равна?


Unknown command


Отправлено KiQ 05-07-2016 в 17:18:

Crystallize он видимо имел в виду model

__________________
-Brain is dead-


Отправлено Crystallize 05-07-2016 в 18:38:

KiQ А, спасибо.
Дядя Миша бывает helmet или gordon.

Добавлено 06-07-2016 в 00:38:

и да, при включении thirdperson моделька рисуется.


Отправлено Дядя Миша 06-07-2016 в 20:49:

Цитата:
KiQ писал:
Crystallize он видимо имел в виду model

Да, напутал.

Добавлено 06-07-2016 в 23:49:

Тогда начнём сначала. Где именно не рисуется? В спирите?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 07-07-2016 в 05:57:

Цитата:
Дядя Миша писал:
Тогда начнём сначала. Где именно не рисуется? В спирите?

Да, например 1.4 и 1.5a4 под ХЛ вон.

Добавлено 07-07-2016 в 11:57:

На самом деле этот баг мне даже не важен сейчас.


Отправлено PLut 08-07-2016 в 07:46:

Можно ли красить монстров связкой kRenderTransColor и rendercolor? Я пробовал так, но результат никакой.

C++ Source Code:
pevCreate->rendermode = kRenderTransColor;
pevCreate->rendercolor = Vector( 255, 0, 0 );
pevCreate->renderamt = 255;

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 08-07-2016 в 07:51:

Цитата:
PLut писал:
Можно ли красить монстров связкой kRenderTransColor и rendercolor?

Брашевых - можно.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено PLut 08-07-2016 в 08:16:

XaeroX Модельки, значит, никак краситься не будут? Даже с помощью других kRender?

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 08-07-2016 в 08:20:

PLut
В ксаше - будут, в халфе - нет.
В халфе можно имитировать раскраску вручную, в студиорендере, используя освещение (StudioSetupLighting или что-то вроде того).

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено PLut 08-07-2016 в 11:59:

XaeroX Ааа, да, я видел реализацию этого в сорцах инвейжена. Не зря, видимо, так извращались. Спасибо!

Добавлено 08-07-2016 в 14:59:

А, кстати, вышло то, что нужно

__________________
Base Defense on Steam, ModDB


Отправлено Shadow762 11-07-2016 в 14:39:

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

1. Где настраивается цвет текстовых сообщений HL (ClientPrint, чат, ники убитых игроков в правом верхнем углу). В ХЛ он рыжий, в Sven Co-op - в той же версии 3.0, например, на белый исправили.
2. Где, опять же, поменять цвет рамочки вокруг кнопки OK в motd?)

Заранее спасибо

__________________
я Z


Отправлено PLut 11-07-2016 в 17:14:

Shadow762
1. В папке мода resource/trackerscheme.res там EngineFonts вроде.
2. Кнопка эта в самом конце vgui_MOTDWindow.cpp

__________________
Base Defense on Steam, ModDB


Отправлено Shadow762 11-07-2016 в 18:52:

Цитата:
PLut писал:
2. Кнопка эта в самом конце vgui_MOTDWindow.cpp

Там только это:
C++ Source Code:
CommandButton *pButton = new CommandButton( CHudTextMessage::BufferedLocaliseTextString( "#Menu_OK" ), iXPos + XRES(16), iYPos + iYSize - YRES(16) - BUTTON_SIZE_Y, CMENU_SIZE_X, BUTTON_SIZE_Y);
pButton->addActionSignal(new CMenuHandler_TextWindow(HIDE_TEXTWINDOW));
pButton->setParent(this);

Цветов нет. Если что, говорю вот об этом:

Рамочку самого окна белой сделал, а вот на рамку кнопки OK это видать не распространяется. Как была оранжевой, так и осталась.

Добавлено 11-07-2016 в 21:52:

Цитата:
Shadow762 писал:
В папке мода resource/trackerscheme.res там EngineFonts вроде.

Есть, но там же цвета, отвечающие за само меню мода. Это точно не то.

__________________
я Z


Отправлено PLut 11-07-2016 в 19:15:

Shadow762 Ну дык глянь как там цвета меняются и допиши setFgColor( r, g, b, a ) какой-нибудь.
А по поводу trackerscheme ты лучше попробуй, а не отрицай.

Добавлено 11-07-2016 в 22:07:

Хотя, я там шрифты менял, цвет ща гляну.

Добавлено 11-07-2016 в 22:15:

Ну chat в saytext.cpp, если чето не ищется на клиенте - ищи в схемке.

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 11-07-2016 в 19:19:

Цитата:
Shadow762 писал:
Рамочку самого окна белой сделал, а вот на рамку кнопки OK это видать не распространяется. Как была оранжевой, так и осталась.

Тут такая вещичка всплывает, за которую я вальве руки б пооткрутил.
CommandButton имеет свои собственные цвета. И, кстати, ещё многие панели и кнопки раскрашены, с какого-то перепугу, хрен пойми как. Я конечно понимаю, что ВГУЙ прикручивали испытывая анальное давление. Но всё же... Такое впечатление, что ВГУЙ писали три (или даже больше) разных человека.
А теперь совет: чтобы избавиться от вот этой фигни с цветами, ищи в сорцах функции paint и paintBackground для всех элементов ВГУЯ. Если хоть где-то найдешь цвета, заданные константами - выпиливай эти строки нафик. Тогда объект унаследует рисование от родителя, и цвета будут одинаковые.

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


Отправлено Shadow762 11-07-2016 в 19:27:

Жуть какая) Нет, ну правда. Ладно, разберусь. И где все же править цвета сообщений в чате и ников кто кого убил? Я уже все везде пересмотрел, цвета типа 255 160 0 и прочие оттенки рыжего перегнал в белый. Все равно не помогает. Может в трекершэйме что действительно надо писать, но ни в одном моде, которые я перекопал за этот вечер ничего подобного не нашел. только цвета меню игры.

__________________
я Z


Отправлено FiEctro 11-07-2016 в 19:30:

Shadow762
Цвета ВГУИ если не ошибаюсь хранятся в ресурсах игры, а не в коде.


Отправлено Shadow762 11-07-2016 в 20:11:

Цитата:
FiEctro писал:
Shadow762
Цвета ВГУИ если не ошибаюсь хранятся в ресурсах игры, а не в коде.

Ну не скажи. К примеру цвет рамки окна motd я менял в коде. с рыжего на белый.

Цвет текста да, меняется в файлах папки "ресорс"

Добавлено 11-07-2016 в 23:11:

Так, проблемку под номером 2 решил. В vgui_MOTDwindow.cpp в конце дописал
C++ Source Code:
pButton->setBorder( new LineBorder( Color(255 * 0.7,255 * 0.7,255 * 0.7,0)) );
(пишу все это на всякий случай, вдруг пригодится кому )
Пункт первый пока что остается открытым((

__________________
я Z


Отправлено Crystallize 12-07-2016 в 02:33:

Цитата:
Ku2zoff писал:
Я конечно понимаю, что ВГУЙ прикручивали испытывая анальное давление.

А подробнее?


Отправлено Ku2zoff 13-07-2016 в 18:15:

Цитата:
Shadow762 писал:
И где все же править цвета сообщений в чате и ников кто кого убил?

Цвета ников берутся в функции GetTeamColor. Вроде как-то так. Таких функций две: одна в death.cpp, другая в VGUI_TeamFortressViewport.cpp. Надо менять либо обе, либо одну из них выпиливать нафик.
Цитата:
Crystallize писал:
А подробнее?

Это образное выражение. Я имел в виду, что у вальвы не было времени как следует грамотно запилить ВГУИ, очень уж они торопились. Отсюда все эти придурошные константы и дублирование почти одинаковых функций и классов. Что творится внутри vgui.dll я вообще боюсь себе представить.


Отправлено Shadow762 16-07-2016 в 19:06:

Цитата:
Ku2zoff писал:
Цвета ников берутся в функции GetTeamColor. Вроде как-то так. Таких функций две: одна в death.cpp, другая в VGUI_TeamFortressViewport.cpp. Надо менять либо обе, либо одну из них выпиливать нафик.

В тупую указал
C++ Source Code:
gEngfuncs.pfnDrawSetTextColor( 1, 1, 1 );
- сработало) Правда осталась еще один нюанс: Все что печатается функцией ClientPrint - и там этот фокус не проходит.

__________________
я Z


Отправлено Crystallize 20-07-2016 в 16:40:

Почему в Спирите такие странные внутренние названия у параметров энтитей?


Отправлено PLut 21-07-2016 в 07:20:

Создаем спрайтик таким образом:

C++ Source Code:
pSprite = CSprite::SpriteCreate( "sprites/sprite.spr", pev->origin, FALSE );

Потом удаляем таким образом:
C++ Source Code:
if ( pSprite )
{
  UTIL_Remove( pSprite );
  pSprite = NULL;
}

Вопрос такой: есть ли смысл в обнулении указателя (pSprite = NULL)?

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 21-07-2016 в 07:22:

PLut
Зависит от тебя.
Ты будешь потом по этому указателю обращаться? Если мамой поклянёшься, что не будешь, тогда можно не обнулять.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено PLut 21-07-2016 в 07:25:

XaeroX Ну, к следующему моменту, обычно, создается новый pSprite, да и везде проверки стоят на существование указателя.

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 21-07-2016 в 08:05:

PLut
Не бывает никаких проверок на "существование указателя".
Указатель - это переменная, такая же, как int или float. Она всегда существует в своей области видимости.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено PLut 21-07-2016 в 08:16:

XaeroX Ну, я ламер же, буду знать Я имел в виду проверки на "не ноль".

__________________
Base Defense on Steam, ModDB


Отправлено pRoxxx 21-07-2016 в 08:24:

Цитата:
PLut писал:
XaeroX Ну, я ламер же, буду знать Я имел в виду проверки на "не ноль".

На так проверка на "не ноль" и есть проверка на NULL, ты освободил память, а указатель все равно будет указывать в то место памяти куда указывал. Так что пока не укажешь явно NULL, проверка на ноль не будет работать.


Отправлено XaeroX 21-07-2016 в 08:46:

PLut
Я же говорю - поклянись, что никогда, слышишь, никогда больше не обратишься к этому указателю для чтения, и я разрешу тебе его не занулять. Если ты не можешь поклясться - тогда обязательно зануляй.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено nemyax 21-07-2016 в 08:51:

И когда объявляешь "пустой" заранее, тоже нуляй =)


Отправлено PLut 21-07-2016 в 08:55:

Усёк, спасибо за ответы

Я вот чего рисовал:

__________________
Base Defense on Steam, ModDB


Отправлено KorteZZ 21-07-2016 в 09:33:

Красиво) А частички я сделал бы восходящими

__________________

Killing Floor: Horzine Outbreak


Отправлено PLut 21-07-2016 в 10:05:

KorteZZ Благодарю, совет хороший

__________________
Base Defense on Steam, ModDB


Отправлено ~ X ~ 24-07-2016 в 07:52:

PLut а ещё не забывай про сейв/ресторы, если он окажется внутри какого-нибудь класса.

Добавлено 24-07-2016 в 10:52:

Цитата:
PLut писал:
Я вот чего рисовал:

ой ___ ... если ЭТО сделано серверными спрайтами.....

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 24-07-2016 в 12:46:

PLut тебе что лень занулить? Или ты боишься что это адски затормозит код?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PLut 24-07-2016 в 20:05:

~ X ~ Ну конечно же

Дядя Миша Всмысле лень? Я уже занулил и хотел убедиться, что понимаю всю соль этого действия, а не просто всунул потому что "вот так".

__________________
Base Defense on Steam, ModDB


Отправлено Crystallize 04-08-2016 в 17:52:

Как заставить танк целиться в пушаблю? Или хлтя бы создать видимость этого?


Отправлено Дядя Миша 04-08-2016 в 19:33:

Crystallize в ксаш-моде можно, в халфе навряд ли.

Добавлено 04-08-2016 в 22:33:

А да, собсно в ксаш-моде в demo_1 есть пасхалко, когда можно туррели перевести в полностью автоматический режим (наблюдать за их работой сквозь портал). И вот они там сперва расстреливают ящики, чтобы гранты не могли за ними прятатцо. А уже потом - самих грантов.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 05-08-2016 в 02:15:

Дядя Миша ну в спирите. Ну а какую-то точечную энтить можно двигать менеджером, и чтобы танк на неё смотрел? Или код поправить как-то минимально?
Мне на самом деле танк нужен чисто как вместилище камеры. Но насколько я понял, камеру нельзя одновременно двигать и вращать саму по себе, а если смотреть камерой от какой-то ентити, то камера может смотреть только туда же, куда и энтитя.


Отправлено Дядя Миша 05-08-2016 в 06:54:

Crystallize monster_target тебе подойдет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 07-08-2016 в 07:51:

Дядя Миша Спасибо.


Отправлено Chyvachok 12-08-2016 в 18:01:

Вопрос есть, давно уже не кодил под халву, да и вообще хрен знает скоко к C++ не прикасался, решил опять попробовать что-то сделать на основе кода XashXT, но вот никто не может напомнить какой там студией он компилиться? Станет эта древняя студия на 7 винду , обязательно именно ей компилить, а то и тупо забыл уже совсем.


Отправлено Ku2zoff 13-08-2016 в 04:19:

Chyvachok 6-ая студия нужна. Желательно с сервис паком. Пятым что ли... На семерку почти всегда гарантированно встаёт. Бывало, что у некоторых не ставилась или не работала по каким-то странным причинам.

Цитата:
Chyvachok писал:
обязательно именно ей компилить

Нет. Хоть борландом, хоть гцц. Только надо сначала адаптировать код. (Хотя, возможно левые компилеры и не соберут XashXT как надо. Это же не халфа).

Добавлено 13-08-2016 в 11:19:

Поставь 2010-ю. Она нормально всё собирает (ну почти, у меня почему-то крэшатся паработы в ней собранные с руганью на какой-то код в либах STL, а не внутри дллки) и мало весит. Ну или 2013-ю или 16-ю, если хочешь напрячь моск.


Отправлено Chyvachok 13-08-2016 в 09:40:

Ku2zoff спасибо за ответ, я помнил что вроде 6-я, но решил уточнить, простую там или с сервис паком надо.

насчет 2010-ой, она у меня есть, мне для универа нужна была, да и помню что-то под сорц пытался ей делать, но ксаш я попробовал, не компилит, куча ошибок, а адаптировать у меня врядли опыта хватит.


Отправлено ~ X ~ 13-08-2016 в 11:52:

Студия без СП6 - генератор крошева.
Если б только она могла работать с компилятором 2010ой...

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Chyvachok 13-08-2016 в 12:00:

А вообще для кодинга ХЛ, есть разница какой эдишин, стандарт, профешинал, энтерпрайз и т.д.?


Отправлено Crystallize 13-08-2016 в 19:16:

Хочу использовать взгляд игрока "в вертикальной плоскости" как вектор для движения по горизонтали. На всякий случай пусть будет круговое ограничение обзора. В конце функции IN_JOYMOVE написал такое:

code:
gEngfuncs.Con_Printf ("viewangles[YAW] = %f, viewangles[PITCH] = %f\n", viewangles[YAW], viewangles[PITCH]); if (viewangles[YAW]<180) { if (viewangles[YAW] > 10)//10 is radius viewangles[YAW] = 10; if ( viewangles[PITCH] >= sqrt(100-viewangles[YAW]*viewangles[YAW]) )//100 is radius*radius viewangles[PITCH] = sqrt(100-viewangles[YAW]*viewangles[YAW]); if ( viewangles[PITCH] < -sqrt(100-viewangles[YAW]*viewangles[YAW]) ) viewangles[PITCH] = -sqrt(100-viewangles[YAW]*viewangles[YAW]); } if (viewangles[YAW]>180) { viewangles[YAW] = 360-viewangles[YAW]; if (viewangles[YAW] > 10) viewangles[YAW] = 10; if ( viewangles[PITCH] >= sqrt(100-viewangles[YAW]*viewangles[YAW]) ) viewangles[PITCH] = sqrt(100-viewangles[YAW]*viewangles[YAW]); if ( viewangles[PITCH] < -sqrt(100-viewangles[YAW]*viewangles[YAW]) ) viewangles[PITCH] = -sqrt(100-viewangles[YAW]*viewangles[YAW]); viewangles[YAW] = 360-viewangles[YAW]; }

Однако при нулевом питче и приближении к yaw 10 и 350 взгляд как бы притягивается туда и там же неплохо так застревает. Т.е. скольжение сверху и снизу круга есть, а справа и слева его нету. Что это может быть? Какой-нибудь непонятный lookspring или lookstrafe?


Отправлено Дядя Миша 13-08-2016 в 20:16:

Gimball Lock потомушта

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 13-08-2016 в 20:24:

Дядя Миша У меня вращение только по двум осям и только на 10 градусов. Какой тут Gimbal Lock? Я пока просто игроком смотрю.


Отправлено Дядя Миша 13-08-2016 в 20:53:

lookspring или lookstrafe начинают работать когда игрок движется.
Просто выключи их.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 14-08-2016 в 05:58:

Дядя Миша Нет, проблема возникает даже когда игрок просто стоит на месте.


Отправлено Chyvachok 15-08-2016 в 20:26:

Цитата:
Ku2zoff писал:
6-ая студия нужна. Желательно с сервис паком. Пятым что ли... На семерку почти всегда гарантированно встаёт.


И еще насчет 6-студии, я ее установил, а 5 сервис пак требует MDAC 2.5 или выше чтобы установиться, решил уточнить, все таки без сервис паков можно обойтись, или все таки нужно его обязательно ставить? Если да, то какой MDAC для него лучше вставить?


Отправлено Ku2zoff 17-08-2016 в 04:21:

Цитата:
Chyvachok писал:
Если да, то какой MDAC для него лучше вставить?

Никакой. Надо открыть установочный скрипт сервис пака и вырезать строчки с проверкой на этот M(y)DAC. У меня всё прекрасно работало после такой установки: ТЫЦ.


Отправлено Crystallize 19-08-2016 в 16:16:

Цитата:
Crystallize писал:
Хочу использовать взгляд игрока "в вертикальной плоскости" как вектор для движения по горизонтали. На всякий случай пусть будет круговое ограничение обзора. В конце функции IN_JOYMOVE написал такое:

Фикс
code:
if ( (viewangles[YAW]<180) && ( pow(viewangles[PITCH],2)+pow(viewangles[YAW],2) <= 100 ) ) gEngfuncs.SetViewAngles( (float *)viewangles ); if ( (viewangles[YAW]>180) && ( pow(viewangles[PITCH],2)+pow(360-viewangles[YAW],2) <= 100 ) ) gEngfuncs.SetViewAngles( (float *)viewangles );


или

code:
float radius = 10; float YawRollover = 0; if (viewangles[YAW]>180) YawRollover = 360; if ( pow(viewangles[PITCH],2)+pow(YawRollover-viewangles[YAW],2) <= pow(radius, 2) ) gEngfuncs.SetViewAngles( (float *)viewangles );


Отправлено Crystallize 24-08-2016 в 18:57:

Нужно сложить углы или повернуть вектор на угол, оба изменчивые. В calc_velocity_polar угол задаётся жестко в редакторе. Как поменять его на референс на энтитю?


Отправлено ***FantoM*** 01-10-2016 в 22:01:

При запуске карты в GS вылетает ошибка
AllocBlocck: full

Что она значит? и как ее исправить?


Отправлено XaeroX 01-10-2016 в 22:09:

***FantoM*** лайтмапы кончились. Упрощай карту.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 02-10-2016 в 12:36:

А ф ксашы заведется

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ***FantoM*** 02-10-2016 в 14:35:

XaeroX
А есть ли команды для компилятора или другие способы исправления этой ошибки?
Дядя Миша
В ксаше работает на ура.


Отправлено XaeroX 02-10-2016 в 14:54:

***FantoM***
Способ есть - закрашивать невидимые грани текстурой NULL, а если это невозможно, то увеличивать скейл текстуры на таких гранях (но без фанатизма - а то вылезет другая ошибка, Bad surface extents).

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 02-10-2016 в 15:40:

Цитата:
XaeroX писал:
закрашивать невидимые грани текстурой NULL

Я все браши создаю изначально окрашенные полностью NULL-ом. А потом окрашиваю видимые плоскости нужными текстурами. Исключение - префабы. Они у меня заранее окрашены как надо.
***FantoM*** что у тебя за карта такая, что ты превысил лимит на лайтмапы? Может быть стоит в нескольких местах оставить один источник света вместо двух/трёх/четырёх? ЕМНИП, ГС поддерживает не более 4х лайтстилей на фейс.


Отправлено XaeroX 02-10-2016 в 15:57:

Цитата:
Ku2zoff писал:
Я все браши создаю изначально окрашенные полностью NULL-ом.

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

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 02-10-2016 в 16:02:

Цитата:
Ku2zoff писал:
что у тебя за карта такая, что ты превысил лимит на лайтмапы?

Порткарты de_dust из css.
Цитата:
Ku2zoff писал:
ГС поддерживает не более 4х лайтстилей на фейс

Кажется, я понял ошибку.


Отправлено XaeroX 02-10-2016 в 16:04:

Цитата:
***FantoM*** писал:
Кажется, я понял ошибку.

Надеюсь, потом подробно расскажешь, в чём было дело, для будущих поколений, которые найдут эту тему через поиск?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 02-10-2016 в 16:48:

Цитата:
XaeroX писал:
От нулифицированных граней не отражается свет, и из-за этого некоторые карты оказываются освещены не совсем адекватно.

Это смотря что окрашивать. У меня нуллом обычно остаются окрашены маленькие поверхности, типа верхушки светильника под потолком, или решётки вентиляции (на которую игрок не сможет посмотреть с другой стороны) Ну и т.д. То есть я вместо того, чтобы исправлять ошибки как у Фантома, закрашиваю на готовых картах случайно упущенные плоскости в прямой видимости игрока, и иногда (но очень редко) те невидимые, от которых должен отражаться свет.


Отправлено ***FantoM*** 04-10-2016 в 01:10:

Избавиться от ошибки мне не удалось.

Добавлено 04-10-2016 в 07:10:

Кому нужны исходники de_dust из кс:с вот ссылка https://yadi.sk/d/6NeP6ElEwAa9T


Отправлено KiQ 04-10-2016 в 01:52:

***FantoM*** так кому они нужны, если не компилятся?

__________________
-Brain is dead-


Отправлено ***FantoM*** 04-10-2016 в 02:05:

KiQ ошибка не в компиляции карты, а при запуске ее на GS.
К тому же,Xash хорошо переваривает такие карты.


Отправлено KiQ 04-10-2016 в 02:10:

***FantoM*** а, ну это тогда под ксашем гонять только

__________________
-Brain is dead-


Отправлено Cybermax 04-10-2016 в 02:43:

Цитата:
***FantoM*** писал:
Избавиться от ошибки мне не удалось.

Добавлено 04-10-2016 в 07:10:

Кому нужны исходники de_dust из кс:с вот ссылка https://yadi.sk/d/6NeP6ElEwAa9T


Пример как надо делать. http://gamebanana.com/maps/173939

__________________


Отправлено ***FantoM*** 04-10-2016 в 16:31:

Cybermax
Полигончиков маловато.


Отправлено Cybermax 04-10-2016 в 17:36:

Если это шутка, то не смешная.

__________________


Отправлено ***FantoM*** 04-10-2016 в 18:13:

Нет, это не шутка
По сравнению с оригиналом де_даст из ксс, на карте по ссылке полигонов мало.


Отправлено JPEG 04-10-2016 в 18:32:

Цитата:
***FantoM*** писал:
По сравнению с оригиналом де_даст из ксс, на карте по ссылке полигонов мало.

да потому что на гс лучше не надо делать много поликов, это оптимизация. У тебя от этого и не компилица

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 04-10-2016 в 18:41:

Цитата:
Yo Den писал:
это оптимизация

Я так и понял.

Цитата:
Yo Den писал:
У тебя от этого и не компилица

При компиляции ошибок у меня не было.


Отправлено JPEG 04-10-2016 в 18:52:

Цитата:
***FantoM*** писал:
При компиляции ошибок у меня не было.

тем не менее на гс не запускается, как раз из-за этого

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ***FantoM*** 09-10-2016 в 19:04:

VC6 -> vc2005

Хочу скомпилировать проект от Visual C++ 6 в Visual C++ 2005
вылетают ошибки

code:
error C2668: 'sin' : ambiguous call to overloaded function 1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(577): could be 'long double sin(long double)' 1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(529): or 'float sin(float)' 1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(124): or 'double sin(double)' 1> while trying to match the argument list '(int)' : error C2668: 'cos' : ambiguous call to overloaded function 1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(551): could be 'long double cos(long double)' 1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(503): or 'float cos(float)' 1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(116): or 'double cos(double)' 1> while trying to match the argument list '(int)'


что означают этu ошибкu?и как их исправить?


Отправлено Ph03n1x 09-10-2016 в 19:16:

***FantoM***
По месту вызовов sin и cos аргумент, который передаёшь внутрь, кастуй в double
Примерно так:

C++ Source Code:
sin(static_cast<double>(a))


Добавлено 09-10-2016 в 22:16:

Либо тип передаваемого аргумента смени на дробный


Отправлено Crystallize 11-11-2016 в 13:07:

env_laser бьёт из tank_laser, как сделать чтобы положение спрайта (не декали) в точке попадания обновлялось каждый кадр?


Отправлено ILZM 26-11-2016 в 17:30:

Появилось пару вопросов, не соизволите ли ответить.

0. Будет ли message overflow на полном серваке при наличии оружия, стреляющего каждые 0.05 секунд и посылающего при этом по 2 сообщения на клиент?

1. Что выгоднее в плане оптимизации - 2 разделенных сообщения, которые имеют заголовки соответственно, или одно, которое включает в себя инфу с них обоих (Это возможно, потому что они касаются одного события и посылаются в один момент)?

2. В кашке 16 каналов для звуков, но где найти их идентификаторы? В заголовке только до 7 идет счет (CHAN_NETWORKVOICE_BASE). Просто нужно максимальное количество каналов для создания более живого звука nbgf как в батле3. Там у них на один только выстрел используется по 4 слоя звука, судя по скачанным файлам. Да и еще мощный басс выдается при выстреле.

3. Что если я хочу убрать hud патронов. Инфа с сервера про патроны как-нибудь связана с чем-то помимо huda? Предсказывания в кашке нету, если что.

4. EMIT_SOUND на серваке посылает инфу на клиент? А что если посылать только одно универсальное сообщение события выстрела, при котором проиграется подходящий кешированный звук, проиграется анимация, воспроизводятся всякие мазлфлеши и ежектбрасы? ̶H̶e̶l̶l̶o̶,̶ ̶X̶W̶i̶d̶e̶r̶


Отправлено ILZM 27-11-2016 в 11:00:

Эх, щас бы свои движки написать или как минимум два года собственный мод разрабатывать, и не ответить в этой теме... А раньше отвечали

Зачем при каждом создании поля в классе используется DEFINE_FIELD? Там какой-то offset считается, но зачем он нужен для поля обычного типа, а не структуры, допустим?


Отправлено XaeroX 27-11-2016 в 11:08:

Цитата:
ILZM писал:
А раньше отвечали

Молодые были, дурные.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 27-11-2016 в 13:30:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ILZM 27-11-2016 в 14:02:

Дядя Миша хорошо, больше не буду, обещаю. Это у меня привычка осталась после вас. Мне очень нужна помощь, потому что я в С и С++ не шарю (даже если и набрал 5 из 10 баллов в том опросе), только немножко в Java Хотелось бы не наломать дров изначально


Отправлено XaeroX 27-11-2016 в 16:51:

Цитата:
ILZM писал:
Это у меня привычка осталась после вас.

Ну раз ты смог перенять наши привычки - вероятно, и знания, которые определяли их наличие, тоже перенял. Я предлагаю (и народ, вероятно, не будет против) отвечать тебе сразу после того, как ты покажешь нам рабочую инверсную кинематику в ксаше, о которой ты говоришь в каждом втором посте.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ILZM 29-11-2016 в 20:29:

XaeroX делать ИК на старой платформе, в которой устаревший геймплей - нецелесообразно. Так что давайте повременим с ИК)))0)0

SelectNextItem в player.cpp не используется нигде. И по игровой части все нормально без нее. И это на протяжении 18 лет стояло в коде


Отправлено nemyax 29-11-2016 в 20:33:

Что вы в данном случае понимаете под инверсной кинематикой?


Отправлено KiQ 29-11-2016 в 21:13:

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

__________________
-Brain is dead-


Отправлено nemyax 29-11-2016 в 21:24:

Я к тому, что в некоторых движках айкеем называют динамическую коррекцию анимаций в случае, если особо обозначенная кость с чем-нибудь колоизирует. А у аниматоров айкей — совсем другое.


Отправлено ILZM 29-11-2016 в 22:03:

nemyax это одно и то же как и в редакторах, просто сама игра двигает хандлер. Это не только для коллоизации используется, а еще для перестановки ног в случае поворота туловища или просто для корректных переходов анимаций ног.

KiQ что ты подразумеваешь по большинство? В Max Payne 3, Battlefieldы всякие, HL2 для страйдеров как минимум, Mafia 3, Dead Space, GTA, наверное Watch Dogs, Unchatred, Tomb Raider и т.д. Все игры, где используются "живые анимации". Вот недавно кто-то туловище без торса показывал, там оно тоже было, так что большинство TPS или FPS используют


Отправлено nemyax 29-11-2016 в 22:11:

Цитата:
ILZM писал:
Вот недавно кто-то туловище без торса показывал, там оно тоже было

Обычные анимированные ноги. Не думаю, что там прокеены положения эффекторов на пятках и задействован реалтаймовый решатель — нахрена?

Добавлено 30-11-2016 в 01:11:

Цитата:
ILZM писал:
Все игры, где используются "живые анимации".

Что такое живые анимации?


Отправлено ILZM 30-11-2016 в 07:00:

nemyax хорошо. Как бы ты реализовал без ИК, допустим ходьбу по ступенькам в HL? Очень хотелось бы послушать . Если что, ступеньки бывают разной высоты


Отправлено nemyax 30-11-2016 в 07:15:

Стырил бы код из третьего дума =)
Там проигрываются готовые анимации, но модифицируются в зависимости от условий.


Отправлено ILZM 30-11-2016 в 07:35:

nemyax не мог бы ты привести любой пример как они меняются на ходу? Я просто давно в него не играл

Проверь мое баловство. На латинскую P переключение между видами. Желательно погулять с маленькой скоростью через шифт или упереться в стенку. http://rgho.st/7hkWwgnK7


Отправлено nemyax 30-11-2016 в 08:23:

Цитата:
ILZM писал:
не мог бы ты привести любой пример как они меняются на ходу?

Вот немножко документации:
https://www.iddevnet.com/doom3/walkik.php

Цитата:
ILZM писал:
Проверь мое баловство.

Запустил, походил. Что я должен там увидеть? По ступенькам поднимается скачками тыкдыкдыкдык, двигается медленно и как будто очень мелкими шажочками.


Отправлено ILZM 30-11-2016 в 10:57:

nemyax ты пишешь в начале что ИК не нужно, но потом скидываешь документацию про настройку ИК . Ладно

В "демке" ноги проваливаются в землю, потому что обычной интерполяции недостаточно и нужно уровень ног подправлять ИК. Это как один из примеров для чего она еще нужна


Отправлено nemyax 30-11-2016 в 11:40:

Цитата:
ILZM писал:
ты пишешь в начале что ИК не нужно

Не в принципе не нужно, а не требуется для реализации тех несчастных ног.

Добавлено 30-11-2016 в 14:40:

Иды реализовали только один частный случай IK, да и то не чистого, а микшируемого с существующей анимацией. Судя по всему, игровым движкам другого и не требуется.
Если хочешь генеричную систему, можно утянуть у блендера, например. Но только зачем?


Отправлено ILZM 30-11-2016 в 11:45:

nemyax у тебя есть примерное решение? Пиши, возьму на заметку


Отправлено nemyax 30-11-2016 в 13:29:

ILZM
У меня нету решения, откуда? =)
Но думаю, в сети полно пейперов по IK, да и пара реализаций найдётся. Тот же блендер или Kraken. А что ты собрался делать?


Отправлено Дядя Миша 30-11-2016 в 15:03:

Цитата:
nemyax писал:
Не думаю, что там прокеены положения эффекторов на пятках и задействован реалтаймовый решатель — нахрена?

это проще, чем анимировать. Оно еще со времен второй халфы так.

ILZM еле запустил твою поделку. Ты почему не оформляешь такие вещи в виде самостоятельной демки? Ты и правда веришь что я твоим гамном буду папку с движком перезаписывать? В след. раз делай самодостаточный билд. А что ты нам собственно хотел показать?
Что ты вырезал команду thirdperson? Других отличий я не увидел.

Добавлено 30-11-2016 в 18:03:

А вот вижу отличия. Ты зачем-то раскромсал 9-way blending на отдельные анимации. Так же порадовала анимка aim_layer_ak47_mid где игрок превращается в чумодан. Такого я и взаправду еще не видывал. Оч. классно сделано.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 30-11-2016 в 15:12:

Цитата:
Дядя Миша писал:
это проще, чем анимировать

Ну так анимировать по-любому придётся. Откуда возьмётся сиквенс для эффекторов-то? Кому не нравится анимировать, делают motion capture.


Отправлено ILZM 30-11-2016 в 17:09:

Дядя Миша эта анима идет как слой. Она добавляется на конечную анимацию ходьбы, только там с руками была проблема. Пока не понятно как в КСГО на 24 кадровую анимацию добавляя 1-кадровую получают не дребезжащее удерживание оружия в руках. Там либо ИК, либо какие-то магические операции

nemyax у тебя в игре 20 пистолетов с похожими анимациями. Ты собрался их все 20 делать? Достаточно сдвинуть эффектор и все.



Как ты анимациями сделаешь разный уровень ног на ступеньках? Если на земле плоскость ровная, то на лестнице она возвышенная. У игрока тоже меняется угол ног. В совокупности это около 50 анимаций только на idle и walk. Ты хоть раз ковырял анимации игр? Такое ощущение, что тебе кажется типа на каждый чих есть готовая анимация, но это не так. Их количество уменьшается всякими слоями и ИК контроллерами


Отправлено Дядя Миша 30-11-2016 в 17:50:

Цитата:
ILZM писал:
получают не дребезжащее удерживание оружия в руках

всмысле джиттер при поворотах игрока? Это элементарно решается.
Модель для этого редактировать не надо. Да вот когда займусь развесовкой, сразу оптом всё это говно сделаю. И гейт на сервере и 9-way и инверсную кинематику и компилятор моделей новый. Но щас я занят ландшафтами и материалами.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 30-11-2016 в 18:04:

Цитата:
ILZM писал:
Ты хоть раз ковырял анимации игр? Такое ощущение, что тебе кажется типа на каждый чих есть готовая анимация, но это не так.

Что значит ковырял, если я их делал? И смотря что считать чихом. "Анимации" пушек на полтора ключа-инвалида не имеет смысла делать с применением IK.
Да, я согласен, что колхозный IK для нижних конечностей полезен в игровом движке. Если ты такое хочешь прикрутить, то нет вопросов. Но ты ведь так и не ответил, что ты собираешься делать.


Отправлено Дядя Миша 30-11-2016 в 18:37:

nemyax в чём колхозность? Есть игры, где вся анимация построена на инверсной кинематике.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 30-11-2016 в 19:55:

Дядя Миша
В том смысле, что он узкозаточенный под одну задачу и не делает всего, что обычно связывают с IK.


Отправлено Дядя Миша 30-11-2016 в 20:02:

nemyax да с чего ты вообще взял что только нижних конечностей?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 30-11-2016 в 20:05:

Я про реализацию в думчеге. Там целевое использование как раз для нижних.


Отправлено Дядя Миша 30-11-2016 в 20:06:

Я вообще впервые слышу чтобы в Doom III была инверсная кинематика.
Я про хл2-шную.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 30-11-2016 в 20:20:

С хл2-шной не сталкивался. Вы хотите сделать такую?


Отправлено Дядя Миша 30-11-2016 в 20:43:

Меня пока что больше развесовка интерисует, а не кинематика. За кинематику меня пока никто не спрашивал, а вот за развесовку многие.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 30-11-2016 в 21:54:

С меня урок по новой развесовке


Отправлено Дядя Миша 30-11-2016 в 22:38:

nemyax я забыл тебе сказать (или не забыл, не помню). Но я тут проанализировал свободные переменные в формате студиомоделей и пришёл к такому выводу, что можно запилить развесовку как в хл2, вообще не нарушая совместимость. То есть моделька с развесовкой будет корректно грузиться и отображаться в голдсорсе и джеке. Но естественно без ее учёта.
Ну и естественно будет понимать smd от сорса при компиляции.
Но это потом, когда я вплотную займусь моделями. Пока что я работаю над ландшафтами и системой материалов.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 30-11-2016 в 22:49:

Так это ж просто праздник какойта!

Цитата:
Дядя Миша писал:
я забыл тебе сказать (или не забыл, не помню)

Помнишь, забыл =)


Отправлено Chyvachok 03-12-2016 в 15:23:

А как в 2010 студии сделать чтобы после компиляции студия сама копировала длл-ки в нужную папку?


Отправлено JPEG 03-12-2016 в 15:28:

Цитата:
Chyvachok писал:
А как в 2010 студии сделать чтобы после компиляции студия сама копировала длл-ки в нужную папку?

не совсем то, но я лично делал батник для этой цели. Скомпилировал, запустил бат, запустил игру. Можно даже в ярлык запуска игры добавить это

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено ~ X ~ 03-12-2016 в 15:31:

Chyvachok кагбэ тагжэ как и в шестой. Кастом билд вроде. Или пост-билд. Я постоянно пользуюсь этим.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 03-12-2016 в 15:48:

Цитата:
~ X ~ писал:
Кастом билд вроде. Или пост-билд.

Второе.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ILZM 03-12-2016 в 16:24:

1. Объясните концепт CBasePlayerItem. У него есть два состояния?

1) Цепляется к игроку. Невидимое и не посылается на клиент
2) Материализующееся и игрок может его касаться

2. В каком месте создаются элементы массива m_rgpPlayerItems? Т. е. сами пушки

3. Хочется создать энтити с двумя состояниями: нематериальное у игрока, и материальное само по себе. Это нужно два разных метода Spawn?

4. Насколько безопасна такая реализация? По задумке энтити не видно.

C++ Source Code:
1
class CGlock18 : public CBasePlayerWeapon
2
{
3
  ...
4
private:
5
  CGlock18Magazine *m_pMagazine;
6
};
7
 
8
void CGlock18 :: Spawn ( void )
9
{
10
  ...
11
  m_pMagazine = ( CGlock18Magazine *)CBaseEntity :: Create ( "magazine_glock18", Vector ( 0, 0, 0 ), Vector ( 0, 0, 0 ) );
12
}


Отправлено Дядя Миша 03-12-2016 в 16:51:

Цитата:
ILZM писал:
1) Цепляется к игроку. Невидимое и не посылается на клиент
2) Материализующееся и игрок может его касаться

Да.

Цитата:
ILZM писал:
В каком месте создаются элементы массива m_rgpPlayerItems? Т. е. сами пушки

маппер на карту раскладывает

Цитата:
ILZM писал:
Хочется создать энтити с двумя состояниями: нематериальное у игрока, и материальное само по себе. Это нужно два разных метода Spawn?

Ну ты же видишь от чего зависит материальность и невидимость? Включил\выключил. Функция спавн - это просто список того что надо сделать при спавне. Установить модель, установить солид и моветип. Но делать это можно из любого участка. Я канеш подозреваю, что там сложился некий стереотип благодаря первой кваке, которая не умела прекэшировать модель во время игры из-за чего менять их можно было только из списка уже закэшированных и народ предпочитал вообще не заморачиваться.

Цитата:
ILZM писал:
Насколько безопасна такая реализация? По задумке энтити не видно.

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ILZM 03-12-2016 в 17:18:

Цитата:
Дядя Миша писал:

Ну ты же видишь от чего зависит материальность и невидимость? Включил\выключил. Функция спавн - это просто список того что надо сделать при спавне. Установить модель, установить солид и моветип.


Это прост от джавы мышление такое. Так и хочется запихать все в методы, и понаписать всякие геттеры и сеттеры

Цитата:
Дядя Миша писал:

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


Помимо количества патронов в будущем будет побольше инфы, но хотя да, ее мало. Просто мне не хочется делать на манер weaponbox'а, который как бы создается на "коленке". Ведь легче просто отцепить от оружия магазин. Геймплей мода требует общий класс как для монстров, так и для игрока и оружия. А может быть у меня просто ООП головного мозга


Отправлено ~ X ~ 03-12-2016 в 17:19:

Цитата:
ILZM писал:
3. Хочется создать энтити с двумя состояниями: нематериальное у игрока, и материальное само по себе. Это нужно два разных метода Spawn?

Это нужно дождаться кодов XDM

Материальность и нематериальность мало зависят от видимости. А если энтитя в контейнере? А если она создаётся для монстермейкера? Много всяких "если". Я завёл existence state.

Цитата:
Дядя Миша писал:
нет никакого смысла хранить патроны в виде энтити.

подтверждаю. +1.
Из личного опыта: перевод параметров патронов из энтить в простой текстовик решил кучи проблем.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 03-12-2016 в 17:39:

Цитата:
ILZM писал:
Так и хочется запихать все в методы, и понаписать всякие геттеры и сеттеры

Мой тебе совет: хочется - пиши.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 03-12-2016 в 17:42:

Цитата:
ILZM писал:
Просто мне не хочется делать на манер weaponbox'а, который как бы создается на "коленке". Ведь легче просто отцепить от оружия магазин

ну создай налиту ammo_9mmclip и отними у игрока 18 патронов. Оно просто неудобно когда из игрока вываливается куча энтить. Вон в сталкере так сделали, вы видели что бывает со сталкером, если снять с игрока ограничение веса и на протяжении всей игры хватать разные ништяки, а потом вконце игры взять и вывалить всё это добро прямо перед собой?
Вылетит сталкер к такой-то матери. Но сначала фпс упадёт почти до нуля.
Да от простых коробочек-кубиков.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ILZM 03-12-2016 в 17:53:

~ X ~ мне лично не нравится, когда параметры геймплея торчат снаружи, и открыты для пользователя. Конечно, надо еще такого пользователя найти, чтобы он хотя бы имел интерес менять их, но все же.

Это не просто сборник параметров, а способ хранения инфы на протяжении всей игры. Магазины то разные бывают, от пулемета, например. У него там свои фичи есть, и писать практически два-три одинаковых кода мне совесть не позволит.

Чем плохи классы? Я ̶и̶з̶ ̶д̶е̶р̶е̶в̶н̶и̶ на джава уже набрался немного опыта в ООП, и реализовать такое мелкое не составит труда. Это у тебя какие проблемы были?

Добавлено 03-12-2016 в 23:50:

Дядя Миша у мене реалистичный мод. Вырежу нахрен pszAmmo и заставлю игрока думать патронами.

В !теории максимум 3 энтити оружия + 9 энтити магазинов. Это же немного, если сравнивать с массивом кватернионов для 512 костей и 32 игроков.

Добавлено 03-12-2016 в 23:53:

XaeroX Ок. Рад что ответили все. Ушел писать с уверенностью ̶M̶a̶g̶e̶n̶t̶a̶


Отправлено Дядя Миша 03-12-2016 в 19:01:

Цитата:
ILZM писал:
у мене реалистичный мод

в таком случае где инверсная кинематика?

Цитата:
ILZM писал:
3 энтити оружия + 9 энтити магазинов. Это же немного, если сравнивать с массивом кватернионов для 512 костей и 32 игроков.

а зачем сравнивать потроны с кватернионами?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 03-12-2016 в 20:39:

Цитата:
ILZM писал:
~ X ~ мне лично не нравится, когда параметры геймплея торчат снаружи, и открыты для пользователя. Конечно, надо еще такого пользователя найти, чтобы он хотя бы имел интерес менять их, но все же.

Не просто пользователь, а администратор сервера. Большая разница. А скилл.цфг ты тоже упразднил? Ещё удали user/settings.scr - будет полнйы кайф. *сарказм*

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено ILZM 04-12-2016 в 18:54:

C++ Source Code:
int		m_afButtonLast;
int		m_afButtonPressed;
int		m_afButtonReleased;


Это у игрока, но так же еще у энтварсов есть pev->button. Что это вообще такое? Как то все запутано... В амхмоде только button и oldbutton были, и этого было достаточно.

C++ Source Code:
1
void CBasePlayer::PlayerUse ( void )
2
{
3
  // Was use pressed or released?
4
  if ( ! ((pev->button | m_afButtonPressed | m_afButtonReleased) & IN_USE) )
5
    return;


Ну нихрена себе

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


Отправлено KiQ 04-12-2016 в 19:02:

ILZM pressed и released это стейты кнопки - нажали её или отжали

__________________
-Brain is dead-


Отправлено Дядя Миша 04-12-2016 в 19:23:

Цитата:
ILZM писал:
Мне надо узнать побольше инфы об этих переменных

ну это для удобства сделано. Так-то они не особо нужны.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ILZM 04-12-2016 в 19:26:

KiQ значит m_afButtonLast то, что нужно

Добавлено 05-12-2016 в 01:26:

Дядя Миша pev->button хранит кнопки из текущего кадра, а m_afLast из прошлого?


Отправлено Дядя Миша 04-12-2016 в 20:15:

Послушай, как ты собрался делать инверсную кинематику, если не в состоянии отследить три строчки кода?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 07-12-2016 в 08:17:

ILZM посмотри просто, откуда они считаются. Скорее всего, именно по pev->button. Созданы они для удобства - не более.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено ***FantoM*** 11-12-2016 в 09:26:

Как избавиться от двух пересекающиеся в центре линии
при рисовании спрайта через TriAPI?


Отправлено PLut 11-12-2016 в 11:51:

***FantoM*** Размер спрайта - степень двойки?

__________________
Base Defense on Steam, ModDB


Отправлено ***FantoM*** 11-12-2016 в 14:30:

PLut у меня текстуры и спрайты всегда кратны 16.
вот такой у меня код

C++ Source Code:
1
gEngfuncs.pTriAPI->RenderMode(kRenderTransColor);
2
gEngfuncs.pTriAPI->Brightness(1.0);
3
gEngfuncs.pTriAPI->Color4ub(255, 255, 255, 255);
4
gEngfuncs.pTriAPI->CullFace(TRI_NONE);
5
 
6
gEngfuncs.pTriAPI->SpriteTexture((struct model_s *)gEngfuncs.GetSpritePointer( SPR_Load("sprites/blackblur.spr") ), 0);
7
gEngfuncs.pTriAPI->Begin(TRI_QUADS);
8
DrawQuad(0, 0, ScreenWidth/2, ScreenHeight/2);
9
gEngfuncs.pTriAPI->End();
10
 
11
gEngfuncs.pTriAPI->SpriteTexture((struct model_s *)gEngfuncs.GetSpritePointer( SPR_Load("sprites/blackblur.spr") ), 1);
12
gEngfuncs.pTriAPI->Begin(TRI_QUADS);
13
DrawQuad(ScreenWidth/2, 0, ScreenWidth, ScreenHeight/2);
14
gEngfuncs.pTriAPI->End();
15
 
16
gEngfuncs.pTriAPI->SpriteTexture((struct model_s *)gEngfuncs.GetSpritePointer( SPR_Load("sprites/blackblur.spr") ), 2);
17
gEngfuncs.pTriAPI->Begin(TRI_QUADS);
18
DrawQuad(ScreenWidth/2, ScreenHeight/2, ScreenWidth, ScreenHeight);
19
gEngfuncs.pTriAPI->End();
20
 
21
gEngfuncs.pTriAPI->SpriteTexture((struct model_s *)gEngfuncs.GetSpritePointer( SPR_Load("sprites/blackblur.spr") ), 3);
22
gEngfuncs.pTriAPI->Begin(TRI_QUADS);
23
DrawQuad(0, ScreenHeight/2, ScreenWidth/2, ScreenHeight);
24
gEngfuncs.pTriAPI->End();

в аттаче спрайт.

Добавлено 11-12-2016 в 20:30:

_


Отправлено ~ X ~ 11-12-2016 в 16:06:

Статья с гейдева.ру года так 2001го советует нам добавлять/вычитать УВ-координаты т.е. уменьшать проекцию меша на текстуру, чтобы края текстуры уходили за пределы билинейного размыватора. Мне пришлось делать так. А ещё там говорилось, что, чтобы избежать щелей между фейсами, надо, чтобы они наезжали друг на друга. Тоже чуть-чуть. В общем, уныние, анальщина, хаки и т.п.

***FantoM***
(struct model_s *)gEngfuncs.GetSpritePointer( SPR_Load("sprites/blackblur.spr") ), 0
аж ЧЕТЫРЕ раза за один кадр - стыдоба. Надеюсь, это черновой код.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 11-12-2016 в 16:23:

Цитата:
~ X ~ писал:
А ещё там говорилось, что, чтобы избежать щелей между фейсами, надо, чтобы они наезжали друг на друга.

А ещё там небось был туториал "как пофиксить з-файтинг"?
https://twitter.com/JoachimHolmer/s...602767081848832

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 11-12-2016 в 17:29:

~ X ~ Слаботало!

Цитата:
~ X ~ писал:
аж ЧЕТЫРЕ раза за один кадр - стыдоба.

а как надо??


Отправлено Дядя Миша 11-12-2016 в 18:22:

Цитата:
~ X ~ писал:
(struct model_s *)gEngfuncs.GetSpritePointer( SPR_Load("sprites/blackblur.spr") ), 0

те, кто API пишут, они должны рассчитывать на подобное использование.
Я вот во всяком случае рассчитываю. Хочешь покажу что XDM у меня пишет?
code:
Error: events/fx/flametrail.sc: not a FEV_GLOBAL event missing origin. Ignored. Error: events/fx/trail.sc: not a FEV_GLOBAL event missing origin. Ignored. Error: events/fx/lightp.sc: not a FEV_GLOBAL event missing origin. Ignored. Error: events/fx/teleporter.sc: not a FEV_GLOBAL event missing origin. Ignored.


Я надеюсь это у тебя черновой код. Позорище.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 11-12-2016 в 20:54:

Дядя Миша очередной ксашевысер в тред, где тебя не спрашивали. Позорище.

***FantoM*** по-хорошему, спрайты надо сначала, ОДИН РАЗ загрузить, проверить, а потом рисовать по указателям или хэндлам. Коды hud_zoomcrosshair.цпп тебе в помощь. Например:

C++ Source Code:
1
int CHudZoomCrosshair::VidInit(void)
2
{
3
  //conprintf(1, ("CHudZoomCrosshair::VidInit()\n");
4
  if (m_iRenderMode >= 0)
5
    m_pTexture = (model_t *)gEngfuncs.GetSpritePointer(SPR_Load("sprites/c_zoom.spr"));
6
 
7
  return 1;
8
}
9
 
10
 
11
int CHudZoomCrosshair::Draw(const float &flTime)
12
{
13
  if (m_iRenderMode < 0)
14
    return 0;
15
 
16
  if (m_pTexture == NULL)
17
    return 0;// do not disable, we still need FOV updates!
18
 
19
  //if (IEngineStudio.IsHardware() <= 0)
20
    if (gHUD.m_iHardwareMode <= 0)// XDM3035: software mode does not support this code
21
      return 0;
22
 
23
  float left = (ScreenWidth - ScreenHeight)/2.0f;
24
  float right = left + ScreenHeight;
25
  float centerx = ScreenWidth/2.0f;
26
  float centery = ScreenHeight/2.0f;
27
 
28
  gEngfuncs.pTriAPI->RenderMode(m_iRenderMode);//kRenderTransColor for indexalpha
29
  gEngfuncs.pTriAPI->Brightness(1.0f);
30
  gEngfuncs.pTriAPI->Color4ub(255, 255, 255, 255);
31
  gEngfuncs.pTriAPI->CullFace(TRI_NONE);
32
  //   ___   //
33
  //b |1|2| b//
34
  //b |4|3| b//
35
  // screen  //
36
  if (gEngfuncs.pTriAPI->SpriteTexture(m_pTexture, 0))
37
  {
38
    gEngfuncs.pTriAPI->Begin(TRI_QUADS);
39
    DrawQuad(left,		0,			centerx,	centery);
40
    gEngfuncs.pTriAPI->End();
41
  }
42
  if (gEngfuncs.pTriAPI->SpriteTexture(m_pTexture, 1))
43
  {
44
    gEngfuncs.pTriAPI->Begin(TRI_QUADS);
45
    DrawQuad(centerx,	0,			right,		centery);
46
    gEngfuncs.pTriAPI->End();
47
  }
48
  ...
49
}


WE LOVE BICYCLES YAY!

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 11-12-2016 в 21:40:

Цитата:
~ X ~ писал:
очередной ксашевысер в тред, где тебя не спрашивали. Позорище.

А, ну дебажь еще полгода тогда

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 11-12-2016 в 22:06:

Цитата:
~ X ~ писал:
(const float &flTime)

Надеюсь, это черновой код.

Добавлено 12-12-2016 в 05:06:

Дядя Миша
Не мешай человеку дебажить. Ты же видишь - в этом весь смысл. А ну как всё внезапно отдебажится, и что тогда, пупок целыми днями разглядывать, как Гуль?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ~ X ~ 12-12-2016 в 06:22:

Я к тому, что такие вещи было бы нелпохо писать туда, где это уместно.
У нас скоро в каждом треде будет по странице на тему "XDM vs Xash".

XaeroX бугурт от избытка спецификаторов?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 12-12-2016 в 06:38:

~ X ~ бугурт от передачи флоата по константной ссылке, очевидно же.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 12-12-2016 в 09:02:

Цитата:
XaeroX писал:
Надеюсь, это черновой код.

Конечно черновой. Чистовой код вот так должен выглядеть:

code:
(const uint32_t &flTime)

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ghoul [BB] 12-12-2016 в 11:13:

Цитата:
XaeroX писал:
А ну как всё внезапно отдебажится, и что тогда, пупок целыми днями разглядывать, как Гуль?


Вот ИМЕННО!
Ведь можно так доразглядываться, что радугу увидит. А это значит, что всё мирское перестанет его интересовать.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Luciferchik 03-01-2017 в 14:54:

Чтоб не засорять лишними темами напишу в тут.
Собственно проблема в том, что я не могу понять что не подключил к проэкту или не написал инклюд где-то по этому прошу помощи.Лог прелагается.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 03-01-2017 в 16:48:

Luciferchik
Гуглил?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 03-01-2017 в 17:44:

Цитата:
XaeroX писал:
Luciferchik
Гуглил?

Находил только битые ссылки на туторы

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 03-01-2017 в 19:01:

Luciferchik
Ну я к тому, что проверял ли ты общие советы, которые там дают? Про precompiled header-ы, например. И вообще, какая версия студии, проект сам создавал или взял готовый?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 03-01-2017 в 19:13:

Цитата:
XaeroX писал:
Luciferchik
Ну я к тому, что проверял ли ты общие советы, которые там дают? Про precompiled header-ы, например. И вообще, какая версия студии, проект сам создавал или взял готовый?
студия шестая, исходники шейдеров взяты из мода "Gomod" и перенесен на чистый сдк 2.3 халвы

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 03-01-2017 в 19:44:

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

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 03-01-2017 в 20:05:

Цитата:
XaeroX писал:
Luciferchik
Ну это код смотреть надо. Какие-то хедеры не подключены. Подозреваю, что исходники были перенесены неаккуратно - авторами были сделаны ещё какие-то изменения в других файлах клиентки.
Ща предоставлю

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Luciferchik 03-01-2017 в 20:05:

Цитата:
Luciferchik писал:
Ща предоставлю

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 04-01-2017 в 07:26:

Luciferchik
Ну так у тебя заголовочные файлы STL не подключены, разумеется, не будет компилироваться. Открывай исходники GoMod и смотри, в каком месте они там подключены.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 04-01-2017 в 13:06:

Цитата:
XaeroX писал:
Luciferchik
Ну так у тебя заголовочные файлы STL не подключены, разумеется, не будет компилироваться. Открывай исходники GoMod и смотри, в каком месте они там подключены.
А про STL можно по подробней, а то не очень знаком с ним.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 04-01-2017 в 13:27:

Ну там std::string используется, для него надо подключить один из заголовочных файлов STL, а именно #include <string>. Поищи поиском по тому моду, откуда воду брал - в каком-то файле он стопроцентно подключается.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 04-01-2017 в 13:42:

Цитата:
XaeroX писал:
Ну там std::string используется, для него надо подключить один из заголовочных файлов STL, а именно #include <string>. Поищи поиском по тому моду, откуда воду брал - в каком-то файле он стопроцентно подключается.
нашел в hud.h вот только после компиля такие ошибки думаю, что не подключены некоторые либы.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 04-01-2017 в 14:23:

Правильно думаешь. Как минимум, нужно подключить opengl32.lib.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 04-01-2017 в 14:46:

Цитата:
XaeroX писал:
Правильно думаешь. Как минимум, нужно подключить opengl32.lib.
Все скомпилил, большое спасибо за помощь!

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено PLut 07-01-2017 в 21:05:

Индекс локального игрока на клиенте всегда будет единицей? Иначе говоря, можно ли получать свой никнейм таким способом: g_PlayerInfoList[1].name ? То есть мне не нужны ники других игроков (как в таблице счета, например), нужен только свой.

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 07-01-2017 в 21:10:

Цитата:
PLut писал:
Индекс локального игрока на клиенте всегда будет единицей?

да, всегда. Но не забывай про выделенные сервера, где локального игрока нет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PLut 07-01-2017 в 21:57:

Дядя Миша Спасибо, а на выделенных индекс может быть другим? То есть, возможно, что если я зайду на какой-нибудь выделенный сервер и эта строчка мне выдаст ник другого игрока?

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 08-01-2017 в 08:36:

PLut ты вообще не понимаешь как этот индекс назначается что ли?
В порядке подключения игроков к серверу. На листен-сервере тебя автоматически подключает в игру в момент его создания, поэтому локальный игрок всегда заходит на сервер первым. В выделенном сервере, кто первый зашёл - тот и будет иметь индекс 1. А потом возможна ситуация, когда все игроки покинули сервер и зашли новые и опять кому-то первый индекс назначился.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PLut 08-01-2017 в 11:01:

Дядя Миша Ну если бы я понимал, я бы спрашивал?
Спасибо, это то, что мне нужно было знать.

__________________
Base Defense on Steam, ModDB


Отправлено Luciferchik 14-01-2017 в 00:25:

Хотелось бы узнать, что нужно крутить в тенях от тов.Бузера, что бы достичь такого наложения как в хакнутых халфовских?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено PLut 13-02-2017 в 16:36:

Что такое ASSERT?

В чем разница между

C++ Source Code:
1
if ( !gmsgSayText )
2
  return;
3
 
4
MESSAGE_BEGIN( MSG_ALL, gmsgSayText, NULL );
5
...
6
MESSAGE_END();

и
C++ Source Code:
1
ASSERT( gmsgSayText > 0 );
2
 
3
MESSAGE_BEGIN( MSG_ALL, gmsgSayText, NULL );
4
...
5
MESSAGE_END();

?

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 13-02-2017 в 16:53:

PLut я не программист и точно не скажу. Но, как я понимаю, это УТВЕРЖДЕНИЕ.

C++ Source Code:
ASSERT( gmsgSayText > 0 );

Здесь утверждается, что gmsgSayText обязательно больше нуля. Если вдруг будет меньше, то выскочит виндовый месседж с предупреждением "Assert failed!".

В первом случае мессага просто не отправится. Чтобы понять почему, нужно впихнуть в условие ALERT:
C++ Source Code:
1
if ( !gmsgSayText )
2
{
3
  ALERT(at_error, "gmsgSayText isn't initialized!\n")
4
  return;
5
}

А во втором игра свернётся, и выскочит окошко.

Добавлено 13-02-2017 в 23:53:

Охранный код, короче.


Отправлено XaeroX 13-02-2017 в 16:56:

PLut assert обычно работает только в дебаге.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 13-02-2017 в 17:53:

Цитата:
PLut писал:
Что такое ASSERT?

Ассерт это утверждение что какое-либо условие всегда валидно. А если это не так, то такой программе даже Путин уже не поможет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PLut 13-02-2017 в 18:19:

Ku2zoff XaeroX Дядя Миша Спасибо большое!

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 13-02-2017 в 18:27:

Цитата:
Дядя Миша писал:
Ассерт это утверждение что какое-либо условие всегда валидно.

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


Отправлено Дядя Миша 13-02-2017 в 20:46:

Цитата:
Ku2zoff писал:
Но в случае с халфой я всё-таки предпочту алерт, или консольное сообщение.

это при условии что проблемное место не приведёт к вылету. В ксаше ассерты останавливают движок.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 13-02-2017 в 21:19:

А я сделал ассерты так, что при developer 3 они выдают дебаговый стоп с окошком "U wanna debug? A/R/I", которое, если что, можно проигнорировать, а можно вывалить в дебаггер и смотреть, что да как. При developer < 3 они выдают сообщения в консоль и дебаговое окно.

ALERT(at_error) - это хуже всего. Выход движка. at_warning вылетает только в софтвере. Лучше этим вообще не пользоваться кроме самых безвыходных случаев.

Добавлено 14-02-2017 в 00:19:

Индекс локального игрока на клиенте всегда будет единицей? Иначе говоря, можно ли получать свой никнейм таким способом: g_PlayerInfoList[1].name ? То есть мне не нужны ники других игроков (как в таблице счета, например), нужен только свой.[/QUOTE]
НЕТ! Никогда! Индекс игрока там такой же как и на сервере!
GetLocalPlaye() тебе поможет.
Даже на лысом сервере.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 13-02-2017 в 21:40:

Цитата:
~ X ~ писал:
Индекс игрока там такой же как и на сервере!

А на сервере он всегда равен еденичке

Игрок не может уйти с listen сервера без его остановки и перезайти заново. Игрок не может создать listen сервер без захода на него. Следовательно локальный игрок всегда будет первым, без вариантов. Потому что листен-сервер не существует без локального игрока.

Добавлено 14-02-2017 в 00:40:

ЗЫ, вот userid у локального игрока действительно может быть каким угодно, если пересоздавать сервер несколько раз. Но индекс - всегда первый.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 13-02-2017 в 21:45:

Дядя Миша я рассматриваю вопрос с позиции что на сервере нет локальных игроков. На сервере может быть 0 игроков. А речь шла вроед о клиентской строне. Если человек будет на клиенте искать локального игрока всегда по единичке, его ждёт неприятный сюрприз. Даже если пишешь 100% сингл, руки не отвалятся написать GetLocalPlayer()->index (хотя, я бы поставил пару ифов и ассертов )

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 14-02-2017 в 07:37:

Цитата:
~ X ~ писал:
На сервере может быть 0 игроков

ну если на сервере 0 игроков, значит и на клиенте нет локального.

Вообще есть же функция EV_IsLocal, вот она проверяет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PLut 14-02-2017 в 08:42:

~ X ~ Я так решил проблему. Эта функция уже была, я только строчку добавил.

C++ Source Code:
1
void TeamFortressViewport::GetAllPlayersInfo( void )
2
{
3
  for ( int i = 1; i < MAX_PLAYERS; i++ )
4
  {
5
    GetPlayerInfo( i, &g_PlayerInfoList[i] );
6
 
7
    if ( g_PlayerInfoList[i].thisplayer )
8
    {
9
      m_pScoreBoard->m_iPlayerNum = i;
10
      sprintf( gHUD.m_Health.m_szPlayerName, "%s", g_PlayerInfoList[i].name );
11
    }
12
  }
13
}

__________________
Base Defense on Steam, ModDB


Отправлено Luciferchik 18-02-2017 в 18:14:

Почему спекуляр в рендере п1 отключен и возможно ли его включить или он попросту не написан(не дописан) там?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 18-02-2017 в 19:24:

gl_specular 1 или gl_hispecular 1
всё работает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 24-02-2017 в 12:18:

Как лучше возводить компонент вектора в квадрат, x[1]*x[1] или pow(x[1],2)? Есть разница в скорости?


Отправлено Luciferchik 26-02-2017 в 19:35:

Как с помощью Xash postActivate system вызвать эту функцию вместо
SendInitMessage?

C++ Source Code:
1
void CParticle::SendInitMessage( CBasePlayer *player )
2
{
3
  MESSAGE_BEGIN( MSG_ONE, gmsgParticle, NULL, player->pev );
4
  WRITE_SHORT( entindex() );
5
  WRITE_STRING( STRING(pev->message) );
6
  MESSAGE_END();
7
}

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено ***FantoM*** 27-02-2017 в 07:03:

Модераторы и Администрация
Переименутe пожалуйста тему.


Отправлено Дядя Миша 27-02-2017 в 12:40:

***FantoM*** готово

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ***FantoM*** 27-02-2017 в 12:50:

Дядя Миша
Я имел ввидую убрать мой ник.


Отправлено Дядя Миша 27-02-2017 в 12:55:

***FantoM*** убрал

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 08-03-2017 в 19:15:

А имеет ли смысл задавать вопросы про классику типа трейсов или тчинков, которая уже разобрана в других местах? В расчёте не только на то что с человеком общаться приятнее чем с копипастой, но и на то что кто-то другой может заинтересоваться, вспомнить что тоже хотел по этому поводу что-то спросить или показать.


Отправлено Ku2zoff 08-03-2017 в 19:45:

Crystallize я думаю, что стоит. Но для начала надо хотя бы пару раз прочитать каждую из Дядьмишиных статей об устройстве квейк-движков. Часть вопросов отпадёт.
По поводу трейсов и тчинков основательно советую покурить сорцы ксаша и ReHLDS, чтобы иметь хоть поверхностное представление, в каком порядке всё это работает. У меня конечно от трейсов и физики уже голова кругом идёт, но теперь я знаю, чем вызваны те или иные ограничения, и почему кое-что накодить нельзя, юзая только функционал дллок.

Добавлено 09-03-2017 в 02:45:

[оффтоп]И таки да, если вытащить физику брашевых энтить в дллку, появится шикарная возможность грамотно исправить мовевитч (что было сделано в hlfx 0.7). Если это захочется, наверное стоит копнуть в сторону MOVETYPE_COMPOUND в ксаше. Про него я ещё почти ничего не смотрел, но думаю, что это верное направление мысли.[/оффтоп]


Отправлено James Luke 09-03-2017 в 03:00:

Hello there, hopefully an English post can pass through here.

I was having a look over at the PARANOIA and VHLT source codes and saw the bumpmapping techniques Buz used in acheiving the effects used in the custom PARANOIA OpenGL renderer.

So I ask... Why did he have to override dynamic lights to use them? It was one of the key features of Half-Life and what gave it it's underlying horror tones. While PARANOIA managed this just fine without them, why couldn't Buz add more light styles to use? Is it not Is it not possible to add more light styles? Is it not possible in the Goldsource engine?

I was thinking of possibly changing VHLT to allow me more light styles and use the renderer code to support dynamic lights. But would it be practical to do so? Is there literally no way to do that?

Sorry if translating gets messed up. I'm not Russian. Still a pain for me to even read this site.


Отправлено ~ X ~ 09-03-2017 в 08:29:

Ku2zoff запилишь паренты под халвой - мы тебе памятник поставим.

Добавлено 09-03-2017 в 11:29:

Цитата:
James Luke писал:
I was thinking of possibly changing VHLT to allow me more light styles and use the renderer code to support dynamic lights.

Dunno about lightstyles (at least there are custom styles), but dlights in HL are bad in so many ways:
- maximum of 32 dlights in a frame
- they may slow down any L33T machine to slideshow
- they can appear/disappear randomly if something is allocating lights
- they shine through walls
- they're just ugly

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 09-03-2017 в 14:04:

Цитата:
James Luke писал:
why couldn't Buz add more light styles to use?

Because our BUzer was a very-very lazy man

However Paranoia 2:Savior having both lighstyles and bumpmapping.

Добавлено 09-03-2017 в 17:04:

Цитата:
Crystallize писал:
А имеет ли смысл задавать вопросы про классику типа трейсов или тчинков, которая уже разобрана в других местах?

Если в этих других местах ты не нашёл ответа на свой вопрос или чего-то недопонял, то задавай. А если ты опять так троллишь, то тебя банить надо.

Цитата:
Ku2zoff писал:
У меня конечно от трейсов и физики уже голова кругом идёт

Физика это как раз самое простое, ты сейв-рестор одолей попробуй. Или энкодер кастомной дельты. А потом вспомни, что обе эти вещи всего лишь малые части движка и подумай какими же знаниями обладает человек, написавший весь движок и которого ты впрошлом году решил поучить как правильно движки пишутся.

Цитата:
Ku2zoff писал:
И таки да, если вытащить физику брашевых энтить в дллку, появится шикарная возможность грамотно исправить мовевитч

Мовевитч вон в ксаш-моде уже есть исправленный. Правда есть еще одно ограничение - для правильного построения связей между энтитями, их перед спавном неплохо бы отсортировать в правильном порядке. Иначе может ерунда получиться. Значит и энтити надо спавнить кастомно. Одной физикой не отделаешься. Не, ну можно уже после спавна их рассортировать в ServerActivate конечно, но это уже не так удобно, поскольку у нас все эти оффсеты и смещения для энтить (дверей, кнопок), попадут в абсолютное пространство и будут трансформированы при линковке, а нам это нахрен не нужно. В ксаш-моде парент-система линкует энтити еще до вызова их спавна, вот как раз по этой причине.


Цитата:
Ku2zoff писал:
что было сделано в hlfx 0.7

А ты не видел hlfx 0.7 Это только с моих слов, а вдруг я пошутил или обманул? Вот так на ровном месте рождаются слухи.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 09-03-2017 в 14:26:

Цитата:
Дядя Миша писал:
Это только с моих слов

Так вот же:
Цитата:
XaeroX писал:
Half-Life FX 0.7b будет совместим как с WON-версией (1.1.1.0), так и Steam-версией Half-Life.

Краткий список планируемых фич (самое важное):

Полноценный MoveWith, лишённый детских болезней спирита. Теперь, например, для того, чтобы кнопка крутилась вместе с дверью, первой не обязательно делать оригин-браш. Можно делать крутящиеся объекты, которые находятся на других крутящихся объектах (не обязательно в центре). Объекты можно цеплять к пушаблям, да и сами пушабли, по правде говоря, можно будет цеплять (см. видео). В общем, за вычетом небольших оговорок и ограничений, это простой и понятный с точки зрения маппера мовевич - "поставил объекты, связал их и забыл".

Цитата:
Дядя Миша писал:
которого ты впрошлом году решил поучить как правильно движки пишутся.

Признаю, это я зря. Дело это ох непростое, писать движки ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ. Проще конечно говнять всякие Sauerbraten'ы, на которых ничего кроме карт для дезматча не запилишь. Я тут хотел попросить тебя разбанить меня на КСМ, но потом подумал, что читать раздел я всё равно могу. Ещё в связи с ситуацией на Украине ... Не знаю с чем, КСМ стал довольно часто быть недоступным. Да и народ там предлагает отключить второй монитор, чтобы избежать бага, вместо того, чтобы исправить баг. Так что ну его.


Отправлено Дядя Миша 09-03-2017 в 14:40:

Он его анонсировал всё-таки. Я уже и позабыл
Даа, было дело. Ну не расстраивайтесь, часть наработок вошла в Headcrab Frenzy.

Цитата:
Планируется также создание нормального транспорта (наподобие танка из ганмена).

Мы тогда еще не знали, что в ганмене танк тоже брашевый

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 09-03-2017 в 14:58:

Дядя Миша тем не менее, этот брашевый танк весьма прилично катается, в отличие от танка в Инвазионе, например. Но то, что есть в Инвазионе, вполне можно взять за основу и допилить.


Отправлено James Luke 09-03-2017 в 21:02:

So is it possible to add more lightstyles and implement fully dynamic lights into the renderer?

EDIT: So... I'm guessing PARANOIA 2: Saviour isn't open-source? Not even the renderer code?


Отправлено Luciferchik 12-03-2017 в 10:52:

Почему не работает ambient_fmodstream в спирите и как исправить?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XF-Alien 12-03-2017 в 19:47:

Luciferchik К спириту фмод не прилагается, насколько знаю. Его подключение - отдельная тема.


Отправлено Luciferchik 12-03-2017 в 20:30:

Цитата:
XF-Alien писал:
Luciferchik К спириту фмод не прилагается, насколько знаю. Его подключение - отдельная тема.

Спасибо за помощь

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено ~ X ~ 13-03-2017 в 08:47:

Цитата:
Luciferchik писал:
Почему не работает ambient_fmodstream в спирите и как исправить?


Это кто так энтитю обозвал - спиритисты? Это реально или прикол такой?
А если я АПИ поменяю, то что будет?
ambient_alsastream
ambient_ossstream
ambient_a3dstream
ambient_xaudiostream
ambient_microsoft(c)_direct_audio(c)(r)_stream
ambient_shitstream

и для каждого вендора ОБЯЗАТЕЛЬНО свой classname! Иначе всё.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 13-03-2017 в 10:05:

Цитата:
~ X ~ писал:
А если я АПИ поменяю, то что будет?

Не поменяешь - сорцов нет.
Название норм, в те годы fmod был обычный встраиваемый проигрыватель файлов. Может, сейчас он и апи типа альсы - не знаю, не слежу.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ~ X ~ 13-03-2017 в 10:36:

XaeroX хотите - верьте, хотите - нет, но первый API, который я стал накручивать для музыки был Xaudio. А шумиха по фымоду началась позже. Но я тогда уже понимал, что Wandows-only - это плохо. Потому на фымод и перешёл.

Добавлено 13-03-2017 в 13:36:

Цитата:
XaeroX писал:
сорцов нет.

сорцов спиритизма нет? Да ладно!

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено PLut 16-03-2017 в 09:10:

В консоли перестали выводиться сообщения во время загрузки. То есть ранее разные сообщения типа

Цитата:
Server module initialized.
World module initialized.
FMOD 3.71 library loaded.

записывались в консоль, а теперь нет (самое интересное, что они по-прежнему записываются в qconsole.log).
Пишу сообщение типа последнего с помощью Con_Printf, во время игры он нормально выводит сообщение в консоль.

Я точно помню, что раньше всё работало и во время загрузки, но потерял момент, когда перестало. В чем может быть проблема?

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 16-03-2017 в 14:36:

PLut в командной строке забыл указать -dev -console

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 16-03-2017 в 15:24:

Ребят, подскажите, в bsp какой паддинг у фрагментов лайтмапы? Один пиксель?


Отправлено Дядя Миша 16-03-2017 в 16:18:

да нет там не какова падденга. RGBRGBRGB.

Добавлено 16-03-2017 в 19:18:

PS. не надо выравнивать по трём, лайтмапа может оказаться монохромной, например в первокваке.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 16-03-2017 в 16:32:

Дядя Миша да не, я не об этом.
Вот когда рассчитываешь текстурные координаты фейса под лайтмапу, берешь обычные текстурные координаты и вписываешь их в квадрат (0,0) - (1,1). По краю делается какой-то "бортик"? Ну то есть вписывается в квадрат (0.1,0.1) - (0.9,0.9) или что-то такое?


Отправлено Дядя Миша 16-03-2017 в 16:58:

Цитата:
ncuxonaT писал:
берешь обычные текстурные координаты и вписываешь их в квадрат (0,0) - (1,1).

А зачем вписывать координаты в квадрат? Ты вообще изучал как в кваке сделано?
Для кажого фейса считаются экстентсы. Это высота и ширина в диффузки в пикселях. Далее, поделив их на кол-во пикселей на люксель мы узнаем экстентсы для самой лайтмапы, ну или проще говоря - её разрешение. Ну и прибавляем к получившемуся результату еденичку, в случае если получился нулевой размер лайтмапы по какому-то из измерений. Теперь, когда мы знаем размер лайтмапы - мы можем выделить под него новое место в атласе. А когда в атласе не останется места, загрузим его в видимопамять, а сами перейдем к следующей странице атласа. У нас остаются light_s и light_t - это смещения в пикселях относительно верхнева левого угла текущей страницы атласа (которая в lightmaptexturenum). Теперь, когда мы их знаем - мы можем легко расчитать текскорды длялайтмапы через DotProduct от текстурной матрицы.
C++ Source Code:
1
s = DotProduct( vec, fa->texinfo->vecs[0] ) + fa->texinfo->vecs[0][3];
2
s -= fa->texturemins[0];
3
s += fa->light_s * sample_size;
4
s += sample_size >> 1;
5
s /= BLOCK_SIZE * sample_size; //fa->texinfo->texture->width;
6
 
7
t = DotProduct( vec, fa->texinfo->vecs[1] ) + fa->texinfo->vecs[1][3];
8
t -= fa->texturemins[1];
9
t += fa->light_t * sample_size;
10
t += sample_size >> 1;
11
t /= BLOCK_SIZE * sample_size; //fa->texinfo->texture->height;

Если бы мы рассчитывали текскорды для обычных текстур нам было бы достаточно просто поделить s или t на высоту\ширину диффузки.
А для лайтмапы надо еще сделать ряд вычислений, с поправкой на то, что она находится в атласе. BLOCK_SIZE = это ширина и высота атласа (он квадратный). Но конечно никто не мешает делать прямоугольные атласы например.

Добавлено 16-03-2017 в 19:58:

А. texturemins это такая хрень, связанная с тем, что в кваке текстуры накладываются не из верхнего левого угла, а из правого нижнего или что-то в этом роде. Причём оно уже на уровне формата map, такая же въедливая гадость, как и Stupid Quake Bug и избавиться от нее удалось вроде бы как только в Quake3, даже в сорсе помоему оно осталось.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 16-03-2017 в 17:24:

Дядя Миша ну вот в атласе текстурные координаты фейса точно совпадают с его лайтмапой, или они чуть меньше? Потому что я распаковал эти фрагменты лайтмап, и у соседних кусков крайние ряды пикселей совпадают.


Отправлено Garux 16-03-2017 в 17:31:

Я думаю там режим текстуры clamp_edge или типа того (nomipmaps тоже вероятно должно быть).
В к3 такая фигня с крайними пикселями, если лайтмапа внешняя задана шейдером; внутренние по-другому налаживаются, корректно.


Отправлено Дядя Миша 16-03-2017 в 17:52:

Ну естественно там CLAMP_TO_EDGE, лайтмапа же уникальная для каждого фейса.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 16-03-2017 в 17:59:

Какой толк от CLAMP_TO_EDGE, если лайтмапа в атласе?
Если карта состоит из одного квадратного фейса, какие у него будут текстурные координаты лайтмапы? 0,0-1,1?


Отправлено Garux 16-03-2017 в 18:52:

CLAMP_TO_EDGE это вроде clamp given texture region, don't tile, а не клапм текстуры целиком; во всяком случае практический толк очень даже толковый.


Отправлено ncuxonaT 16-03-2017 в 20:16:

Garux чо-т я такой инфы не нашел. Везде пишут, что клампятся текстурные координаты в отрезке 0-1 без каких-то регионов.


Отправлено ncuxonaT 17-03-2017 в 19:46:

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


Отправлено Дядя Миша 17-03-2017 в 21:02:

У тебя какие-то ошибки округления может?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 17-03-2017 в 21:10:

Дядя Миша где именно, в игре или вытаскивании кусков? По-моему, ни там ни там ошибок нет.


Отправлено Crystallize 28-03-2017 в 16:47:

Я беру у Trigger_Camera его yaw и передаю мессагой на клиент, прибавляю его ко viewangles игрока. Таким образом, утрируя, W и S всегда двигают игрока по оси камеры. Однако при стрейфе мы не движемся по ровному кругу вокруг камеры, как должны бы, а быстро уходим прочь по спирали. Чтобы идти по кругу, нужно повернуться к камере на лишние примерно 20 градусов. Это тот самый предиктинг виноват? Просто у камеры стоит SetNextThink ( 0 ), так что не похоже. Я пробовал менять cl_lc, cl_lw, безрезультатно. Попытался прикрутить для сглаживания углов функцию V_SmoothInterpolateAngles ( ) которая во view.cpp, но я вроде кормлю ей такие же vec3_t, а она выдаёт ошибку преобразования типов.


Отправлено Дядя Миша 28-03-2017 в 17:16:

Цитата:
Crystallize писал:
Я беру у Trigger_Camera его yaw и передаю мессагой на клиент, прибавляю его ко viewangles игрока.

Попробуй воду из одной проруби в другую переливать - тоже неплохое занятие.

Цитата:
Crystallize писал:
Это тот самый предиктинг виноват?

предиктинг никак не затрагивает углы.

Цитата:
Crystallize писал:
Однако при стрейфе мы не движемся по ровному кругу вокруг камеры

А должны? Тебе не YAW прибавлять надо, а делать VecToAngles, чтобы вьюанглесы всегда были нацелены на оригин камеры. И отключить ввод мышки.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 28-03-2017 в 17:28:

Цитата:
Дядя Миша писал:
А должны? Тебе не YAW прибавлять надо, а делать VecToAngles, чтобы вьюанглесы всегда были нацелены на оригин камеры. И отключить ввод мышки.

Мне кажется ты не понял меня. Мне не нужно, чтобы персонаж постоянно смотрел в камеру. Вот в шутерах система координат ввода WSAD привязана к игроку и его viewangles. А я хочу вместо этого привязать её к углам внешней камеры, но контролировать всё равно игрока.


Отправлено Дядя Миша 28-03-2017 в 17:49:

Цитата:
Crystallize писал:
А я хочу вместо этого привязать её к углам внешней камеры

Ну тогда копируй углы камеры поверх вьюанглес.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 28-03-2017 в 18:20:

Дядя Миша я вдруг понял, что же ты имел в виду в первый раз. Действительно, если камера следит за игроком, то можно просто посчитать направление на клиенте.


Отправлено Дядя Миша 28-03-2017 в 19:42:

Crystallize ты определись уже кто у тебя за кем следит )))

Цитата:
Crystallize писал:
можно просто посчитать направление на клиенте.

А ты что, на сервере считал?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 29-03-2017 в 01:40:

Цитата:
Дядя Миша писал:
ты определись уже кто у тебя за кем следит )))

Камера за игроком, но тот по большому счёту никак не ограничен в передвижении.

Цитата:
Дядя Миша писал:
А ты что, на сервере считал?

Я брал угол, который уже высчитан в стандартном коде камеры.


Отправлено ncuxonaT 29-03-2017 в 15:05:

А существует описание формата ксашеского/голдсорсного mdl?
Я загуглил, конечно, но везде говорят смотреть сорсы моделвьювера, а мне как-то не хочется.


Отправлено ~ X ~ 29-03-2017 в 20:03:

ncuxonaT описанием форматов моделей занимались ребята с xentax, у них там имелся универсальный распаковщик ресурсов (который работал на описательных скриптах) и вроде были попытки аналогичное сделать для моделей. Вики с описаниями форматов тридэ точно было. Только не знаю, есть ли там ХЛ.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено ncuxonaT 30-03-2017 в 13:54:

~ X ~ увы, ХЛ там не нашлось


Отправлено Дядя Миша 30-03-2017 в 14:15:

ncuxonaT тебя что-то конкретное интерисует?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 30-03-2017 в 14:41:

Дядя Миша мне нужно загружать модели, чтобы от них тени запекать.


Отправлено Дядя Миша 30-03-2017 в 14:57:

ncuxonaT в новых компиляторах вся реализация

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 30-03-2017 в 17:45:

Дядя Миша в чем будет проще разобраться - в сорсах моделвьювера или компилятора?


Отправлено Дядя Миша 30-03-2017 в 18:03:

ncuxonaT ты рисовать собрался или тени считать? Я подозреваю, тебе вообще не хочется разбираться, а найти готовую реализацию под задачу, я тебе и предложил, собственно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 30-03-2017 в 18:20:

Дядя Миша мне чтобы тени считать, нужно рисовать модель. Соответственно нужно загрузить всю геометрию в VBO. Я надеялся найти какую-то документацию по типу этой про bsp: http://hlbsp.sourceforge.net/index.php?content=bspdef
Но раз такого нет, то по каким сорсам проще понять, где в мдле вершины, где треугольники и так далее?


Отправлено ncuxonaT 01-04-2017 в 22:04:

light_environment всегда имеет стиль №20?


Отправлено Дядя Миша 02-04-2017 в 13:06:

Цитата:
ncuxonaT писал:
light_environment всегда имеет стиль №20?

Нет, это я спецом для паранои сделал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 02-04-2017 в 13:17:

Дядя Миша и оно не отключается?


Отправлено Дядя Миша 02-04-2017 в 13:27:

в cmdlib.h находишь строчку

C++ Source Code:
#define HLCSG_SKYFIXEDSTYLE

и комментируешь её.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 02-04-2017 в 14:08:

Дядя Миша не имея студии, не отключить, да?


Отправлено Дядя Миша 02-04-2017 в 15:37:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 02-04-2017 в 15:48:

Дядя Миша понял, благодарю


Отправлено sas 08-04-2017 в 14:20:

Парни, тут вопрос по егону появился.
Добавил туда SecondaryFire и анимацию соответственно, но при нажатии на пкм зараза жрет аммо, а анимашку не проигрывает(проигрывает, если долго жать клавишу).
Как сделать так, чтобы анимация воспроизвелась полностью?

C++ Source Code:
1
void CEgon::SecondaryAttack( void )
2
{
3
  if ( !HasAmmo() )
4
  {
5
    m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.5;
6
    PlayEmptySound();
7
  }
8
  else
9
  {
10
    SendWeaponAnim(EGON_ALTATCK);
11
    AltAttack();
12
  }
13
}


Отправлено ~ X ~ 10-04-2017 в 07:35:

Альтаттак - это переключение или другой луч?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено sas 10-04-2017 в 08:32:

На пкм ракетой шмаляет


Отправлено Luciferchik 12-04-2017 в 20:44:

Возможное ли плавное затухания худа или он может только резко исчезать и все?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ghoul [BB] 13-04-2017 в 05:00:

Цитата:
sas писал:
На пкм ракетой шмаляет


Эгон. Ракетой. ЛоЛ.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 13-04-2017 в 06:25:

Luciferchik ну вообще-то да. Нужно код отсчёта времени засунуть в CHud::Redraw или CHud::Think. Первая функция работает всегда кроме паузы, и только в игре (при открытом меню в стим версии не работает), вторая работает всегда кроме паузы. Подсмотреть уменьшение альфы можно в файле ammohistory.cpp.
Остаётся вопрос, как этим правильно управлять. Наверное придётся завести новый флаг наподобие HIDEHUD_ALL, например HUD_FADEOUT, и отправлять его с сервера. А в CHud::Think написать примерно такое условие:

C++ Source Code:
1
if (gHUD.m_iHideHUDDisplay & HUD_FADEOUT)
2
{
3
  // здесь код отсчёта времени
4
 
5
  // код выключения худа
6
  if (time == 0)
7
  {
8
    gHUD.m_iHideHUDDisplay |= HIDEHUD_ALL;
9
    gHUD.m_iHideHUDDisplay &= ~HUD_FADEOUT;
10
  }
11
}


Добавлено 13-04-2017 в 13:25:

Только учти, что все элементы худа имеют собственную функцию Draw, в которой у них фиксированная альфа, либо свой собственный код её изменения. Нужно будет эти функции переписать таким образом, чтобы при наличии у класса CHud флага HUD_FADEOUT, именно у них уменьшалась альфа.


Отправлено Luciferchik 13-04-2017 в 07:27:

Ku2zoff:
Насчет таймера нужно смотреть твой тутор по нему

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 13-04-2017 в 09:25:

Luciferchik при чём тут таймер? Я про время, от начала угасания худа до полного его исчезновения (отключения). Как здесь:

C++ Source Code:
float scale = (rgAmmoHistory[i].DisplayTime - flTime) * 80;
ScaleColors(r, g, b, min(scale, 255) );

scale - это, собственно, значение альфы. rgAmmoHistory[i].DisplayTime - это gHUD.m_flTime + n, вот про это время я говорю. n - кол-во секунд, в течение которого худ будет бледнеть. Нужно, чтобы в какой-то отдельной функции класса CHud считалась эта альфа, и была публичным членом класса CHud, чтобы все элементы худа имели к ней доступ.


Отправлено Luciferchik 13-04-2017 в 09:53:

Ku2zoff:
Я понял о чем, ты говоришь про ammohistory и типо когда подбираешь там патроны или аптечку то в угле светиться спрайт который постепенно угасает.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено ~ X ~ 14-04-2017 в 07:23:

Luciferchik сделай обёртки для всех функций (их штуки 4), рисующих HUD-спрайты и пихай туда какую угодно альфу. Я так сделал эффект повреждения костюма, когда HUD мерцает и корёжится.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 14-04-2017 в 07:49:

Цитата:
~ X ~ писал:
Я так сделал эффект повреждения костюма, когда HUD мерцает и корёжится.

А хроматическую аберрацыю сделал, как фкрузисе?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 14-04-2017 в 18:26:

~ X ~: Я посто хочу сделать чтоб слоты под оружия сами исчезали если они не юзаются, а не нажимать лишний раз чтоб они скрылись.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено ~ X ~ 14-04-2017 в 18:36:

Luciferchik лол, гляди сорцы xdm правда, фэйдаута там нет. Теоретически можно, но всё равно излишество.

Дядя Миша не играл в крузис - не видел.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Luciferchik 14-04-2017 в 19:05:

~ X ~: Хех, как раз подумывал скачать

Добавлено 14-04-2017 в 22:05:

Цитата:
Luciferchik писал:
~ X ~: Хех, как раз подумывал скачать

Вот только припоминаю, что ты говорил доступ к сырцам можно будет получить если розгадаешь или найдешь все пасхалки в моде

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено ~ X ~ 14-04-2017 в 20:58:

Luciferchik один форумчанин сознался, что у него это заняло не более 20 минут включая скачивание. кроме того, он сразу узнал пару-тройку фишек мода в процессе.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ghoul [BB] 15-04-2017 в 03:28:

Цитата:
~ X ~ писал:
Luciferchik лол, гляди сорцы xdm правда, фэйдаута там нет. Теоретически можно, но всё равно излишество.

Дядя Миша не играл в крузис - не видел.


Сорцы хдм в свободном доступе?!

Вообще, мне было бы обидно, если бы моим модом интересовались лишь как источником сорцов на растерзание.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 15-04-2017 в 05:04:

Цитата:
Ghoul [BB] писал:
Сорцы хдм в свободном доступе?!

Ну ты ж вроде выкладывал, и даже по шапке за это получил.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ~ X ~ 15-04-2017 в 05:39:

Я малость удивлён вашим удивлением... счас напишу что сырцы выложил крупным шрифтом, а лучше - отдельной новостью )

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ghoul [BB] 15-04-2017 в 15:19:

Цитата:
XaeroX писал:
Ну ты ж вроде выкладывал, и даже по шапке за это получил.


Ну то были "незаконно полученные сорцы". К тому же форк. За то и получал.

Ну ничего, из странствий своих вернусь и жестоко отомщу ~х~ за унижение: притащу ему бананов с помойки или ещё какихфруктов, он их съест и зашкварится. Да ещё потом фотки выложу тут. Вот тогда он запоёт-завоет.

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

Я злопамятный. А месть - это блюдо, подающееся холодным.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 15-04-2017 в 15:48:

Цитата:
Ghoul [BB] писал:
который в армии плохому научился - спящим людям членом по губам водить..

В армии или всё-таки в тюрьме?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ghoul [BB] 15-04-2017 в 16:33:

Цитата:
XaeroX писал:
В армии или всё-таки в тюрьме?


В армии,в армии.
там много "забавного" происходило...
Ты вот не служил, поэтому представления и не имеешь, что там творится. А мне и военной кафедры за глаза хватило.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Дядя Миша 18-04-2017 в 17:51:

Цитата:
Ghoul [BB] писал:
Ну или приглашу к нему на дачу с ночёвкой своего кента, который в армии плохому научился - спящим людям членом по губам водить..

Таких друзей за хер и в музей

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 19-04-2017 в 10:46:

Есть кнопка, которая открывает дверь. У кнопки стоят флаги toggle и dontmove. То есть кнопка мгновенно переходит из одного положения в другое. Юзать её можно соответственно без задержки, и положение двери может не совпадать с кадром текстуры на кнопке. Правильно, это когда открыта - зелёная, закрыта - красная. Если же кнопку поюзать, когда дверь движется, то кнопка переключается, а дверь не успевает.
Вопрос к мапперам: как вы решали такую проблему? Я вышел из положения, сделав кнопку невидимой (отключив флаг toggle, чтобы работала задержка юза), а визуально в качестве кнопки использовал func_wall.
Всё было здорово до тех пор, пока я не исправил баг с юзаньем объектов сквозь стены: тут важно, чтобы трейс упёрся именно в юзаемый объект, на который наведён прицел. А он упирается в func_wall, соответственно, кнопка не юзается. Ладно, это я исправил, добавив несколько строк в код кнопки, чтобы она работала как надо с флагами dontmove и toggle одновременно. Осталось только добавить какие-нибудь рамочки выделения юзаемого объекта на экран, например, как в Deus Ex. Тутор хотите, когда клиентский эффект сделаю?

P.S. код немного не такой как в спирите. Там сначала пытаемся юзать то, что попало в прицел (чтобы точно нажимать мелкие кнопки в лифте), если ничего нет, ищем стандартным способом ближайшую энтитю в поле зрения игрока. Естественно, в спирите кнопки юзаются сквозь стены. У меня уже после нахождения ближайшей энтити идёт проверка, целимся мы в неё или нет. Это конечно требует дополнительного допиливания, но c добавлением рамочек должно выглядеть круто.


Отправлено thambs 19-04-2017 в 11:29:

>А он упирается в func_wall, соответственно, кнопка не юзается.
Так кнопка покрашена nullом и находится перед wallом.

>Тутор хотите, когда клиентский эффект сделаю?
Да, было бы очень кстати, например, рисовать [👆] когда находишься в радиусе кнопки.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 19-04-2017 в 14:34:

Ku2zoff дверь - мастер для кнопки, пока она движется. Т.е. пока дверь не станет на место юзать кнопку нельзя.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 19-04-2017 в 16:29:

Цитата:
thambs писал:
Так кнопка покрашена nullом и находится перед wallом.

Они находятся в одном и том же положении. Почему func_wall попадает в трейслайн первой не знаю. Надо смотреть сорцы движка.
Цитата:
thambs писал:
Да, было бы очень кстати, например, рисовать [👆] когда находишься в радиусе кнопки.

Это есть в паранойе. Я про "скобочки" на границах объекта, как в деусе.

Добавлено 19-04-2017 в 23:29:

Цитата:
Дядя Миша писал:
дверь - мастер для кнопки, пока она движется. Т.е. пока дверь не станет на место юзать кнопку нельзя.

Хм, не задумывался об этом. Надо попробовать.


Отправлено Дядя Миша 19-04-2017 в 18:01:

В халфе и не сработает, нужен спирит или ксашмод.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 19-04-2017 в 18:14:

Цитата:
Дядя Миша писал:
В халфе и не сработает, нужен спирит или ксашмод.

А, ну вот, опять же надо ковырять чужие сорцы.


Отправлено Ku2zoff 20-04-2017 в 04:19:

Поглядел, чем UTIL_IsMasterTriggered отличается в спирите от оригинальной халфы. Оно там тащит за собой стейты, чисто спиритовскую фишку. Это много копипасты. Проще в тчинках самой кнопки завести условия, как сделал я. Хз, если буду тащить когда-нибудь из спирита, что-то связанное со стейтами, то перенесу. А пока и так сойдёт.


Отправлено Cybermax 20-04-2017 в 21:54:

Может быть существует туториал: сетевой мод, 2 команды, оружие по классам. Просто почему спрашиваю, на моддб есть сетевые "class based" моды, с VGUI меню сделаны как под копирку TFC.


Отправлено Ku2zoff 21-04-2017 в 03:13:

Цитата:
Cybermax писал:
Может быть существует туториал: сетевой мод, 2 команды, оружие по классам.

Тю. Задаёшь игроку pev->playerclass и pev->team. В CHalfLifeMultiplay::PlayerSpawn в условие if (addDefault) впихиваешь switch-case с переключением по pPlayer->pev->playerclass и раздаёшь нужное оружие при спавне.
Цитата:
Cybermax писал:
с VGUI меню сделаны как под копирку TFC.

Ну не делай под копирку, напиши свои менюшки. Там есть кое-какие заморочки в этой системе, но если в ней разобраться, проблем не будет.


Отправлено Luciferchik 24-04-2017 в 08:52:

Как правильно вырезать клиентские пушки, чтоб было как в спирите?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 24-04-2017 в 11:06:

Цитата:
Luciferchik писал:
Как правильно вырезать клиентские пушки, чтоб было как в спирите?

По тутору Дяди Миши про Xash Weapon System, на форуме есть. Ну конечно можно выпилить всё по дефайну CLIENT_WEAPONS, и самостоятельно подправить возникшие баги. Если мод сингловый - пожалуйста. Если мультиплеер - не стоит, играть становится не так комфортно, лаги при стрельбе заметны для глаза.


Отправлено Luciferchik 24-04-2017 в 11:35:

Ku2zoff Нумс, я все сделал по его тутору к 4 пункту, вот когда удаляю сами пушки с клиента не скомпилить его

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 24-04-2017 в 11:47:

Кстати, про сам спирит. Я давеча глядел виндиффом его код, сравнивал с актуальным хлсдк. Так вот, что хочется сказать: главная фича - это мовевитч, именно из-за него изменения в большинстве файлов. То есть, по сути, все другие фичи, окромя локусов и глобальных лайтстилей, портируются в любой мод довольно просто, изменениями в двух-трёх файлах. Собсно, мне таки придётся перешерстить весь код, т.к. планирую перенести мовевитч. Есть вопрос по поводу тчинков:

C++ Source Code:
// use the old frametime, even if the engine has reset it
gpGlobals->frametime = cached_frametime;

Не сломает ли это физику в мультиплеере? Я тестировал всего лишь одну карту с лифтом на несколько этажей. Кроме небольших лагов дочерних энтить у нелокальных игроков ничего не заметил.

Добавлено 24-04-2017 в 18:47:

Luciferchik лог покажи, что не компилится?


Отправлено Luciferchik 24-04-2017 в 12:09:

Ku2zoff воть

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 24-04-2017 в 14:14:

Luciferchik вырежи из hl_weapons.cpp всё, кроме HUD_PostRunCmd, а внутри этой функции закомменти вызов HUD_WeaponsPostThink.

Добавлено 24-04-2017 в 21:00:

Это, кстати, функция, из которой тчинкают клиентские пушки. Достаточно просто её закомментить, и они перестанут работать. Без правок на сервере будет криво, ясен пень.

Добавлено 24-04-2017 в 21:14:

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


Отправлено Luciferchik 24-04-2017 в 14:42:

Ku2zoff Сработало, благодарю за помощь

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 24-04-2017 в 20:45:

Цитата:
Ku2zoff писал:
Да, время загрузки они увеличивают, но всего на пару секунд.

Это из-за чего же?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 25-04-2017 в 03:50:

XaeroX ну правда, с клиентскими пушками мод чуть дольше грузится. Конечно не на пару секунд, а на секунду-полсекунды, в самом конце. Не знаю, с чем эта задержка связана.


Отправлено a1batross 25-04-2017 в 09:04:

Ku2zoff время загрузки на уровень не увеличивают. Подгрузки самой библиотеки, наверное, да. Но какой же у вас CPU, что это выдает большую разницу?

Ну и при правильном их написании и использовании трафик они наоборот уменьшают.


Отправлено Ku2zoff 25-04-2017 в 10:22:

Цитата:
a1batross писал:
Но какой же у вас CPU, что это выдает большую разницу?

Когда был Athlon 64 X2 4400+ это было заметно. Сейчас, когда у меня на основном ПК FX-8350, заметно только на тестовой машине с Celeron 1.3 Ghz
Цитата:
a1batross писал:
Ну и при правильном их написании и использовании

Ну так вот. Все виды гранат и снарков, например, можно оставить чисто серверными.


Отправлено Ghoul [BB] 25-04-2017 в 11:52:

Цитата:
Ku2zoff писал:
Ну так вот. Все виды гранат и снарков, например, можно оставить чисто серверными.



И это позволит вам превысить лимит в 32 оружия, так?

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 25-04-2017 в 15:38:

Цитата:
Ghoul [BB] писал:
И это позволит вам превысить лимит в 32 оружия, так?

Ну наверное... Мне до сих пор интересно, зачем больше 32х оружий? Ну вот ладно, в HLWE это фича такая главная в моде. Но в других модах половина оружий просто неюзабельна. Например TFC: там эффективны только мощные дробовики, да основное классовое оружие. Ну и гранаты, но они там не занимают слоты оружий. Про КС писать даже не надо: штук 15 из 28. В халфовском мультике задроты летают через всю карту на гауссе... Единственный хороший пример - DoD, там действительно всё оружие эффективно, но потому, что убивает с 1-2 выстрелов в коленку.
Гранаты, ящитаю, надо делать как в TFC, добавив дополнительную вьюмодель руки, кидающей гранату. Тут и слоты оружия не нужны, и переключаться на оружие не надо. Единственный минус - два-три вида гранат, на 2-3 клавиши.


Отправлено Chyvachok 25-04-2017 в 16:10:

Цитата:
Ku2zoff писал:
Мне до сих пор интересно, зачем больше 32х оружий? Ну вот ладно, в HLWE это фича такая главная в моде


32 пушки уж совсем скудно, учитывая что часть слотов уже занята арсеналом из ХЛ, добавить пушки из опфора, там еще откудо-та и все, лимит закончился, как по мне лимит 128 как раз то что нужно. Уж больше вряд ли кто-то будет делать.

А из проектов с кучей оружия, с годной реализацией ИМХО хватает, тот же HLWE, Ballistic Weapons для УТ2004, много качественного оружия, и явно за 64 переваливает, на 2 халву вспоминается SMOD Redux, относительно недавно вышла 10 версия, по сути своих карт в моде нет, но он именно добавляет кучу нового оружия, НПС, немало фич, например вроде разрыва тел, улучшенных эффектов на существующие карты, без него ИМХО 2 халва вообще унылая, правда там полно и трешового оружия, вроде взрывающихся бананов, коробка с соей и так далее, на дум есть неплохие чисто солянки из оружия, а КС да, хреновый пример в плане оружия, куча просто одинаковых стволов.


Отправлено Ku2zoff 25-04-2017 в 16:28:

Цитата:
Chyvachok писал:
А из проектов с кучей оружия, с годной реализацией ИМХО хватает

Borderlands же. Там вообще оно генерируется налету зачастую. А в большинстве своём солянки - это плохо. Чисто поржать. Геймплейной пользы от кучи стволов зачастую нет.


Отправлено XaeroX 25-04-2017 в 16:47:

Разве в халфе лимит не 64 оружия, в последних стим-версиях?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Sigurth 25-04-2017 в 18:08:

Давненько еще нашел у себя в моде баг. Загружаю карту через консоль, перехожу на новую через ченджлевел, и тут бац: на новом уровне появляется кровь на полу, предметы куда-то пропадают, а одна дверь вообще заглючила так, что я даже сам не понимал как описать ее поведение. Позже методом тыка я обнаружил, что если удалить некие HL1-3 файлики из папки сейв, то уровень загружается как положено. Сейчас прочитал статью Дяди Миши про ченджлевел в Халфе и так понял, что эти самые HL1-3 файлики должны своевременно удаляться, НО у меня они почему-то не удаляются. Точно такая же проблема была когда я недавно захотел во второй (не в первый) раз поиграть в Poke646, там уровни сразу загружались с убитыми монстрами, подобранным оружием, разбитыми ящиками. Сейчас глянул, там такая же ситуация, файлы HL1-3 в папке SAVE не удалены. Поэтому играл на WON версии) Хотя на других модах я подобного не замечал. Стоит еще отметить, что файлы создается не в папке [моймод]/save, а в [моймод]_russian/save, может быть, проблема из-за этого? Или в чем она вообще? Как это пофиксить?

Если это важно, то халфа у меня пиратская, лицензия есть, но на ней я не проверял это.


Отправлено XaeroX 26-04-2017 в 01:49:

Цитата:
Sigurth писал:
Загружаю карту через консоль

Какой командой?
Цитата:
Sigurth писал:
Как это пофиксить?

New level unit = True в свойствах ворлдспавна первой карты пробовал поставить?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ghoul [BB] 26-04-2017 в 03:21:

Цитата:
Ku2zoff писал:
Мне до сих пор интересно, зачем больше 32х оружий?



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

Ещё тот же мультиплеер - на разных картах разные наборы, на разных сценариях игры тоже разные наборы.

Добавлено 26-04-2017 в 06:20:

Цитата:
Ku2zoff писал:
Borderlands же. Там вообще оно генерируется налету зачастую


Как это?!

Добавлено 26-04-2017 в 06:21:

Цитата:
XaeroX писал:
Разве в халфе лимит не 64 оружия, в последних стим-версиях?


У вас возможно и нету, а наш устаревший протокол не позволяет...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 26-04-2017 в 04:00:

Цитата:
Ghoul [BB] писал:
Как это?!

Есть 9 фирм-производителей оружия. И 6 основных видов оружия. В каждом из видов есть модельный ряд. Есть также классификация оружия по редкости нахождения/выпадения. И есть 4 вида стихийного урона, который может наносить оружие. Эти все дела могут комбинироваться в случайном порядке. Не совсем конечно в случайном, есть определённые ограничения на производителей, стихии и модели. Но подавляющее большинство стволов, особенно не очень редких, реально не повторяются за несколько прохождений.

Добавлено 26-04-2017 в 10:59:

На внешний вид, ксати, тоже влияет.

Добавлено 26-04-2017 в 11:00:

Цитата:
Ghoul [BB] писал:
а наш устаревший протокол не позволяет...

Вы вот хотите набрать аудиторию, чтобы в ваши моды играли. А где большинство игроков? Правильно, в стиме. Значит надо продвигать стим-версию с новым протоколом. Тем более, ксаш сейчас тоже 64 оружия поддерживает.


Отправлено Sigurth 26-04-2017 в 04:15:

Цитата:
XaeroX писал:
Какой командой?


map имя_карты

Цитата:
XaeroX писал:
New level unit = True в свойствах ворлдспавна первой карты пробовал поставить?


Вот сейчас попробовал. Инфу о других уровнях удаляет. Если начинать игру строго с неё, то проблем быть не должно. Но мне все равно любопытно из-за чего была моя проблема. Либо это не проблема, а так всегда и было, просто никто не замечал.


Отправлено Ghoul [BB] 26-04-2017 в 06:35:

Цитата:
Ku2zoff писал:
Вы вот хотите набрать аудиторию, чтобы в ваши моды играли. А где большинство игроков? Правильно, в стиме. Значит надо продвигать стим-версию с новым протоколом. Тем более, ксаш сейчас тоже 64 оружия поддерживает. [/B]


Мастер категорически против т.к. теряется совме-steam-ость со старыми версиями. Ему почему-то оченьпринципиален данный момент.

За Ксаш сказать ничего не могу - старые версии глючили или работали некорректно, а новая... ну что ж, подождём 26 апреля, когда будет очередной релиз.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 26-04-2017 в 07:36:

Цитата:
Ghoul [BB] писал:
теряется совме-steam-ость со старыми версиями.

А сколько серверов разных модов работают сейчас на 46 протоколе? Ему бы стоило исследование провести, и выяснить процентое соотношение 46 к 47/48. Офсервера конечно 48, пиратские чаще всего универсальные - 47/48 с патченным swds.dll. По крайней мере с КС 1.6 такая ситуация. Свенкооп сейчас почти весь на 48 протоколе, т.к. в стиме он бесплатный, и 5ая версия быстро вытесняет версию 4.8.


Отправлено XaeroX 26-04-2017 в 14:14:

Цитата:
Ghoul [BB] писал:
Ему почему-то оченьпринципиален данный момент.

Ну так, миллионы игроков в XDM, сидящие на WONовской HL 1.1.1.0, не поймут...

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 26-04-2017 в 17:01:

Цитата:
Ku2zoff писал:
Не сломает ли это физику в мультиплеере? Я тестировал всего лишь одну карту с лифтом на несколько этажей. Кроме небольших лагов дочерних энтить у нелокальных игроков ничего не заметил.

Пост за 11 ноября 2010-го года
Цитата:
Ku2zoff писал:
Специально заточенная под поезд энтитя-дверь... Смешно. Глобальный мовевитч всяко лучше, только его довести до ума надо.

и мой ответ
Цитата:
Дядя Миша писал:
Ну ты, положим, и такую не сделаешь.

Ну чего ж ты не довел, а? Доведи. Только для начала ответь на простой вопрос: ты знаешь откуда главный кадр этой системы вызывается?

То есть не прошло и семи лет как ты наконец-то таки заинтерисовался моими словами. Ну ниплоха, ниплоха. Семь лет то еще не срок, один вообще через 404 года проснулся. А уже ничего не найдено.

Цитата:
XaeroX писал:
Это из-за чего же?

Там вазелины лишние шлются, увеличивают стартовый пакет, а по сети он маленький совсем, 512 байт чота, а потом небольшой таймаут. Вот в сумме пара лишних секунд и набигает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 26-04-2017 в 17:36:

Цитата:
Дядя Миша писал:
То есть не прошло и семи лет как ты наконец-то таки заинтерисовался моими словами.

Вернее, я всё-таки стал изучать сорцы, а не просто копипастить из них половину наугад, а в половину прочего вникать абы как.
Цитата:
Дядя Миша писал:
откуда главный кадр этой системы вызывается?

Кстати, чем вообще вызван этот хак? В комментариях написано, что движок может сбрасывать gpGlobals->frametime, и брашевые энтити не могут менять скорость если не тчинкают. Ну последнее и так ясно, почти в каждой физической функции в движке есть условие if (!SV_RunThink(ent)), а после него ретёрн. Это всё, видимо, приводит к застреванию игрока в дочерних энтитях. Ну или вообще все энтити в конструкции дёргаются страшно.


Отправлено Дядя Миша 26-04-2017 в 17:52:

Ну чем-чем обусловлен. Есть клиентский фрейм-тайм, а есть серверный.
Серверный фреймтайм как легко догадаться используют все объекты на сервере, кроме игроков. А у каждого игрока - свой персональный фреймтайм, посчитанный на клиенте, то самое поле usercmd_t->msec.
Мовевитч из спирита работает как пост-эффект. Энтити сдвинулись, а он это отследил проапдейтил позиции. Всё бы ничего, но в халфе нет никакой возможности что-либо вызвать пост-фактум. StartFrame есть а EndFrame нет.
Вот Лаури и надумал вызывать из тчинка игрока. Причём раньше он конечно вызывал из StartFrame, но это приводило к разным проблемам. А теперь выходит что работа мовевитча завязана на игроков. Причём видимо на всех сразу. Ушли все игроки с сервера - мовевитч и сломался нахрен. Это я еще не подымаю вопрос о том, насколько калечный сам по себе. Впрочем для лифтов годится.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 27-04-2017 в 07:13:

Цитата:
Ghoul [BB] писал:
За Ксаш сказать ничего не могу - старые версии глючили или работали некорректно, а новая... ну что ж, подождём 26 апреля, когда будет очередной релиз.

26 апреля было как раз вчера, когда ты это писал.


Отправлено Ghoul [BB] 27-04-2017 в 12:06:

Цитата:
Crystallize писал:
26 апреля было как раз вчера, когда ты это писал.


у меня на 5 часов позже, чем у вас, так что всё могло бы и измениться...
но, заглядывая нм ситуацию уже из тогдашнего "завтра" я не наблюдаю никаких новостей по этому поводу. Значит ДМ опять продинамил.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 27-04-2017 в 12:51:

Ghoul [BB]
Да ладно, нас с Ku2zoff от тебя всего час отделяет.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено nemyax 27-04-2017 в 12:53:

Ghoul [BB]
Про 26 апреля разговор был, про 2017 не было.


Отправлено Ghoul [BB] 27-04-2017 в 14:45:

Цитата:
XaeroX писал:
Ghoul [BB]
Да ладно, нас с Ku2zoff от тебя всего час отделяет.


Возможно. Но ты пойми, я время по default city воспринимаю...
Такова моя природа - в привязке к месту обитания на родине...
в общем, не спасло положение ни Московское время, ни Сахалинское. Ни даже наступление следующих суток, чего уж там.


Цитата:
nemyax писал:
Ghoul [BB]
Про 26 апреля разговор был, про 2017 не было.


А. Ну тогда время есть... в каждом последующем году по-любому будет 26 апреля. Ну это как с концом света - всё обещают, тыкая пальцем в небо. Когда-нибудь и попадут...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено fl0wer 27-04-2017 в 20:11:

Почему при установке блендов на анимацию в qc файле, её фрем становится 2? Посмотрел в моделях из кс, там такая же ситуация, но некоторые проигрываются нормально.

C++ Source Code:
1
$sequence "fire" {
2
  "a_pitch_up"
3
  "a_pitch_center"
4
  "a_pitch_center"
5
  "a_pitch_down"
6
  blend XR -50 50 fps 30
7
  { event 5001 0 "51" }
8
}


Отправлено Ku2zoff 28-04-2017 в 06:47:

Цитата:
Дядя Миша писал:
Ушли все игроки с сервера - мовевитч и сломался нахрен.

Это решаемо: можно всегда держать на сервере особенного, служебного бота, в коробочке где-нибудь под основной картой, чтобы он там сидел, а для него считался фреймтайм. И завязать тчинки именно на игрока с индексом 1, чтобы не было рассинхрона из-за других игроков. А в сингле использовать старый вариант. Это актуально для выделенки. На листенсервере не нужно. Там первый игрок вышел - сервер выключился. Правда я не знаю, считается ли фреймтайм для ботов так же как для игроков, или нет. По идее должен... Надо смотреть сорцы rehlds.
Коррекция хуллов (для изменения масштаба карты) без спавна какого-нибудь игрока хотя бы на долю секунды, не сработает, тут хоть как нужен бот. А вот мовевитч можно попытаться переделать, чтобы не зависел от игроков.


Отправлено XaeroX 28-04-2017 в 09:18:

Цитата:
Ku2zoff писал:
можно всегда держать на сервере особенного, служебного бота, в коробочке где-нибудь под основной картой, чтобы он там сидел, а для него считался фреймтайм

Я объявляю этот костыль ЦАРСКИМ КОСТЫЛЁМ!

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 28-04-2017 в 15:13:

XaeroX, выражаясь словами Мастера: "Хак и анальщина". Вот это действительно хак, так хак


Отправлено Дядя Миша 29-04-2017 в 18:05:

Цитата:
Ku2zoff писал:
Это решаемо: можно всегда держать на сервере особенного, служебного бота, в коробочке где-нибудь под основной картой, чтобы он там сидел, а для него считался фреймтайм.

Боюсь ты меня опять невнимательно прочитал. Мовевитчу нахрен не нужен фреймтайм от бота, ему наоборот серверный нужен, который сохраняется в cached_frametime. Мовевитчу нужен только вызов PlayerPreThink. А для ботов он не совпадает с вызовом у настоящих клиентов, поскольку боты вызываются через функцию RunClientMove, которая наверняка будет вызываться из StartFrame, т.е. мы придём к тому, от чего попытались уйти.
Так что служебный бот нифига не поможет. Нужен служебный человек.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-04-2017 в 02:42:

Цитата:
Дядя Миша писал:
Так что служебный бот нифига не поможет. Нужен служебный человек.

Или другой мовевитч. Попробовал Xash Movewith System, в целом неплохо, разве что дочерние объекты немного отстают от родительских.


Отправлено Ghoul [BB] 30-04-2017 в 05:38:

Цитата:
Дядя Миша писал:
Так что служебный бот нифига не поможет. Нужен служебный человек.


Гениальное решение!! Нужно посадить специально обученного человека на сервер, чтоб работал за еду.
осталось только разместить вакансию на ёб.ру

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 30-04-2017 в 08:49:

Дядя Миша
Там нужен не бот в смысле fake client, а бот в смысле приконнектившийся реальный человек, но который ничего не делает. То есть в самой простой реализации - клиент, запущенный на том же компе, что и выделенный сервер. Можно в принципе и урезанного клиента создать в рамках протокола, который шлёт примитивные юзеркоманды ничегонеделанья, единственная цель которых - не попасть в таймаут.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 01-05-2017 в 05:38:

XaeroX а как это можно сделать? Средствами дллки возможно? Я пробовал создавать игрока и спавнить его, но для него даже PM_Move в таком случае не вызывается.


Отправлено XaeroX 01-05-2017 в 06:30:

Ku2zoff
В смысле - как? Запускаешь халфу на компе и вводишь в консоли connect имя сервера. А чтобы этот клиент спавнился в секретной комнатке, сделай ему ник "SpawnMeInSecretRoom", а в движке проверяй этот ник и выбирай соотв. спавн-поинт.

Цитата:
Ku2zoff писал:
Я пробовал создавать игрока и спавнить его

Средствами дллки можно сделать только pfnCreateFakeClient, но это не настоящий игрок (как следует из названия). Тут либо вручную обычным способом игрока коннектить, либо написать внешнюю программку, которая будет эмулировать полноценного игрока.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 01-05-2017 в 07:28:

Цитата:
XaeroX писал:
Тут либо вручную обычным способом игрока коннектить, либо написать внешнюю программку, которая будет эмулировать полноценного игрока.

Вот это я и хотел узнать. Аццкий костыль, на самом деле. Надо подумать, как починить отставание дочерних энтить в Xash Movewith System, и использовать эту систему.


Отправлено XaeroX 01-05-2017 в 09:45:

Цитата:
Ku2zoff писал:
Аццкий костыль, на самом деле

Не аццкий, а ЦАРСКИЙ! По аналогии с Царь-бомбой.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 01-05-2017 в 15:37:

Цитата:
Ku2zoff писал:
Надо подумать, как починить отставание дочерних энтить в Xash Movewith System, и использовать эту систему.

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 02-05-2017 в 16:33:

Цитата:
Дядя Миша писал:
Мовевитч из спирита работает как пост-эффект. Энтити сдвинулись, а он это отследил проапдейтил позиции. Всё бы ничего, но в халфе нет никакой возможности что-либо вызвать пост-фактум. StartFrame есть а EndFrame нет.

Как я понял, система такая: из StartFrame вызываем CheckAssistList, затем из PlayerPostThink вызываем CheckDesiredList.
Можно сделать костыль. Получается, у нас нет EndFrame, но всё-таки нужно вызвать функцию CheckDesiredList после выполнения физики. Я попробовал так: сделал функцию Think для класса CWorld, и из неё вызвал CheckDesiredList c минимальным интервалом. Тчинк для энтить с MOVETYPE_PUSH вызывается в самом конце обработки их физики, судя по сорцам rehlds. То есть чуть раньше, чем должен был бы вызываться EndFrame (в конце функции SV_Physics). Получилось почти так же, как и в оригинале спирита, с той лишь разницей, что из PlayerPostThink CheckDesiredList вызывается даже на паузе, и немного чаще после самого старта уровня. Ну а дальше они чередуются, как и положено. Пришлось конечно выкинуть cached_frametime, но думаю, из-за этого ничего особо не изломается. В общем, будем потестировать, и если стёкла с дверьми и поездами будут двигаться нормально, это сгодится. Какие-то сложные конструкции я строить не планирую.

Добавлено 02-05-2017 в 23:33:

Цитата:
Ku2zoff писал:
Пришлось конечно выкинуть cached_frametime, но думаю, из-за этого ничего особо не изломается.

А ведь и не должно изломаться, т.к. ничего теперь не вызывается из PlayerPostThink.
Попробовал поезд со стёклами в окнах, вроде нормально. При резких поворотах немного запаздывает смена angles у стекла, но это ничего, просто не стоит вертеть поезд с бешеной скоростью.


Отправлено Luciferchik 02-05-2017 в 16:52:

В чем возможна эта проблема работал на хр норм было запустил на 7 такая бяка вот

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Luciferchik 11-05-2017 в 09:28:

Народ подскажите что не так, почему оружия не работает в 1 слоту и еще добавил такие флаги ITEM_FLAG_SELECTONEMPTY и ITEM_FLAG_NOAUTOSWITCHEMPTY чтоб пушка бралась если даже потронов 0 она берется,а анимация не идет в чем проблема?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 11-05-2017 в 12:39:

Цитата:
Luciferchik писал:
ITEM_FLAG_SELECTONEMPTY и ITEM_FLAG_NOAUTOSWITCHEMPTY

Вроде же эти флаги конфликтуют между собой... И вообще, ITEM_FLAG_SELECTONEMPTY некорректно работает, по крайней мере у меня не получалось, чтобы пушка оставалась в руках после выбора. Она сразу убиралась, если нет патронов. Ну то есть переключения на другое оружие не было, модель просто убиралась с анимацией holster. Возможно, в этом виноваты клиентские пушки.


Отправлено Luciferchik 11-05-2017 в 13:00:

Ku2zoff Ну у меня оно работает так подобрал пушку выпустил весь магазин сменил пушку меняю обратно, а остается модель той пушки которою сменил, клиентские пушки удалены у меня

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Sigurth 11-05-2017 в 17:46:

Luciferchik У меня у всех пушек стоит флаг ITEM_FLAG_SELECTONEMPTY, никаких проблем нет. Клиентские пушки удалены. Может быть, в твоем случае дело в самой пушке? Может, в функции Deploy? Попробуй поставить флаг на другое оружие и проверить. Или у тебя на всех пушках такая проблема происходит?


Отправлено Luciferchik 11-05-2017 в 18:37:

у меня всего две пушки но они не халфовские,а добавление собой
код в деплой такой

C++ Source Code:
BOOL CHKMP5::Deploy( )
{
  m_flSpread = MP5_SPREAD_MIN; // это чисто я добавлял в оригинале нет этого
  return DefaultDeploy( "models/weapons/hkmp5/v_mp5.mdl", "models/weapons/hkmp5/p_mp5.mdl", HKMP5_DRAW, "hkmp5" );
}

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Sigurth 12-05-2017 в 10:03:

Luciferchik Попробуй поставить этот флаг на халфовские оружия, и посмотри, будет ли тот же баг

__________________
Никогда не поздно сделать мод под хл1


Отправлено Luciferchik 12-05-2017 в 17:07:

Sigurth В халве тож так,заделал на спирите все норм это значит что не очень хорошо вырезал клиент.пушки нужно будет из спирита код перенести и все норм будет

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Luciferchik 21-05-2017 в 18:44:

Народ, подскажите как правильно сделать чтоб в параноевском худе где хп иконка ложилась под полоску хп.
З.Ы. Типо как на этой картинке.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Crystallize 23-05-2017 в 07:27:

Я прочитал что на хлру Бузер делал экспериментальный мод с ходьбой по стенкам, он есть у кого-нибудь?


Отправлено JPEG 23-05-2017 в 11:23:

Цитата:
Crystallize писал:
Я прочитал что на хлру Бузер делал экспериментальный мод с ходьбой по стенкам, он есть у кого-нибудь?

Могу только посоветовать cat life - там при нмногократном ажатии на пробел игрок лезет по стене

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 23-05-2017 в 12:11:

Crystallize у меня есть, не дам.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 23-05-2017 в 12:31:

Дядя Миша дай карты твоего брата тогда.


Отправлено XaeroX 23-05-2017 в 13:06:

Цитата:
Дядя Миша писал:
у меня есть, не дам.

+1
Только там не по стенкам, а по брашевой планете. Переменный вектор гравитации, короче.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Crystallize 23-05-2017 в 15:16:

XaeroX боишься что негр на часах запустит?


Отправлено Дядя Миша 23-05-2017 в 16:37:

Crystallize просто решил тебе дать тебе понять что чувствуют люди, когда ты им адресуешь свой бред, типо mapstatus не работает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 23-05-2017 в 17:05:

Crystallize
А ты разве негр?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Crystallize 23-05-2017 в 17:20:

Дядя Миша ну а разве он работает?


Отправлено a1batross 24-05-2017 в 11:11:

XaeroX если особо захочется, это можно и самому написать.

Luciferchik Там HUD на VGUI1, всё есть, но немного в непривычных местах. Где иконка на твоём скрине я не вижу, разве что подложка, цифры и бар. Буду дома, могу поискать в каком там файле здоровье рисуется, сейчас не помню.


Отправлено XaeroX 24-05-2017 в 13:45:

Цитата:
a1batross писал:
если особо захочется, это можно и самому написать.

Пиши! А трепаться не нужно. Все вы у нас тут герои на словах.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 25-05-2017 в 13:57:

a1batross У мну оно сейчас так, а нужно чтоб белая полоска была внутри этой серой подложке.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено PLut 25-05-2017 в 18:28:

Luciferchik Это худ из арранжевого мента? Почему полоска от правой части худа?

__________________
Base Defense on Steam, ModDB


Отправлено Luciferchik 25-05-2017 в 18:37:

PLut Ога, но его возможно еще заменю в процессе разработки на какой-то другой

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 26-05-2017 в 02:38:

Цитата:
Luciferchik писал:
а нужно чтоб белая полоска была внутри этой серой подложке.

Ну так найди поиском по файлам код, который отвечает за рисование, и поменяй координаты. Я бы поступил так: картинка по-любому TGA, значит надо искать по имени файла этой тгашки. Если код из п1, то там вроде бы всего один файл, vgui_hud.cpp, в нём всё.


Отправлено Luciferchik 26-05-2017 в 09:09:

Ku2zoff Я вот нашел координаты плоски но как их крутить правильно не знаю.
Вот такой код там:

C++ Source Code:
m_pBitmapHealthFull->setBounds(m_iHealthBarXpos, m_iHealthBarYpos, healthdiv, m_iHealthBarHeight); 		m_pBitmapHealthFlash->setBounds(m_iHealthBarXpos, m_iHealthBarYpos, healthdiv, m_iHealthBarHeight);  		m_pBitmapHealthEmpty->setBounds(m_iHealthBarXpos + healthdiv, m_iHealthBarYpos, 			m_iHealthBarWidth - healthdiv, m_iHealthBarHeight); 		m_pBitmapHealthEmpty->GetBitmap()->setPos( -healthdiv, 0 );

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 26-05-2017 в 10:57:

Меняй значения m_iHealthBarXpos и m_iHealthBarYpos.


Отправлено Luciferchik 26-05-2017 в 11:16:

Ku2zoff Сработало, спасибо большое за помощь!

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено a1batross 28-05-2017 в 13:07:

XaeroX правильно сказано. Зачем трепаться и спрашивать про сорцы у каких-то жлобов, если можно написать самому.


Отправлено XaeroX 28-05-2017 в 18:39:

a1batross
Для хамов есть замечательный форум - КСМ, туда и предлагаю отправиться восвояси.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено a1batross 29-05-2017 в 15:05:

XaeroX при всём моём уважении за полезные обществу дела, предлагаю посмотреть в первую очередь на себя.


Отправлено XaeroX 29-05-2017 в 15:33:

a1batross
Объясни, пожалуйста, почему ты мне дерзишь на моём же форуме.

А также поясни, что именно я должен увидеть, посмотрев на себя. Если мне не изменяет память, то я обычно что-то делал, а уж потом рассуждал на форуме, что-де это можно написать. И прилагал видео либо скриншоты своей работы. Твоей работы я не вижу, следовательно, кредит доверия ты не заработал - а следовательно, я имею полное право ставить под сомнение твои слова и считать их априори трёпом. Конечно, ты можешь игнорировать моё мнение - но ты зачем-то мне хамишь. Пытаешься заработать респект этим, вместо кода?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 29-05-2017 в 16:10:

Цитата:
a1batross писал:
Зачем трепаться и спрашивать про сорцы

Ох, была бы ещё от этих сорцов польза... Зачем нужен мод с изменяемым вектором гравитации? Я вижу два варианта: 1 - мод про космический корабль. 2 - задротский мод типа халфквейка с психоделией и дурацкими загадками. Первое и бекз переменной гравитации можно сделать, второе... Ну халфквейк и так не плох для любителей подобного трэша.

Добавлено 29-05-2017 в 23:10:

Ну а вообще, я бы глядел в сторону PM_AddGravity:
C++ Source Code:
pmove->velocity[2] -= (ent_gravity * pmove->movevars->gravity * pmove->frametime );
pmove->velocity[2] += pmove->basevelocity[2] * pmove->frametime;
pmove->basevelocity[2] = 0;

Меняем 2 на 1 или 0 в зависимости от какого-либо условия.


Отправлено XaeroX 29-05-2017 в 16:14:

Цитата:
Ku2zoff писал:
Зачем нужен мод с изменяемым вектором гравитации?

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

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено a1batross 29-05-2017 в 16:17:

XaeroX потому что мне всё равно твой это форум или нет.

Не видишь -- ну и ладно. Я этим никак не взолнован. Ну не получу неодобрение или одобрение от какого-то XaeroX, сильно много не потеряю. Да и тебе зачем время на меня тратить.

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

И ещё раз повторяю, трёп не нужен. Посему предлагаю его закончить на этом. Если тем не менее хочется продолжить, то приглашаю в ЛС или джаббер.


Отправлено XaeroX 29-05-2017 в 16:25:

Цитата:
a1batross писал:
потому что мне всё равно твой это форум или нет

Цитата:
a1batross писал:
от какого-то XaeroX

Ну ты прямо с козырей зашёл.
Цитата:
a1batross писал:
Большинству вещей можно научиться самому, не выпрашивая что-то у нежелающих делиться. Именно на это я и намекнул.

Не совсем. Ты, помимо всего прочего, назвал тех, кто не желает делиться, жлобами. Хотя они лично тебе ничего не должны, не так ли?

Добавлено 29-05-2017 в 23:25:

Цитата:
a1batross писал:
Посему предлагаю его закончить на этом.

Хорошо, давай закончим. По оскорблениям вышло 1:0 в твою пользу. Наверное, это повод для гордости.
Давай лучше перейдём на чуть менее персонифицированный уровень вот в этой теме: http://hlfx.ru/forum/showthread.php?s=&threadid=5006

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Crystallize 09-06-2017 в 01:54:

можно ли в хл сделать определенному монстру эффект stipple alpha через glbegin? (не возиться с подключением шейдеров)


Отправлено XaeroX 09-06-2017 в 04:00:

Даже если можно - это скорее всего приведёт к софтварной растеризации и тормозам. Используй шейдеры, не ленись.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 09-06-2017 в 18:34:

Цитата:
Crystallize писал:
можно ли в хл сделать определенному монстру эффект stipple alpha через glbegin?

Можно, делай.

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 10-06-2017 в 08:57:

Цитата:
Crystallize писал:
можно ли в хл сделать определенному монстру эффект stipple alpha через glbegin?

Попробовал погуглить, что это такое. Ничего конкретного не нагуглил. Альфа и альфа. Rendermode - texture и меняем значение Renderamt, вот тебе и альфа для монстра.


Отправлено Crystallize 10-06-2017 в 12:13:

Ku2zoff а как ты гуглил?


Отправлено XaeroX 10-06-2017 в 12:40:

Ku2zoff stipple это штриховка.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 12-06-2017 в 14:38:

Ребят, как заставить работать правильно модели из контры в халве? Знаю что анимации не сходятся, а как их добавить и где чот не знаю, подскажите плиз

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 12-06-2017 в 15:05:

9-вей блендинг добавь по вкусу

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 12-06-2017 в 15:40:

Дядя Миша На форуме есть тутор по добавлению 9-вей блендинга, а то только нашол на сайте Аранжевого мента

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 12-06-2017 в 16:05:

Luciferchik там только клиентская часть. Серверная (невидимая модель player.mdl) будет блендиться так же, как и клиентская видимая без добавления 9-way блендинга. На форуме целая тема была по этому поводу, несколько лет разжёвывали её. Просто так с клиента не утащить StudioSetupBones и не вставить на сервер. Там некоторые нюансы есть, поэтому бери сорцы regamedll, и тащи из них SV_StudioGetBlendingInterface, и всё, что за ним тянется. Можно конечно кое-что переписать, а можно скомбинировать с клиентским кодом, как делал я. Да и делал я не с regamedll, т.к. его тогда вроде ещё не было, а с каких-то кривых сорцев от китаяса.


Отправлено Luciferchik 12-06-2017 в 16:16:

Ku2zoffПасяб, взал сорцы из github-а

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 12-06-2017 в 17:18:

Цитата:
Ku2zoff писал:
Просто так с клиента не утащить StudioSetupBones и не вставить на сервер

Это почему жы?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено a1batross 12-06-2017 в 17:38:

Ku2zoff
удивительно, а я стащил. Даже гейты серверные запилил. И небольшую дебаг утилиту по отрисовке серверных хитбоксов через Physic API Ксаша. Наглядно и красиво!

Отрисовка есть в моём форке ReGameDLL, а всё остальное могу выложить, но я прямо так особо не тестировал и поэтому не заливал.


Отправлено Ku2zoff 12-06-2017 в 19:27:

Цитата:
Дядя Миша писал:
Это почему жы?

Ну хотя бы потому, что там правка нужна во многих местах. Я имел ввиду, что тупой копипастой не получится.
Цитата:
a1batross писал:
Даже гейты серверные запилил.

Это у которых гейтфрейм всегда 0? Или ты в мастер-ветку не заливал? Я запилил анимируемые гейты на сервере, но без нормальной отрисовки пока не понял, синхронны они с клиентскими или нет. Надо будет дёрнуть отрисовку себе под какой-нибудь #if defined, да проверить под ксашем.


Отправлено Дядя Миша 12-06-2017 в 20:27:

Ну очевидно же гейт анимируется на сервере, а на клиент передаём гейтфрейм. Надо только его грамотно заварпить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено a1batross 12-06-2017 в 20:57:

Ku2zoff
нет, я всё это не заливал.

Может когда настанет пора извращений над серверкой КС, то доделаю. А пока там только отрисовка.

Вся суть была в том, что ноги не двигались во время ходьбы.


Отправлено Ku2zoff 13-06-2017 в 02:51:

Цитата:
Дядя Миша писал:
Ну очевидно же гейт анимируется на сервере, а на клиент передаём гейтфрейм.

И при высоком пинге у нас будет ХЗ что, например лаги гейта. Когда гейтфрейм для клиента считается именно на клиенте - такого нет.


Отправлено Дядя Миша 13-06-2017 в 13:46:

Цитата:
Ku2zoff писал:
И при высоком пинге у нас будет ХЗ что, например лаги гейта

Это ты так теоретизируешь или проверял уже?
Я вот к примеру уже тестил серверный гейт на xashNT еще джва года назад. Всё прекрасно. Канал краснодар-новосибирск (играли с тов. Shadow).
Это наоборот, когда гейт локальный - это настолько угробищное дело, что плеваться хочется. Во первых при лагах игрок начинает задорно сучить ножками, стоя на месте, во вторых, когда игрок едет на поезде, при повороте поезда игрока тоже дергает, потому что клиентский код уже не в состоянии различать когда поворачивает игрок. а когда поезд вместе с игроком. И исправляется это только серверным гейтом. И в Волатиле он тоже серверный, разумеется. Да и я может в параное сделаю. Но потом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 14-06-2017 в 07:20:

Цитата:
Дядя Миша писал:
Канал краснодар-новосибирск

Нам насрать, Тони Старк, как стандарт пара стран, автострад, Краснодар, Татарстан, Москвабад, паспорта, нам эстрад нарасхват, хоть по МКАДу на старт, хоть на Мадагаскар!

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 14-06-2017 в 08:48:

XaeroX

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.


Отправлено JPEG 14-06-2017 в 09:12:

Цитата:
XaeroX писал:
Нам насрать, Тони Старк, как стандарт пара стран, автострад, Краснодар, Татарстан, Москвабад, паспорта, нам эстрад нарасхват, хоть по МКАДу на старт, хоть на Мадагаскар!

попахивает Мироном

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 14-06-2017 в 09:50:

Yo Den
Ты что-то имеешь против Оксанки?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 14-06-2017 в 12:01:

Цитата:
XaeroX писал:
Нам насрать, Тони Старк, как стандарт пара стран, автострад, Краснодар, Татарстан, Москвабад, паспорта, нам эстрад нарасхват, хоть по МКАДу на старт, хоть на Мадагаскар!

Иисус, ваш терапевт имеет но, чтобы ответить для!
Если хотите мой совет - дайте это дерьмо вверх!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 14-06-2017 в 12:02:

Цитата:
XaeroX писал:
Yo Den
Ты что-то имеешь против Оксанки?

да не, ты что)

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено VXP 23-06-2017 в 17:33:

Здравствуйте. Назрел такой вопрос: я не знаком с маппингом под первый Half-Life, поэтому хотелось бы узнать - правда ли свойства rendercolor и renderamt для всех новых энтить изначально стоят по нулям? В fgd для Blue Shift, например, так и есть, но если это так же соответствует положению дел в первой халфе - подскажите, кто знает, почему так? Неужели при нулях в rendercolor с renderamt энтитя отрисовывается как если бы они были установлены в 255? Спасибо


Отправлено XaeroX 23-06-2017 в 17:47:

Цитата:
VXP писал:
Неужели при нулях в rendercolor с renderamt энтитя отрисовывается как если бы они были установлены в 255?

Ну да. Это дефолт, а нули это типа "не задано".

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено VXP 23-06-2017 в 22:42:

Цитата:
XaeroX писал:
Ну да. Это дефолт, а нули это типа "не задано".

Тогда каким образом можно сделать энтитю, к примеру, полностью чёрной? Неужели через "1 1 1"? Крайне странное поведение ИМХО


Отправлено XaeroX 24-06-2017 в 06:09:

За халфу я ничего не скажу - лень ковырять, а в волатиле я сделал так, что 0 должны быть все три поля рендерколор и при этом рендерамт, чтобы они все стали 255. Тогда чёрный цвет это (0,0,0,255). Может быть, оно и в халфе так?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Sigurth 24-06-2017 в 06:55:

У меня странная штука происходит в моде. В общем, скопипастил я еще давненько из Паранойи МП3-плеер. Он иногда заставлял игру зависать и вылетать, но это я все пофиксил. Но потом я заметил один странный баг. После загрузки сохраненки, в которой на данный момент играет музыка, то есть m_strCurrentMp3 у игрока != 0, музыка все равно выключается, а не должна. Я думал, это я криво что-то сделал, но потом вывел в консоль инфу и увидел следующее: "Warning: CMP3 : couldn't load music/quick", или же вообще "Warning: CMP3 : couldn't load music/half-life-000" после загрузки сейва. То есть понятно, он почему-то пытается воспроизвести название сейва сразу после загрузки этого же сейва. И я подумал, и в общем вот мой вопрос, может ли быть такое, что у меня каким-то образом мессаги сдвинулись или что-то подобное? Потому что это бред какой-то.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Ku2zoff 24-06-2017 в 10:07:

Sigurth ты вполне мог накосячить со строками. Это же Си. ДМ писал тут в соседней теме, что работа со строками в этом языке довольно странная и отпугивает многих. Давай сюда свой код, будем поглядеть.


Отправлено Sigurth 24-06-2017 в 10:43:

Сейчас писал сюда фрагменты кода и в голову пришла мысль. На сервере есть строчка

C++ Source Code:
ALERT(at_console, "MP3 player: playing file [%s]\n", STRING(m_strCurrentMp3));

и на клиенте есть
C++ Source Code:
CON_D_PRINTF("CMP3: playing %s%s (%s)\n", MUSICDIR, pszSong, bNotLooped ? "not looped" : "looped");


Так вот, когда я сам активирую плеер, то в консоль пишется и серверная часть, и клиентская. А при загрузки сохранёнки - только клиентская. Значит, проблема не в не на сервере, а где-то на клиенте. А значит, что-то активирует функцию MsgFunc_PlayMP3.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Ku2zoff 24-06-2017 в 14:03:

Sigurth ты сохраняешь в сейвдату игрока только имя трека без расширения, или полный путь с расширением? Второе вообще небезопасно. Лучше парсить всё на клиенте, а сервера слать мессагой только имя. Как у тебя формируется строка m_strCurrentMp3, и как ты отправляешь мессагу после загрузки карты?


Отправлено Дядя Миша 24-06-2017 в 16:19:

Цитата:
Ku2zoff писал:
работа со строками в этом языке довольно странная

Она не то чтобы странная. Её как таковой вообще нет. В крестах через контейнеры обычно работают, но они там не всегда были.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Sigurth 24-06-2017 в 19:24:

Цитата:
Ku2zoff писал:
ты сохраняешь в сейвдату игрока только имя трека без расширения, или полный путь с расширением?

Только имя, но с расширением, например "music01.mp3".

Цитата:
Ku2zoff писал:
Как у тебя формируется строка m_strCurrentMp3, и как ты отправляешь мессагу после загрузки карты?


При спавне или ресторе переменная m_iMp3NeedsUpdate = 2;
А потом такой код в функции UpdateClientData
C++ Source Code:
1
if (m_iMp3NeedsUpdate)
2
{
3
  if (FStringNull(m_strCurrentMp3))
4
  {
5
    MESSAGE_BEGIN( MSG_ONE, gmsgMP3, NULL, pev );
6
    WRITE_BYTE(0); // turn off
7
    if (m_iMp3NeedsUpdate == 2)
8
      WRITE_COORD(0); // level 2 update: stops immediatly
9
    else
10
      WRITE_COORD(5.0); // update during game - slowly turn off
11
    MESSAGE_END();
12
    //ALERT(at_aiconsole, "MP3 player: turning off\n");
13
  }
14
  else
15
  {
16
    MESSAGE_BEGIN( MSG_ONE, gmsgMP3, NULL, pev );
17
    WRITE_BYTE(m_iMp3NeedsUpdate == 3 ? 2 : 1); // play
18
    WRITE_STRING(STRING(m_strCurrentMp3));
19
    MESSAGE_END();
20
    //ALERT(at_console, "MP3 player: playing file [%s]\n", STRING(m_strCurrentMp3));
21
    // Sigurth
22
    if( m_iMp3NeedsUpdate == 3 )
23
      m_strCurrentMp3 = iStringNull;
24
 
25
  }
26
 
27
  m_iMp3NeedsUpdate = 0;
28
}


Я думаю, может мне просто посылать номер трека, а на клиенте уже определять, какой трек будет соответствовать этому номеру? Скорее всего и проблема исчезнет. Но в Паранойе то точно такой же код, и он не вызывает багов (ну кроме вылетов). Хотя может дело в том, что Паранойя изначально строилась на спирите?

__________________
Никогда не поздно сделать мод под хл1


Отправлено Дядя Миша 24-06-2017 в 19:45:

Sigurth ты эту строчку в сейв-то сохранил?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Sigurth 25-06-2017 в 05:46:

Дядя Миша Сохранил

C++ Source Code:
DEFINE_FIELD( CBasePlayer, m_strCurrentMp3, FIELD_STRING ),


Говорю же, проблема в несанкционированном вызове мп3 плеера, и походу не с сервера мессагой, а чисто с клиента. Потому что в коде ошибок нет, плеер работает исправно. Но вот почему-то он пытается при старте уровня включить мне музычку с названием сейва, который я загружаю, например quick, autosave или half-life-000. А потом в консоль ругается, что не может загрузить такой файл. Причем ругань выдает только клиент, на сервере походу мессага вообще не отправлялась, потому что я там что в ALERTe написано, в консоль не пишется при developer 5. А если я сам активирую плеер, то все пишется.

__________________
Никогда не поздно сделать мод под хл1


Отправлено a1batross 25-06-2017 в 09:33:

Sigurth так поставь брейкпоинт на клиенте и смотри кто же тебе её вызывает.
Если в трейсе будет CL_DispatchUserMessage(или что-то в этом роде), значит её точно выслал сервер, если так, то ищи все вхождения gmsgPlayMP3 на сервере, ставь везде брейкпоинты и смотри что происходит.

Я так понимаю, вся проблема в том, что вместо реального названия трека в сейв записывается нечто другое?


Отправлено Дядя Миша 25-06-2017 в 13:09:

Да мусор у нево на клиенте

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Sigurth 25-06-2017 в 14:37:

a1batross Дядя Миша
Короче, я понял в чем проблема. Альбатросс был прав, что вместо реального названия трека в сейв записывается нечто другое. А именно m_strCurrentMp3 каждый кадр принимает различные значения. Они меняются в зависимости от нажатия клавиш, а после сохранения игры - название сейва. Я решу проблему, как и хотел. Уберу эти проклятые строки и буду сохранять индекс трека, а на клиенте сопоставлять индекс и название. Всем спасибо

__________________
Никогда не поздно сделать мод под хл1


Отправлено Дядя Миша 25-06-2017 в 14:43:

Цитата:
Sigurth писал:
Они меняются в зависимости от нажатия клавиш, а после сохранения игры - название сейва

ну мусор у тебя там, мусор. Вычисти его. Ты строчку не зануляешь видимо.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Sigurth 25-06-2017 в 16:01:

Дядя Миша Да я уже переделал под индексы. Так удобнее даже

__________________
Никогда не поздно сделать мод под хл1


Отправлено Chyvachok 27-06-2017 в 15:24:

Кстати а как зарядить оружие меньше чем p->iMaxClip? Хочу сделать имитацию патронника, то есть сделать допустим МП5 обойму 31 патрон, если оружие полностью разряжено то заряжать 30 патронов, если не полностью то 31. Или вот эта базука, в ней должно заряжаться 12 патронов если полностью разряжена, 15 если нет (типа ракеты остаются в барабане): http://imgur.com/a/tmccL

Если к примеру написать так, то оно не работает, заряжает 31 патрон, а не на 1 меньше, хотя анимация проигрывается нужная:

code:
if (m_iClip <= 0) DefaultReload( MP5_MAX_CLIP-1, MP5_RELOAD_EMPTY, 2.0 ); else DefaultReload( MP5_MAX_CLIP, MP5_RELOAD, 1.5 );


Отправлено Ku2zoff 27-06-2017 в 18:03:

Chyvachok

C++ Source Code:
1
void CBasePlayerWeapon::ItemPostFrame( void )
2
{
3
  if ((m_fInReload) && ( m_pPlayer->m_flNextAttack <= UTIL_WeaponTimeBase() ) )
4
  {
5
    // complete the reload.
6
    [b]int j = min( iMaxClip() - m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]);[/b]
7
 
8
    // Add them to the clip
9
    m_iClip += j;
10
    m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= j;
11
 
12
    m_pPlayer->TabulateAmmo();
13
 
14
    m_fInReload = FALSE;
15
  }

Поэтому и не работает то, что ты указываешь при вызове DefaultReload. Заводи в базовом классе оружия новую переменную, например, m_iReloadingAmmo, задавай ей значение iClipSize в DefaultReload, а потом в ItemPostFrame подсовывай её вместо iMaxClip(). И сразу же по завершении перезарядки зануляй. Не знаю, нужно ли сохранять её в сейв, наверное нет. Можешь ещё воткнуть проверку, чтобы m_iReloadingAmmo не было больше iMaxClip().
Фишка в том, что DefaultReload только проверяет оружие на возможность перезарядиться, считая патроны. Сама перезарядка происходит в ItemPostFrame.

Добавлено 28-06-2017 в 00:51:

И да, наверное вальвовцы хотели что-то такое сделать с количеством патронов, но не дописали код, сделав проверку только в DefaultReload.

Добавлено 28-06-2017 в 01:03:

P.S. Я буду делать у себя нечто подобное, только с выбрасываемыми магазинами, как в Firearms. Если в магазине осталось меньше половины патронов - он выкидывается, если больше - сохраняется. Для отображения магазинов две цифры - одна означает полные магазины, другая неполные.


Отправлено KiQ 27-06-2017 в 18:06:

Цитата:
XaeroX писал:
Ты что-то имеешь против Оксанки?

Ну можно тему отдельную запилить, в принципе

__________________
-Brain is dead-


Отправлено Chyvachok 27-06-2017 в 21:30:

Ku2zoff спасибо за подсказку, буду смотреть.

Кстати твой старый тутор по wallpuff-ам ( http://hlfx.ru/forum/showthread.php?s=&threadid=1151 ) мне очень пригодился как самая идея как вызывать эффекты на клиенте, плюс мне еще помог Gunship_Mark_II поделившись кодом своих эффектов что подобным образом вызываются через эвенты на клиенте, попробовал через них реализовать эффекты для плазмогана и кровяхи:

https://www.youtube.com/watch?v=4CcSTSE5K98
https://www.youtube.com/watch?v=HDFgYO2RYqA


Отправлено Ku2zoff 28-06-2017 в 03:03:

Цитата:
Chyvachok писал:
твой старый тутор по wallpuff-ам

Глянь сорцы Invasion (есть на гитхабе), там весьма годные партикли, лучше, чем в моём нубском туторе


Отправлено Chyvachok 28-06-2017 в 08:46:

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

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


Отправлено Ku2zoff 28-06-2017 в 09:18:

Цитата:
Chyvachok писал:
а в чем вообще достоинство тех партиклей?

Цитата:
Chyvachok писал:
эффект попадания пуль в стены

Ну вот это они и есть. Они там вертятся по-всякому вокруг своей оси, а не просто статично летят, как, например в сталкере, или в моём туторе.
Цитата:
Chyvachok писал:
огонь из огнемета

Что-то самописное, но смахивает на аврору из спирита по внешнему виду. Главное, что на триапи написано, темпэнтити не жрёт. Если нужен только огнемёт, или дымовой шлейф от ракеты - можно это юзать (или валлпаффы из паранойи, немного разнообразив код). Если нужно много всяких систем вида фонтан/струя/шлейф - тогда можно тянуть аврору себе в мод. Ну или RenderSystem из XDM, там вообще всякое можно, начиная от дождя и снега, и заканчивая взрывами и туманом.


Отправлено Chyvachok 28-06-2017 в 10:48:

Цитата:
Ku2zoff писал:
Ну или RenderSystem из XDM, там вообще всякое можно, начиная от дождя и снега, и заканчивая взрывами и туманом.


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


Отправлено Дядя Миша 28-06-2017 в 13:03:

Как вы эти парт-системы между собой различаете. Они все имеют примерно одинаковый функционал, кроме авроры. И главное отличие авроры - постоянно действующий эмиттер, вокруг этой концепции выстроен весь код. Обычные партикли устроены несколько иначе.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 29-06-2017 в 02:31:

Цитата:
Chyvachok писал:
но она столько за собой файлов тащит

Просто берёшь, и подключаешь эти файлы к проекту. Рисование всё равно вызывается из файла tri.cpp. Ну и Init/VidInit в hud.cpp, и всякое другое по мелочи в других файлах - только хедеры подключай. А так вся RS в одной отдельной папке находится.
Цитата:
Chyvachok писал:
плюс там в коде много чего переделано

Я бы думал не об этом, а об общей замудрёности системы. А следовательно, о мелких багах-бажочках. Вот, например, жуткие проседания фпс на первой карте кампании ArcticIncident, из-за колоизации снежинок в финальной версии. И прочие остальные радости.
Цитата:
Дядя Миша писал:
Как вы эти парт-системы между собой различаете.

По названию А вообще, я смотрел более-менее подробно только код авроры и RS, другие (из паранойи) просто тупо копипастил. Правда, уже всё это забыл, прошло почти 8 лет.


Отправлено Дядя Миша 29-06-2017 в 07:59:

Цитата:
Ku2zoff писал:
из-за колоизации снежинок в финальной версии

Думаешь из-за колоизации? Дождик БУзера весь колоизировал, однако не тормозил.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 29-06-2017 в 08:52:

Цитата:
Дядя Миша писал:
Дождик БУзера весь колоизировал, однако не тормозил.

Ну там это... Он не совсем прям колоизировал. Но сути это не меняет - трассы там были.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 29-06-2017 в 09:13:

~X~ про колоизацию вроде бы упоминал. Конечно, более вероятны проблемы с отсечением невидимых областей, или рисование лишних полигонов. Надо почитать тему по XDM 3.0.3.8, чтобы освежить это в памяти.

Цитата:
Ku2zoff писал:
Я буду делать у себя нечто подобное, только с выбрасываемыми магазинами, как в Firearms.

Вот, кстати, вчера поработал немного в этом направлении. Довольно интересная тема оказалась. Пришлось заюзать ammo_secondary.cpp для отображения количества и иконки магазинов, написать новую функцию перезарядки и чуток подправить код перезарядки в ItemPostFrame. Осталось отшлифовать напильником, и завести магазины с "памятью", в которых хранятся патроны и их количество.


Отправлено Дядя Миша 29-06-2017 в 10:07:

Цитата:
Ku2zoff писал:
Конечно, более вероятны проблемы с отсечением невидимых областей, или рисование лишних полигонов.

Всё это очень сомнительно. Ну не будет тормозить хоть 20 тыщ партиклей, даже через глбегин на современных видеокартах. А в его снежинках было от силы пару тысяч. Это такой лаг, который под силу создать только Мастеру.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 30-06-2017 в 08:33:

Кто нить знает нормальные примеры раскачки камеры при ходьбе типа аля сталкер или сру от страха?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено fl0wer 30-06-2017 в 18:25:

Из-за чего могут мерцать (моргать) энтити?


Отправлено Ku2zoff 02-07-2017 в 16:05:

Цитата:
Luciferchik писал:
Кто нить знает нормальные примеры раскачки камеры при ходьбе типа аля сталкер или сру от страха?

Оперируй pparams->viewangles[YAW], чтобы вертеть камеру влево-вправо по горизонтали. Я надеюсь, ты заметил, что если в сталкере опустить взгляд вниз, или задрать вверх, то миникарта начинает мотаться как бешеная? Чтобы наклонять камеру вправо-влево по вертикали, используй pparams->viewangles[ROLL]. К значениям англсов нужно прибавлять значения bob, высчитываемые функцией V_CalcBob. Если тебе нужно раскачивать в разных направлениях с разной амплитудой, можешь продублировать эту функцию, завести новые квары, и использовать их вместе с обычным bob.

Добавлено 02-07-2017 в 23:05:

Настал мой черёд задать нуб вопрос. В связи с кодингом магазинов, у меня возникла проблема. Магазины эти надо где-то хранить. И как-то хранить. Завёл структуру, содержащую порядковый номер магазина, кол-во патронов, и тип патронов:
C++ Source Code:
1
typedef struct
2
{
3
  int iNumber;
4
  int iAmmoCount;
5
  const char *pszAmmo;
6
} ClipInfo;

Как это дело запихнуть в сейвдату? Ни одного подходящего типа поля нет. Ближе всего FIELD_INTEGER, но он только int'ы и enum'ы умеет. А здесь typedef struct. Была мысль сохранять магазины как float'ы: цифра до точки - номер магазина, цифра после точки - кол-во патронов в нём. Но тогда негде будет хранить тип патронов. А значит, игрок не сможет подбирать магазины, пока у него нет соответствующего оружия (сохранять магазины придётся в сейвдату оружия, конечно). Тоже нехорошо. Пока я остановился на таком варианте: хранить как float'ы в классе игрока. Первая цифра - тип патронов, вторая - номер магазина, дальше точка, а после точки кол-во патронов в данном магазине. Как-то так. Ещё ничего не накодил, это только предположение. МБ есть какой-то хороший вариант, чтобы сохранить структуру в сейв?


Отправлено Дядя Миша 02-07-2017 в 18:13:

Ku2zoff а не хочеш обоймы энтитями делать, не? ))))
или тебе вот прям надо помнить в каком магазине сколько осталось патронов? Заведи два массива, например.

Добавлено 02-07-2017 в 21:13:

ЗЫ. в сейврестор можно писать всё что угодно, надо лишь добавить новый тип. добавь FIELD_STRUCT да и сохраняй себе наздоровье.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 02-07-2017 в 18:49:

Цитата:
Дядя Миша писал:
а не хочеш обоймы энтитями делать, не?

Как-то стрёмно на первый взгляд. А если они будут жрать эдикты? Есть такое подозрение. Ну вот например 10 уникальных стволов, и у каждого 8 магазинов максимум. Даже если не у каждого по 8 на самом деле, то память под 8 штук выделяется всё равно. В самом тяжёлом случае выходит 32 игрока х 10 стволов х 8 магазинов.
Цитата:
Дядя Миша писал:
в сейврестор можно писать всё что угодно, надо лишь добавить новый тип.

Ух ты, не знал. Будем посмотреть сорцы rehlds и ксаша на предмет таких делов, для пущей уверенности.

Добавлено 03-07-2017 в 01:49:

Цитата:
Дядя Миша писал:
или тебе вот прям надо помнить в каком магазине сколько осталось патронов?

В файрармсе так и есть. Магазины перезаряжаются по кругу, кол-во патронов запоминается для каждого. С тем отличием, что файрармс - мультиплеерный мод, и ничего сохранять не надо.


Отправлено Дядя Миша 02-07-2017 в 19:40:

Цитата:
Ku2zoff писал:
А если они будут жрать эдикты?

ну что значит если. Ну как это если? Обязательно конечно будут! Я бы даже сказал пре-не-пре-мен-ней-ше!

Цитата:
Ku2zoff писал:
Есть такое подозрение

8 лет под халфу кодит - есть такое подозрение, мда. У Мастера тоже всё подозрения были.

Цитата:
Ku2zoff писал:
для пущей уверенности.

я када эти новые типы добавлял - никаких сорцев еще и близко не было. Вон старый ксаш-мод 0.39 я там добавил типо FIELD_RANDOM для двух флоатов.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-07-2017 в 05:49:

Цитата:
Дядя Миша писал:
8 лет под халфу кодит - есть такое подозрение, мда.

Ну не 8 лет же Кодю примерно 4 года. До этого только копипастил даже не задумываясь, как написан код.
Цитата:
Дядя Миша писал:
я када эти новые типы добавлял - никаких сорцев еще и близко не было.

Ну не знал я, что сейв/рестор хавает любые типы данных. Думал, что там в движке прописаны только определённые. Как с физикой: мувтипы новые в дллке не добавишь - гс грохнется с Host_Error. Поди разбери, где там у вальвы всё жёстко в движке закодено, а где можно расширять интерфейсы. Вон, вроде delta.lst лежит в папке мода - добавляй не хочу новые поля. Ан нет, в движке захардкоден определённый набор на каждую секцию.


Отправлено Дядя Миша 03-07-2017 в 07:44:

Цитата:
Ku2zoff писал:
Ан нет, в движке захардкоден определённый набор на каждую секцию.

ты же entity_state_t не поменяешь вот так просто.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-07-2017 в 10:31:

Дядя Миша ну, а если я захочу weapondata_t расширить? Там блин вообще доступны только 4 иузера и 4 фузера. И по три из них уже заняты. Издевательство какое-то. Уж могли бы и 4 вузера дать моддерам, и 4 еузера. Первые для всяких разбросов и прочих направлений, а вторые для предиктинга ракет и лазерных точек, например.

Так, товарищи. Сделаю выбрасываемые магазины, могу оформить в виде тутора, если будет интересно кому. Если выгадаю время, то, наконец, вывалю вам тутор по зиппе, который давно обещал. Будет повеселее, чем в инвазионе.


Отправлено Дядя Миша 03-07-2017 в 14:11:

Цитата:
Ku2zoff писал:
ну, а если я захочу weapondata_t расширить?

ну расширяй. Только бинарную совместимость к чертям поломаешь.
Ты что думаешь это чисто халфовские проблемы? А ты в курсе что система совместимых комманд x86 предусматривает опкод в виде одного байта, из-за чего как легко догадаться следует, что этих самых опкодов не может быть физически более 256, а комманд у современных процессоров несколько больше, если учитывать все MMX и SSE. Ты в курсе через какую жопу делаются эти расширения? Бралась одна неиспользуемая команда и за ней ставилась еще одна. А потом по аналогии - с соседом такая же шняга. И на этих костылях совместимости построено практически всё семейство x86.
Но ситуация несколько улучшилась при переходе на 64-х разрядную архитектуру, там уже постарались учесть большинство ошибок проектирования, допущенных в 70-е.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-07-2017 в 15:22:

Цитата:
Дядя Миша писал:
там уже постарались учесть большинство ошибок проектирования, допущенных в 70-е.

Я бы не сказал, что ошибок. Просто в то время такого скромного набора было достаточно. Как и 640 кб хватало всем. А потом, ВНЕЗАПНО оказалось, что оказывается технологии не стоят на месте, и аппаратные лимиты можно преодолеть. Правда, в угоду совместимости, лимиты преодолевали костылями. Но если бы не совместимость, не было бы у нас такого многообразия софта под винду.

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


Отправлено Дядя Миша 03-07-2017 в 15:37:

Цитата:
Ku2zoff писал:
Но если бы не совместимость, не было бы у нас такого многообразия софта под винду.

Ну щас весь софт пересоберут под x64, как-никак достаточно веская причина. А десятка, если не путаю только 64-х битной и бывает.

Цитата:
Ku2zoff писал:
не последнюю роль сыграли поджимающие сроки и жадный издатель

В клиентке всё делалось без минимальной задумки на будущее, исключение только интерфейс для рендеринга студиомоделей. Нужна вон-та функция? Выносим и смотрим что она за собой тянет и создаём такие экспорты. Т.е. просто куски кода вытянули в клиентку.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-07-2017 в 16:30:

Цитата:
Дядя Миша писал:
А десятка, если не путаю только 64-х битной и бывает.

Нет, есть x86. В основном, конечно для недобуков и виндопланшетов, с 1-2 гб памяти. ЧСП, ленивые китайцы ставят на бюджетные версии ноутбуков с 2 гб памяти x64 версию (как и на более дорогие), и иной раз найти x86 драйвера для экзотических железок просто нереально. В итоге имеем 1.7 гб доступными (250-300 мб отдано встроенной графике), около 0.9-1.2 гб жрёт винда с висящими в фоне бесполезными утилитами от производителя, а пользователю остаётся для работы в районе 500 мб. Учитывая, что винчестеры в ноутбуках аццки медленные на 5200 об/мин, получаем ещё и тормозящий файл подкачки. На выходе получается этакая тормозная хрень, которая не может не то что в работу и игры, даже в интернет и кино показать не может. Правда, это всё решается накаткой какой-нибудь x86 бубунты, которая ест от силы 500 мб памяти в простое. Но здесь добавляются проблемы с видеодрайвером. Капец короче.
Цитата:
Дядя Миша писал:
исключение только интерфейс для рендеринга студиомоделей.

Хм, интересно, почему серверный блендинг не сделали даже в версии сдк 2.4?


Отправлено Дядя Миша 03-07-2017 в 17:22:

Для халфы он без надобности просто - код внутри самого движка.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 04-07-2017 в 06:28:

Дядя Миша ну так и клиентский код тоже внутри движка есть. Но, тем не менее он продублирован в клиентке через интерфейс студиомодельрендерера, а в СДК даже есть пример кастомного 4-way блендинга. Почему на сервере нет такого примера, и почему блендинг не продублирован - зогадко.


Отправлено Дядя Миша 04-07-2017 в 07:18:

Цитата:
Ku2zoff писал:
Почему на сервере нет такого примера

Ты что так и не смог его подключить?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 04-07-2017 в 07:38:

Да смог, уже давно. Не совсем такой, как в кс, но работает как надо.


Отправлено Crystallize 04-07-2017 в 11:57:

Как играть в WON-версию с музыкой с виртуального CD-привода?


Отправлено Sigurth 10-07-2017 в 16:17:

Ku2zoff Кстати, вот таким образом в хл сохраняется в сейврестор структура dynpitchvol_t у ambient_generic

C++ Source Code:
DEFINE_ARRAY( CAmbientGeneric, m_dpv, FIELD_CHARACTER, sizeof(dynpitchvol_t) ),

__________________
Никогда не поздно сделать мод под хл1


Отправлено Ku2zoff 12-07-2017 в 08:43:

Sigurth там написан огромный комментарий по этому поводу. То есть, сохраняется структура как бинарные данные, и менять её (в коде) не стоит, если важно, чтобы старые сохранения загружались корректно. Но, тем не менее, этот вариант прекрасно мне подходит.

Ну что, товарищи. Магазины я сделал. Перезаряжаются циклично, запоминают количество патронов внутри себя. Заряжают либо на 1 патрон больше (если остался в стволе), либо ровно объём магазина (если ствол пустой). Осталась пара косметических мелочей, например, оставление этого самого патрона в стволе, и сохранение в магазин количества m_iClip - 1. И ещё что-то. Ну и сохранение в сейв. Кстати, я тут пришёл к выводу, что патроны достаточно хранить в виде целого числа таким образом:

C++ Source Code:
int WeaponClips[MAX_WEAPONS][MAX_WEAPON_CLIPS];

В первых скобках у нас m_iId оружия, а во вторых m_iMaxClips этого оружия. Значение каждого конкретного int'а - есть количество патронов в магазине с данным номером данного оружия. Целую структуру заводить не нужно, незачем хранить название патронов (его можно взять из ItemInfo оружия) и номер магазина (он уже хранится во вторых скобках). Даже не обязательно заводить для каждого оружия свои магазины (выглядит глупо, если два оружия используют одинаковые, то зачем их дублировать), можно вместо m_iId использовать энумератор, а индекс оружия хранить в базовом классе в виде m_iClipType, например.


Отправлено Дядя Миша 12-07-2017 в 15:04:

Цитата:
Ku2zoff писал:
Перезаряжаются циклично, запоминают количество патронов внутри себя

В халфе же есть m_iClip, чтобы запомнить кол-во патронов в магазине. Ну ввёл бы флаг-маску, типо FITEM_LAST_AMMO (1<<31) и ставил в переменную m_iClip. И было бы понятно сразу
if( FBitSet( m_iClip, FITEM_LAS_AMMO ))
есть патрон в стволе
else нет патрона в стволе
А ты какие-то структурки начал лепить, моссивчеги. К чему вот это всё?
Мастер в своём XDM занимается примерно тем же самым. Там где по смыслу достаточно одной строчки, он лепит какие-то фабрики и классы. Индусский кот.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 12-07-2017 в 16:17:

Цитата:
Дядя Миша писал:
А ты какие-то структурки начал лепить, моссивчеги. К чему вот это всё?

Про биты я знаю, но изначальная цель не запоминать есть патрон в стволе, или нет, а помнить остаток патронов в каждом запасном магазине, а не только в данный момент заряженном. Можно конечно сделать как в DoD: просто выбрасывать магазин при перезарядке. Но иногда игрок может по привычке перезарядить ствол как в халфе, если выстрелил 1-2 патрона. Ещё захотелось мне сделать как в Firearms, чтобы магазины можно было заряжать несколько раз подряд.


Отправлено Дядя Миша 12-07-2017 в 16:39:

А, спомнил. Проблема в том, что далеко не у каждого оружия есть магазины. Было бы удобнее рассматривать эти магазины как полноценные энтити, я об этом уже говорил. Потому что у магазина есть модель магазина и кол-во оставшихся патронов в ём. А то что они эдикты жрут. ну надо посчитать сколько магазинов на 32 игрока получится. 250 патронов, выходит 1 магазин 50 патронов как минимум, или даже 100 если кулимёт. 5 магазинов на игрока.
32*5 = 160 энтить. Много-вато но не смертельно. Всё зависит от того, насколько реалистичной хочется сделать эту модель вооружения. По хорошему там бы вообще всё переписать надо.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 12-07-2017 в 18:12:

Я думаю вот что: зачем нужна куча полноценных энтить, когда из дохлого игрока выпадает ствол с текущим заряженным магазином, а рядом рюкзачок (веапонбокс) с запасными магазинами внутри. Использованный магазин при перезарядке можно выкидывать темпэнтитей, пусть исчезает через некоторое время. А полные (новые) подбираемые магазины так и оставить обычными ammo_*, ну или точнее clip_*, пусть только добавляют игроку не именно патроны, а патроны в определённый запасной магазин.

Добавлено 13-07-2017 в 01:12:

Цитата:
Дядя Миша писал:
160 энтить

Для автомата. А для пистолета? 250 / 17 = 14, 32 * 14 = 448 энтить. Вот это уже ого и ах. Половина доступных эдиктов. Конечно, это очень сильно завышенные цифры, но всё же. Даже если количество усреднить, то при игре 5х5 по сети теоретически уже может не хватить эдиктов, когда заспавнится много ракет, лазерных точек, гибсов. Сами оружия, приаттаченные к игроку, тоже хавают эдикты, они же энтити?


Отправлено SOZON 14-07-2017 в 15:14:

visual studio. xashXT

вообщем эта тема же посвящена нубо-вопросам ведь так? ладно, задам несколько вопросов:
1) Бывает с визуал студией(win32,использую под виртуальную машину не ну а что? ), проблема , а именно , ни с того , ни с сего , слетают методы уже написанные, которые я вообще не трогал вылазит сообщение типа не смогла найти методы и кнопка ок. Кто-нибудь с таким сталкивался ?

2) Еще одна трабла с визуал студией этой. Если ты вдруг не исправишь все ошибки и закроешь программу(по идее ничего страшного ведь не случиться), после повторного запуска этой программы она не хочет открывать этот проект (server.dsp), менял тока его расположение файлов именно такого D:\папка с файлами компиляции dll. Тот же вопрос:Кто-нибудь с таким сталкивался ?

3)Написал пушку которая не наносит урон, то есть работает как краско-пульт блин, еще трабла с анимацией HOLSTER когда начинаешь стрелять пушка с левого положения переходит по середине , что очень усложняет прицеливание ну и некое мерцание есть как поправить?
4) для пушки я писал свой тип патронов, добавлял в читерскую impulse 101 и все равно остались баги. Вопрос такой с какими файлами кто работал под ксаш нужно работать (дайте весь список), чтобы нормально ничего не пропустив докодить эту пушку. спасибо.


Отправлено Ku2zoff 14-07-2017 в 15:37:

Цитата:
SOZON писал:
Подскажите годный visual studio торрентик какой, а то проблемы все из-за нее

Visual C++ 2010 Express с офсайта майкрософт. Адаптируешь сорцы под новую версию компилятора (обычную халфу не трудно, насчёт ксашмода не знаю, если уж ксашдвижок VS 2015 собирает, то мод-то и подавно новые студии соберут) и больше не паришься насчёт совместимости. Кстати, мод не настолько критично собирать другим компилятором, в отличие от движка. Хотя бы потому, что игровые библиотеки проще устроены. Главное правильно собрать, чтобы лишних зависимостей не было.
Цитата:
SOZON писал:
Ну и подскажите где все коды связанные с оружием в каких файлах искать

Find in files используй. Ищи по класснейму. Например, оружие weapon_python, значит, надо искать по слову python.


Отправлено FiEctro 14-07-2017 в 15:45:

SOZON
Ось какая? 6я студия корректно работает только с XP и более ранними версиями. Начиная с 7ки, она годится разве что для поиска по файлам и компиляции


Отправлено SOZON 14-07-2017 в 16:14:

Цитата:
FiEctro писал:
SOZON
Ось какая? 6я студия корректно работает только с XP и более ранними версиями. Начиная с 7ки, она годится разве что для поиска по файлам и компиляции



Ось какая? xp какая. Подскажите годный visual studio торрентик какой, а то проблемы все из-за нее , Ну и подскажите где все коды связанные с оружием в каких файлах искать , а то чет урона то нету значит чето пропустил.


Отправлено XaeroX 14-07-2017 в 17:20:

Цитата:
Ku2zoff писал:
Адаптируешь сорцы под новую версию компилятора

Если обычная халфа, то вот:
http://hlfx.ru/pub/HL1_src_vs2005.zip

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено SOZON 15-07-2017 в 15:43:

Цитата:
Ku2zoff писал:
Visual C++ 2010 Express с офсайта майкрософт. Адаптируешь сорцы под новую версию компилятора (обычную халфу не трудно, насчёт ксашмода не знаю, если уж ксашдвижок VS 2015 собирает, то мод-то и подавно новые студии соберут) и больше не паришься насчёт совместимости. Кстати, мод не настолько критично собирать другим компилятором, в отличие от движка. Хотя бы потому, что игровые библиотеки проще устроены. Главное правильно собрать, чтобы лишних зависимостей не было.

Find in files используй. Ищи по класснейму. Например, оружие weapon_python, значит, надо искать по слову python.


Не , я вот имел ввиду ну к примеру начало типа делаешь свой файл weapon.cpp(пример типа), потом идешь в weapons.h там декларируешь этот weapon итд. Вот я и хочу спросит можно полный список файлов где есть упоминание об оружии и это нужно, чтобы оружие стабильно работало вот.вообщем мне нужен полный список этих файлов , а то я искал вручную и видимо чето не накодил.


А на счет vs 2015 у меня был я не разобрался какие компиляторы мне там нужны ? Если я делаю сингл, и буду скорее всего только использовать server и client библиотеку. И еще вопросик есть у кого уже адаптированные под vs 2015 студию библиотеки эти? имею ввиду dsp проекты и dsw. c cpp файлами.

Просто я как делал когда пересобирал: 1) открывал файл dsp правил строчки связанные с расположением файлов проекта. 2) Настраивал старенькую студию под XP win 32 под компиляцию, для этого на диске разместил прямо vc98 компиляторы со всем, ну и дирректории поправил все компилит все работает, но эти баги с визуалкой это просто . И вопрос такой если напишете сам собирай , то как правильно это сделать?


Отправлено Ku2zoff 15-07-2017 в 17:01:

Цитата:
SOZON писал:
Не , я вот имел ввиду ну к примеру начало типа делаешь свой файл weapon.cpp(пример типа), потом идешь в weapons.h там декларируешь этот weapon итд. Вот я и хочу спросит можно полный список файлов где есть упоминание об оружии и это нужно, чтобы оружие стабильно работало вот.вообщем мне нужен полный список этих файлов , а то я искал вручную и видимо чето не накодил.

Плохо искал. Если вкратце, то weapons.cpp, weapons.h, world.cpp, player.cpp, ev_hldm.cpp, ev_hldm.h, hl_events.cpp, hl_weapons.cpp, view.cpp. В этих файлах есть код, относящийся к оружиям. Только не для всех оружий есть во всех этих файлах.
Цитата:
SOZON писал:
А на счет vs 2015 у меня был я не разобрался какие компиляторы мне там нужны ?

Те же, что и в VS 6.0: cl.exe и link.exe. Первый обрабатывает исходные файлы в промежуточные, второй собирает либы и приложения из промежуточных.
Цитата:
SOZON писал:
И еще вопросик есть у кого уже адаптированные под vs 2015 студию библиотеки эти? имею ввиду dsp проекты и dsw. c cpp файлами.

Ксер выше ссылку дал на HLSDK 2.3, адаптированный под VS 2005. А следовательно, и под более новые версии. Там могут понадобиться кое-какие мелкие правки под 2013 и новее, но 99% уже сделано. Ксашмод тебе придётся править самому по аналогии с СДК по ссылке.
Цитата:
SOZON писал:
но эти баги с визуалкой это просто

Я никак не могу понять, что у вас, товарищи, за проблемы с шестой студией в новых виндах. Она у меня всегда прекрасно работала в седьмой винде (и в десятке наверное тоже заведётся), даже 64х битной. И редактор, и компиляторы. Больше для халфы ничего и не надо. Более новые студии наоборот - не хотят нормально ставиться и работать, потому что активно используют дотнет, а с ним вообще капец в плане совместимости бывает. Вот, например, сейчас пользуюсь 2013 с 3 обновлением, ставил на 10 винду с бубном и матами. С 4 и 5 обновлениями, или же VS Community, или VS 2015 ставятся норм, но занимают по 15 гб вместо 3.5, а у меня SSD всего на 60. Вот и приходится терпеть.
Цитата:
SOZON писал:
И вопрос такой если напишете сам собирай , то как правильно это сделать?

Поглядеть уже адаптированные сорцы, сравнить WinDiff'ом с неадаптированными, и сделать аналогичные изменения в ксашмоде.


Отправлено Crystallize 15-07-2017 в 17:15:

Цитата:
Ku2zoff писал:
Я никак не могу понять, что у вас, товарищи, за проблемы с шестой студией в новых виндах.

Вылетает при открытии проекта, кажется. Вот у тебя какая материнка?


Отправлено Ku2zoff 15-07-2017 в 17:33:

Crystallize Gigabyte GA-970A-DS3. Проц FX8350, видяха GTX 760. А что, в драйверах дело? Странно.


Отправлено SOZON 15-07-2017 в 18:03:

Цитата:
Crystallize писал:
Вылетает при открытии проекта, кажется. Вот у тебя какая материнка?

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


Отправлено Crystallize 15-07-2017 в 21:21:

Ku2zoff ну например я полтора года пытался ломать тфлекс по инструкции, и пришёл к выводу что это материнка виновата в том что на более старые компы даже с семеркой кряк ставится с полпинка, а на новых приходится проходить многоступенчатый ритуал. (всё интел) Хром 49 вон тоже даёт BSOD только на Асусах.


Отправлено Ku2zoff 16-07-2017 в 13:46:

Цитата:
Crystallize писал:
(всё интел)

А, собсно, в чём прикол интела? В том, что он дороже при такой же производительности? Да, у АМД не было шустых решений до выхода Райзена, но Райзен-то получился отнюдь не дешёвым, по сравнению с той же FX серией.
Цитата:
Crystallize писал:
пришёл к выводу что это материнка виновата

Не материнка, а авторы софта и майкрософт. Если у них там где-то корявый код, который чувствителен к железу - это проблема не железа, а того, кто писал этот код.

Добавлено 16-07-2017 в 20:46:

Магазины для оружия дописал, научил их сохраняться. Немного потестирую и напишу тутор, если кому интересно.


Отправлено Дядя Миша 16-07-2017 в 14:17:

Цитата:
Ku2zoff писал:
Если у них там где-то корявый код, который чувствителен к железу

Или из железа что-то повыкинули, угу. Сейчас уже ничему удивляться не приходится.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SOZON 16-07-2017 в 20:27:

Так стоп, если у меня fx amd не помню ток какой линейки, то какие могуть быть траблы? И чего все так хейтять amd линейку?


Отправлено Crystallize 17-07-2017 в 01:32:

Цитата:
Ku2zoff писал:
А, собсно, в чём прикол интела? В том, что он дороже при такой же производительности? Да, у АМД не было шустых решений до выхода Райзена, но Райзен-то получился отнюдь не дешёвым, по сравнению с той же FX серией.

Не знаю, не я заказываю комплектующие.


Отправлено Crystallize 17-07-2017 в 09:20:

Из-за чего может не работать параметр _ambient у light_environment? Я уже даже на карте-коробке проверял. Обычное солнце работает.


Отправлено SOZON 17-07-2017 в 11:20:

настройка компиляторов.Тока поставил 2010.

такой еще вопросик можно скрин по настройке компиляторов? получается проект)каталоги vc++) (просто интерфейс русский блин слегка так непонятно), дирректории link.exe и cl.exe я нашел. А то так попробовал сейчас в стоке компильнуть кучу проблем вылезло, хотя вроде все правильно сделано. стандартный проект ничего не заменено и.т.д под X64 поставил собираться. То есть я правильно понял ярлык можно в режиме совместимости вообще запускать , а вот библиотеки можно X64 сделать? Да и ничего такого интересно в exe нету , что интересовало бы в самой игре. И чего также dsp открывать в открыть проект ?


Отправлено Ku2zoff 18-07-2017 в 08:04:

Цитата:
SOZON писал:
просто интерфейс русский блин слегка так непонятно

Русский в вижуал студио - от лукавого. Я всегда английскую версию ставлю.
Цитата:
SOZON писал:
можно скрин по настройке компиляторов?

Ничего не надо трогать в путях и настройках самой студии, а то изломаешь нафиг. Создаёшь новый солюшен, импортируешь в него .dsp файлы клиента и сервера, они конвертятся в .vcproj. Возьми, и сравни свои переконвертированные проекты с готовыми от Valve, из SDK на гитхабе, исправь и добавь в свойствах своих проектов что надо.
Цитата:
SOZON писал:
А то так попробовал сейчас в стоке компильнуть кучу проблем вылезло

Неоднократно уже говорилось о том, что для компиляции HLSDK новыми версиями студии, код нужно привести в соответствие со стандартами С++, которые 6-ая студия игнорирует. Берёшь WinDiff и сравниваешь оригинальный HLSDK 2.3 с адаптированным под VS 2005 от XaeroX'a. Изменения, аналогичные правленному СДК делаешь в своих сорцах. От силы час работы.
Цитата:
SOZON писал:
а вот библиотеки можно X64 сделать?

Можно. А движок у тебя x64? Сомневаюсь. Когда соберёшь ксашдвижок под x64, тогда понадобятся x64 библиотеки.
Цитата:
SOZON писал:
И чего также dsp открывать в открыть проект ?

Правый клик по солюшену в солюшен эксплорере->добавить->существующий проект. Откроется обозреватель, можно будет импортировать .dsp


Отправлено Дядя Миша 18-07-2017 в 17:46:

Цитата:
Ku2zoff писал:
код нужно привести в соответствие со стандартами С++, которые 6-ая студия игнорирует

Можно поподробнее? Это какие же стандарты игнорирует шестая студия?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 18-07-2017 в 17:52:

Цитата:
Дядя Миша писал:
Это какие же стандарты игнорирует шестая студия?

Абсолютно все. Первый стандарт приняли в 1998 году и дополнили в 2003-м.
Я вообще не понимаю, как в 2017 году можно компилировать шестой студией. Вы ещё на фортране-77 писать движок начните.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено SOZON 18-07-2017 в 18:43:

Можно ссылки.

Цитата:
Ku2zoff писал:
Русский в вижуал студио - от лукавого. Я всегда английскую версию ставлю.

с готовыми от Valve, из SDK на гитхабе, исправь и добавь в свойствах своих проектов что надо.

с адаптированным под VS 2005 от XaeroX'a. Изменения, аналогичные правленному СДК делаешь в своих сорцах. От силы час работы.




Итак вопросики где это все можно скачать и найти? А то я пока найду , а вдруг не то! или еще чего-нибудь....
И чего прям ни у кого нет этих самых стандартных под новую студию проектов?
WinDiff'ом сравни, от силы час работы... АГА и как именно вручную в HEX все выправлять , что-ли по этим сравнениям , явно не час работы.... Пока изучу вопрос пройдет какое то n-ое время, на изучение данного вопроса. Если , типа говорите , что сами server и client легко компилятся, И чего ни у кого движка нету под х64? скомпилированного собранного? Кароче не знаю , гемморойно будет.


Отправлено Ku2zoff 18-07-2017 в 19:03:

Цитата:
SOZON писал:
Итак вопросики где это все можно скачать и найти? А то я пока найду , а вдруг не то! или еще чего-нибудь....

Цитата:
SOZON писал:
Ku2zoff писал:
Русский в вижуал студио - от лукавого. Я всегда английскую версию ставлю.

Это придётся поискать, но найти реально. Гугл в помощь. ISO файлы на торрентах, в крайнем случае. Если найдёшь веб-установщик, там не более гигабайта в общей сложности качать.
Цитата:
SOZON писал:
с готовыми от Valve, из SDK на гитхабе

https://github.com/valvesoftware/halflife
Цитата:
SOZON писал:
с адаптированным под VS 2005 от XaeroX'a.

Закреплённая ссылка (самая первая) в форуме Half-Life SDK. Уже больше 5ти лет точно висит, на радость всяким ленивым жопам.


Отправлено SOZON 19-07-2017 в 09:27:

Цитата:
Ku2zoff писал:
[B]Это придётся поискать, но найти реально. Гугл в помощь. ISO файлы на торрентах, в крайнем случае. Если найдёшь веб-установщик, там не более гигабайта в общей сложности качать.


Дак какую версию искать 10 или 15?


Отправлено Ku2zoff 19-07-2017 в 10:28:

SOZON какую хочешь. Я тебе сейчас просто опишу плюсы и минусы (на мой взгляд).
2010:
+малый вес (что-то около 900 Мб или даже меньше)
+не очень требовательна к железу
+только C++ и никаких сирешоток с бейсиками и жабарешотками
+актуальна до сих пор
-не может конвертировать проекты, т.к. Express-версия
-требуется адаптация HLSDK под новые компиляторы
-некоторые проекты (паработ в частности) крэшатся из-за какого-то внутреннего бага в либах STL
-подсветка синтаксиса всё равно хуже, чем в 2013

2013:
+блатная подсветка синтаксиса
+автодополнение и подсказки (в 2010 вроде чего-то немного не хватает в этих функциях)
+более приятный интерфейс
+поисправлены некоторые баги относительно 2010
-требовательна к железу
-большой вес (от 4 до 12 гб в зависимости от версии апдейта)
-адаптировать HLSDK надо ещё больше, чем к 2010
-на 10 винду ставится с бубном

2015 и 2017:
+поисправлены баги, лучшее соответствие стандартам
+интерфейс покрасивше и поудобней местами
-огромный вес (15+ гб)
-требовательны к железу
-адаптировать HLSDK, возможно, надо ещё больше
-нафик не надо ставить ради HLSDK, который прекрасно собирается 2013 версией

Не, ну будь у меня SSD на 200+ гигов, я б конечно поставил параллельно с 2013 ещё 2017 или 2015 ради интереса.

Добавлено 19-07-2017 в 17:28:

Вообще, я очень долго пользовался версией .NET 2003 (7.1), когда все сидели на шестёрке. Для меня она была самой удобной до перехода на 2013.


Отправлено SOZON 19-07-2017 в 12:06:

Цитата:
Ku2zoff писал:
SOZON какую хочешь. Я тебе сейчас просто опишу плюсы и минусы (на мой взгляд).
2010:
+малый вес (что-то около 900 Мб или даже меньше)
+не очень требовательна к железу
+только C++ и никаких сирешоток с бейсиками и жабарешотками
+актуальна до сих пор
-не может конвертировать проекты, т.к. Express-версия
-требуется адаптация HLSDK под новые компиляторы
-некоторые проекты (паработ в частности) крэшатся из-за какого-то внутреннего бага в либах STL
-подсветка синтаксиса всё равно хуже, чем в 2013

2013:
+блатная подсветка синтаксиса
+автодополнение и подсказки (в 2010 вроде чего-то немного не хватает в этих функциях)
+более приятный интерфейс
+поисправлены некоторые баги относительно 2010
-требовательна к железу
-большой вес (от 4 до 12 гб в зависимости от версии апдейта)
-адаптировать HLSDK надо ещё больше, чем к 2010
-на 10 винду ставится с бубном

2015 и 2017:
+поисправлены баги, лучшее соответствие стандартам
+интерфейс покрасивше и поудобней местами
-огромный вес (15+ гб)
-требовательны к железу
-адаптировать HLSDK, возможно, надо ещё больше
-нафик не надо ставить ради HLSDK, который прекрасно собирается 2013 версией

Не, ну будь у меня SSD на 200+ гигов, я б конечно поставил параллельно с 2013 ещё 2017 или 2015 ради интереса.

Добавлено 19-07-2017 в 17:28:

Вообще, я очень долго пользовался версией .NET 2003 (7.1), когда все сидели на шестёрке. Для меня она была самой удобной до перехода на 2013.


я сегодня винт на 1 тб купил старый 200гб еле справлялся с инфой. Всякие кады и прочее...все весят много
Кароче поставлю 13 или 15 и не парюсь.


Отправлено XaeroX 19-07-2017 в 12:43:

SOZON
Не цитируй, пожалуйста, весь пост в ответе. Оставляй в цитате только нужное.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 19-07-2017 в 13:26:

Ku2zoff я тебе там вопрос задал. Ты не видел?
Какие стандарты игнорирует шестая студия?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 19-07-2017 в 19:29:

Дядя Миша современные. Если некоторые проекты, изначально написанные в шестой студии, не собираются другими компиляторами без предварительной правки, значит, что-то в ней не так. Это не значит, что шестёрку надо выкинуть, нет. Она не для всех задач подходит. Например, современное кросплатформенное приложение в ней разрабатывать - не самая лучшая идея. Для этих целей можно сразу использовать GCC, которая чувствительна к тысяче мелочей, т.к. линуксоиды помешаны на соответствии стандартам. Поэтому, наверное, линукс так плохо совместим между собой от версии к версии. Тут, как говорится, каждая лягушка хвалит своё болото. Не важна среда разработки и компилятор, важен конечный результат.


Отправлено Дядя Миша 19-07-2017 в 19:58:

Цитата:
XaeroX писал:
Первый стандарт приняли в 1998 году и дополнили в 2003-м.

То есть страутруп изобрёл язык в 1981-м году, а стандарт приняли в 98-м?
Я правильно понимаю? А до этого там писали абсолютно всякое, любые ключевые слова, любые операторы и это как-то компилировалось и даже работало?
Ну в таком случае стандарты явно не пошли языку на пользу, т.к. качество софта начало резко ухудшаться Вот как раз после 98-го года.

Цитата:
XaeroX писал:
Я вообще не понимаю, как в 2017 году можно компилировать шестой студией

А представляешь кто-то ездит на машине 89-го года выпуска или живёт в доме, построенном в 1971-м году. Вот как так?

Цитата:
Ku2zoff писал:
Если некоторые проекты, изначально написанные в шестой студии, не собираются другими компиляторами без предварительной правки, значит, что-то в ней не так

Скорее уж не так в тех новых компиляторах. У шестёрки есть ровно один общепризнанный баг - выпадение видимости переменной, объявленной внутри цикла за его пределы. Иными словами, студия считает, что если что-то было объявлено в строке for, то это объявлено вне тела цикла. В принципе это не баг, технически так оно на самом деле и есть - невозможно инкременировать переменную, объявленную внутри тела цикла для проверки условия на выход из тела цикла. Разве что статическую объявить или выделить память деномически. Таким образом все более свежие компиляторы делают это хаком, ради соответствия каким-то стандартам, еще неизвестно кем принятым. Всё остальное, что было добавлено в язык - говно и ненужно. Язык должен быть простым и острым как бритва. Да что там говорить. Соберите одну и ту же программу шестёркой и новой студией. То, что собрано шестёркой будет работать минимум в два раза быстрее. Вот вам и новомодные студии, вот вам и оптимизации. Щас уже не осталось нормальных компетентных людей, любой умник, который лепит виджеты на скриптах уже гордо именует себя пограмистом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ***FantoM*** 19-07-2017 в 20:38:

После компиляции .qc в studiomdl, удаляются ненужны кости.
Как отключить эту фичу?


Отправлено Дядя Миша 19-07-2017 в 20:43:

***FantoM*** компилировать с параметром командной строки -b

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено KiQ 19-07-2017 в 23:18:

Цитата:
Дядя Миша писал:
А представляешь кто-то ездит на машине 89-го года

Ая вот всё мечтаю о ГАЗ-24.

__________________
-Brain is dead-


Отправлено XaeroX 20-07-2017 в 01:58:

Цитата:
Дядя Миша писал:
То есть страутруп изобрёл язык в 1981-м году, а стандарт приняли в 98-м?

Верно.
Цитата:
Дядя Миша писал:
А до этого там писали абсолютно всякое, любые ключевые слова, любые операторы и это как-то компилировалось и даже работало?

Да, могли не поддерживать какие-то ключевые слова, реализовывать их как им вздумается - тогда по сути весь язык был implementation-specific.
Цитата:
Дядя Миша писал:
качество софта начало резко ухудшаться Вот как раз после 98-го года.

Если это и так - то явно по другим причинам.
Цитата:
Дядя Миша писал:
А представляешь кто-то ездит на машине 89-го года выпуска или живёт в доме, построенном в 1971-м году. Вот как так?

В домах периодически делается капремонт. Вот и новая студия - это как старая с капремонтом. А ты, грубо говоря, живёшь в доме, где все перекрытия в трещинах. Он, может быть, ещё и простоит несколько лет - но оно как минимум визуально неприятно.
Цитата:
Дядя Миша писал:
У шестёрки есть ровно один общепризнанный баг - выпадение видимости переменной, объявленной внутри цикла за его пределы. Иными словами, студия считает, что если что-то было объявлено в строке for, то это объявлено вне тела цикла. В принципе это не баг, технически так оно на самом деле и есть - невозможно инкременировать переменную, объявленную внутри тела цикла для проверки условия на выход из тела цикла. Разве что статическую объявить или выделить память деномически. Таким образом все более свежие компиляторы делают это хаком, ради соответствия каким-то стандартам, еще неизвестно кем принятым.

У тебя любопытные представления об области видимости.
В шестёрке это действительно не баг - это достандартное поведение.
Цитата:
Дядя Миша писал:
То, что собрано шестёркой будет работать минимум в два раза быстрее.

Пруфы будут?
Цитата:
Дядя Миша писал:
Щас уже не осталось нормальных компетентных людей

Выпил - на форум не пиши(С)

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ***FantoM*** 20-07-2017 в 01:59:

Дядя Миша
Где можно посмотреть описани всех параметров Mdlкомпилятора?


Отправлено Ku2zoff 20-07-2017 в 03:08:

Цитата:
Дядя Миша писал:
качество софта начало резко ухудшаться Вот как раз после 98-го года.

Не согласен. Качество софта начало ухудшаться где-то года с 2005-го. Когда в моду окончательно вошёл дотнет. Приложения стали тяжеловесными и тормозными. Это на винде. Линуксы (которые десктопные), такая ситуация настигла где-то в 2011 году, с выходом GNOME 3 и QT5, а также появлением Юнити в бубунтах. С того момента многие гуйные приложения в самых основных средах рабочего стола стали попахивать говнецом.
Цитата:
Дядя Миша писал:
Всё остальное, что было добавлено в язык - говно и ненужно. Язык должен быть простым и острым как бритва.

Тащем-то он таким и остался. Сверху навесили новомодных либ и всякого, чтобы можно было быстро, не заморачиваясь, клепать визуальные интерфейсы и взаимодействовать с устройствами и интернетом. Вон, видал я рекламу какого-то кастомного инструмента для студии, который позволяет... РИСОВАТЬ код. Ну то есть заранее подготовленные блоки втыкать в нужное место файла, проведя мышкой. Здесь всё зависит от того, кто на языке пишет. Можно и в шестёрке наворотить такого, что приложение будет лагать. А можно написать быструю консольную утилиту в 2017 студии. Помнится, ты сетовал на то, что Xash3D FWGS потерял в производительности и компактности в связи со сменой компилятора. Мне кажется, потерял он больше потому, что там наворотили всякого ненужного для кроссплатформенности.
Вообще, надо обычный ксаш портировать на линукс и макось, и будет круто. А все эти андроиды и прочие мобилки забыть как страшный сон.


Отправлено FiEctro 20-07-2017 в 07:18:

Какое отношение либы имеют к языку? Студия это вообще IDE, как из-за неё программа будет работать медленнее или быстрее?


Отправлено Ku2zoff 20-07-2017 в 07:50:

FiEctro я к этому и веду. Кому-то расширения языка и новые тулкиты нужны и полезны (тем, кто создаёт приложения для массового рынка, часто кроссплатформенные), а кому-то они нафиг не упали (например, Дяде Мише, у которого движок на сях написан, и вообще он в консольные утилиты любит, а не в гуй).
А уж чем собирать - без разницы. Спор-то у нас идёт о стандартах, а не о расширениях языка. Если ксаш не собирается 2010-17 студией без дополнительных правок - это признак того, что правила написания кода для новых компиляторов более строгие, чем в шестёрке. Ну и ещё хедеры и либы могут быть с изменениями, а кое-что deprecated (кажется правильное слово), может быть вообще выкинуто в новых версиях.
Ничего, доживём до того момента, когда x86 станет deprecated. Вот тогда точно придётся переехать на 2010 студию, т.к. более ранние не умеют собирать в x64.

Добавлено 20-07-2017 в 14:50:

Сейчас Дядя Миша снова какой-нибудь аргумент приведёт в пользу шестёрки, я уверен. Я про остроту и простоту языка заранее в ответ на него скажу: HLSDK, адаптированный под новые студии, отлично собирается в шестёрке. О чём это говорит? Правильно, о правилах написания кода, которые не соблюдались в шестёрке.
Ещё раз повторю, каждому своё, всё зависит от конечной цели. Если ксаш собирается шестёркой без проблем, то и менять ничего не нужно. Будет. Ровно до той поры, пока не возникнет необходимость. Например, портирование куда-нибудь.


Отправлено XaeroX 20-07-2017 в 09:54:

FiEctro
Под студией обычно подразумевают также её родной компилятор.
В отличие от многих других IDE, в микрософтовской так просто его не поменяешь. Только в 2015 (емнип) появился выбор между CL и Clang, да и там последний несколько специфичный и заточенный под студию (например, параметры командной строки).

Добавлено 20-07-2017 в 16:51:

Цитата:
Ku2zoff писал:
то признак того, что правила написания кода для новых компиляторов более строгие, чем в шестёрке

Не строгие, а более соответствующие официально принятому стандарту языка. Хотя у микрософтовских компиляторов с этим традиционно проблемы. Хотите "нормальный" С++ юзать - добро пожаловать в мир gcc и clang. Но в принципе, писать кросс-компилирующийся код не так уж сложно, например, та же волатила компилится и cl, и gcc/mingw, и clang.

Добавлено 20-07-2017 в 16:54:

Цитата:
Ku2zoff писал:
Если ксаш собирается шестёркой без проблем, то и менять ничего не нужно.

Вот кстати любопытно - а на новых виндах с софтом, собранным старым компилятором (и старыми версиями сопутствующих библиотек), проблем нет никаких?
После переезда на семёрку я потерял кучу старого любимого софта (и особенно игр), неизбежной миграции на десятку жду со страхом.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 20-07-2017 в 10:04:

Цитата:
XaeroX писал:
Вот кстати любопытно - а на новых виндах с софтом, собранным старым компилятором (и старыми версиями сопутствующих библиотек), проблем нет никаких?

Если софт написан грамотно, и не тянет каких-то специфичных зависимостей за собой (или либы прилинкованы статически) - зачастую всё работает стабильно. Вот тот же ксаш, например. Там зависимостей по минимуму. Работает во всех виндах от XP до 10, лишь бы драйвера на видео стояли. Проги-редакторы и утилиты для халфы нормально работают: PakScape, PakExplorer, Wally, компиляторы от зонера... Всё работает хорошо, кроме Jed's HLMV. В десятке, кстати, работает. x64.


Отправлено nemyax 20-07-2017 в 10:28:

Цитата:
XaeroX писал:
Вот кстати любопытно - а на новых виндах с софтом, собранным старым компилятором (и старыми версиями сопутствующих библиотек), проблем нет никаких?

Есть. Если очень повезёт, с ними справится режим совместимости.


Отправлено Crystallize 20-07-2017 в 10:36:

Цитата:
Ku2zoff писал:
[b]SOZON какую хочешь. Я тебе сейчас просто опишу плюсы и минусы (на мой взгляд).
2010:
+малый вес (что-то около 900 Мб или даже меньше)
+не очень требовательна к железу
+только C++ и никаких сирешоток с бейсиками и жабарешотками
+актуальна до сих пор
-не может конвертировать проекты, т.к. Express-версия
-требуется адаптация HLSDK под новые компиляторы
-некоторые проекты (паработ в частности) крэшатся из-за какого-то внутреннего бага в либах STL
-подсветка синтаксиса всё равно хуже, чем в 2013

Огромный двухгигабайтный монстр, который ставится около часа и запускается минут пять.


Отправлено Ku2zoff 20-07-2017 в 10:41:

Цитата:
nemyax писал:
Если очень повезёт, с ними справится режим совместимости.

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


Отправлено nemyax 20-07-2017 в 10:52:

Цитата:
Ku2zoff писал:
дело не в совместимости с версией винды, а в совместимости с драйверами и какими-то либами, которые не ставятся в эту версию винды

Возможно. Например, Deus Ex на десятке с невидией без режима совместимости отказывается определять разрешения экрана. А в режиме совместимости он их находит, но не регулирует яркость. Форменный бардак карочы.


Отправлено XaeroX 20-07-2017 в 12:36:

Цитата:
Crystallize писал:
Огромный двухгигабайтный монстр

Ты хотел сказать - маленький двухгигабайтный монтришко?
2015-я студия жрёт 20 гигов, а сколько жрёт 2017-я - представить страшно.
Но это не повод откладывать переезд, HDD сейчас совершенно не дорогие.
Джек вон тоже потяжелее хаммера весит, и что теперь, сидеть на последнем, где почти никаких фич нет?
Цитата:
nemyax писал:
Deus Ex на десятке с невидией без режима совместимости отказывается определять разрешения экрана
Ты обновлённые рендеры ставил?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Crystallize 20-07-2017 в 14:00:

Цитата:
XaeroX писал:
Ты хотел сказать - маленький двухгигабайтный монтришко?
2015-я студия жрёт 20 гигов, а сколько жрёт 2017-я - представить страшно.

Мам ну и что что я двойку получил, вон в Г-классах одни хулианы и тоже на двойки учатся.

Цитата:
XaeroX писал:
Но это не повод откладывать переезд, HDD сейчас совершенно не дорогие.

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

Цитата:
XaeroX писал:
Джек вон тоже потяжелее хаммера весит, и что теперь, сидеть на последнем, где почти никаких фич нет?

Я попробовал купленый стимовский Джек и ушёл обратно на 1064. Недавно понял что нубам как я которые ни одной карты не сделали, и Хаммер за глаза.


Отправлено XaeroX 20-07-2017 в 14:06:

Цитата:
Crystallize писал:
Мам ну и что что я двойку получил, вон в Г-классах одни хулианы и тоже на двойки учатся.

Зато эти хулиганы, когда вырастут, будут зарабатывать по 300-400 тысяч в месяц, а то и больше. А чем тебе помогут твои пятёрки?
Цитата:
Crystallize писал:
Недавно понял что нубам как я которые ни одной карты не сделали, и Хаммер за глаза.

Логично. Старой студии тоже за глаза тем, кто ни одной строчки кода не написал. Я бы даже поставил вопрос шире - зачем таким людям студии и хаммеры в принципе?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 20-07-2017 в 14:08:

Цитата:
XaeroX писал:
Верно.

То есть почти 20 лет на языке писали безо всякого стандарта, правильно понимаю? И всем было норм? И нет нашлась какая-то зараза, которая решила стандартизовать и всё испортила нахрен!

Цитата:
XaeroX писал:
Да, могли не поддерживать какие-то ключевые слова, реализовывать их как им вздумается

Становится всё интереснее. Т.е. Страуструп ничего сам не описал, так что ли? Помоему единственное слово, которое каждый реализовывал в меру своего разумения - это auto. Ну так его поэтому никто и не юзал. Есть еще какие-то примеры? Ты-то в теме можешь много интереснова порассказывать.

Цитата:
XaeroX писал:
Вот и новая студия - это как старая с капремонтом.

В наше время капремонт так делают, что уж лучше совсем без него - оно надежнее как-то.
Цитата:
XaeroX писал:
У тебя любопытные представления об области видимости.

В каком смысле? Область видимости - это чисто компиляторная заморочка. Как определят так и будет.
Цитата:
XaeroX писал:
Пруфы будут?

Я тебе неоднократно рассказывал про тот билд даркплейса, который был собран 2015-й студией и выдавал 655 фпс, а после его сборки шестёркой начал выдавать 1213 фпс. Ну до кучи и вес приложения уменьшился.

Цитата:
XaeroX писал:
Выпил - на форум не пиши(С)

Это моё субъективное мнение.

Цитата:
Ku2zoff писал:
Ничего, доживём до того момента, когда x86 станет deprecated

deprecated - это "не рекомендуется к использованию". Почему не рекомендуется, обычно не поясняют. К слову сказать, я имею сильные подозрения что x64 содержит еще больше слоёв совместимости, чем x86, т.к. ей надо потдерживать и x86 тоже, а тому в свою очередь - все слои культурного наследия, начиная с 1979-го года. Ну вот у меня щас 64-х битный проц, однако винда 32-х битная на ём стоит, икспишка и всё воркает, тьху-тьху. В реальности 64-х битные процессоры не дают каких-то особых преимуществ, они просто позволяют адресовать более 4 гигабайт оперативы без заморочек с указателями. То есть в обычной программе указатель ровно того же размера, что и int32. Это же поведение скопировали и в 64-х битных программах, просто для удобства.
В 16-битных, как мы помним были эти грёбанные заморочки c FAR-pointers.
Т.е. иными словами не было никаких РЕАЛЬНЫХ преимуществ от смены архитектуры. Механизм виртуальной адресации еще со времён первого пня имел шину в 48 бит и в дальнейшем её без проблем могли наращивать не затрагивая совместмость. Т.е. могли просто-напросто опять ввести FAR-pointers, но уже для тех приложений, которым РЕАЛЬНО НАДО БОЛЕЕ 4-х гигабайт. И все были бы довольны. Т.е. весь принудительный переход на 64-х битную архитектуру не более чем очередная ловкая найопка маркетологов. Типо 64 круче чем 32 и под это дело можно продать много новых процессоров. А в реальности оно не даёт каких-то преимуществ.
Ну там да, регисторов побольше чем в x86, за счёт чего побырее работает. Но я бы не назвал это какой-то прям отличительной особенностью 64-х битной архитектуры.
Цитата:
Ku2zoff писал:
Сейчас Дядя Миша снова какой-нибудь аргумент приведёт в пользу шестёрки, я уверен

Где я кого-то агитировал за переход на шестёрку?
Цитата:
XaeroX писал:
После переезда на семёрку я потерял кучу старого любимого софта (и особенно игр)

Ну и что же ты получил взамен? Можешь перечислить?

Добавлено 20-07-2017 в 17:08:

Цитата:
XaeroX писал:
Старой студии тоже за глаза тем, кто ни одной строчки кода не написал.

Я бы перефразировал. Те кто вставляют код после ретарна - не достойны новой студии фпринципе!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 20-07-2017 в 14:11:

Цитата:
Дядя Миша писал:
Помоему единственное слово, которое каждый реализовывал в меру своего разумения - это auto.

Auto до С++11 всегда значило одно и то же. После С++11 оно тоже значило одно и то же, просто другое.
Цитата:
Дядя Миша писал:
Есть еще какие-то примеры?

Например, экспорт шаблонов (ключевое слово export).
Цитата:
Дядя Миша писал:
Область видимости - это чисто компиляторная заморочка.

Нет, это понятие языка программирования.
Цитата:
Дядя Миша писал:
Я тебе неоднократно рассказывал про тот билд даркплейса, который был собран 2015-й студией и выдавал 655 фпс, а после его сборки шестёркой начал выдавать 1213 фпс. Ну до кучи и вес приложения уменьшился.

Это один такой случай, и надо разбираться, в чём именно там дело. Наверняка какие-то неверные настройки нового компилятора. У меня в 2010 студии тоже были проблемы с генерацией fpu-кода, решалось переходом на sse.
Цитата:
Дядя Миша писал:
Ну и что же ты получил взамен? Можешь перечислить?

Обновляемую ось и - самое главное! - рабочий эмулятор OpenGL ES, поэтому для компиляции и тестирования Android-рендера волатилы в первом приближении достаточно винды.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 20-07-2017 в 14:25:

Цитата:
XaeroX писал:
Например, экспорт шаблонов (ключевое слово export).

Шаблоны экспортировать можно? А нафига?

Цитата:
XaeroX писал:
Нет, это понятие языка программирования.

Ну я в первую очередь смотрю чем оно обусловлено - архитектурой процессора или некими совместными договорённостями о том или ином стандарте. В конце-концов, ведь язык это всего лишь промежуточное средство, а не самоцель.

Цитата:
XaeroX писал:
Наверняка какие-то неверные настройки нового компилятора

Я не спорю, может быть и так. Только вот кваку плющит, када её на SSE переводишь, сам знаешь не хуже меня. То есть взять и все функции переписать заново. НА РОВНОМ МЕСТЕ. Не получив ничего взамен. И кстати не факт, что будет быстрее воркать в конечном итоге. Классическая ситуация: не было забот - купили порося, а он украл трактор и свалил за рубеж, а вас обвинили в пособничестве мировому терроризму.

Цитата:
XaeroX писал:
Обновляемую ось и - самое главное! - рабочий эмулятор OpenGL ES

Обновляемая ось - это что такое? Это ось в которой после обновления чёта перестаёт работать? А с эмулятором GLES и вовсе проблемы не было - я распараллелил потоки этой работы на других людей. Ты вот хвастаешься что у тебя всё распараллелено на уровне ядер, а ведь надо - на уровне кадров!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 20-07-2017 в 14:34:

Цитата:
XaeroX писал:
Зато эти хулиганы, когда вырастут, будут зарабатывать по 300-400 тысяч в месяц, а то и больше. А чем тебе помогут твои пятёрки?

Хулиганы могут заработать такое только криминалом, стало быть их будут хейтить, а рано или поздно повяжут.

Цитата:
XaeroX писал:
Логично. Старой студии тоже за глаза тем, кто ни одной строчки кода не написал. Я бы даже поставил вопрос шире - зачем таким людям студии и хаммеры в принципе?

Чтобы появился смысл кодить в студии, нужно сначала научиться кодить в студии? Рекурсия?
Старые версии чтобы учиться.


Отправлено Ku2zoff 20-07-2017 в 14:35:

Цитата:
Дядя Миша писал:
Где я кого-то агитировал за переход на шестёрку?

Не агитировал, но упорно отстаивал свою точку зрения: почему собираешь ксаш именно шестёркой, когда кто-то на ксм негодовал по поводу того, что она устаревшая, и адаптировать ксаш под другие компиляторы в таком случае дольше, чем если бы ты собирал его 2010-й, напрмер. Кажется, было такое, или что-то в этом роде. Возможно, я что-то уже напутал, и было немного не так.


Отправлено XaeroX 20-07-2017 в 14:47:

Цитата:
Дядя Миша писал:
я распараллелил потоки этой работы на других людей.

Это тоже правильно, к этому надо стремиться. Но и самому что-то новое изучить тоже полезно.
Цитата:
Crystallize писал:
рано или поздно повяжут

Поздно - это может статься, уже после твоей смерти. И какая в этом твоя личная выгода?
Цитата:
Crystallize писал:
Старые версии чтобы учиться.

И чему ты хочешь научиться на старой версии? Тому, как бороться с багами старой версии? Очень ценное знание.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено a1batross 20-07-2017 в 15:03:

Мои пять копеек.

Шестёрка имеет только одно преимущество перед всеми другими студиями -- в качестве сишного рантайма софту собранному шестёркой нужен только MSVCRT.DLL, который во всех актуальных виндах есть из коробки.

Всем остальным студиям нужен MSVCRT определённой версии, который идёт всегда вместе с установщиком, а потом в системе ворох Microsoft Visual C++ 20xx Redistributable. Отсюда можно и надумать множество субъективных проблем с распространением, установкой и прочего.

Впрочем, если кто-то умеет делать так, чтобы новые штудии использовали MSVCRT.DLL доступный в системе, попрошу рассказать. Хотя не думаю, что это возможно касательно С++, но может возможно для Си.

Добавлено 20-07-2017 в 18:03:

XaeroX

Цитата:
XaeroX писал:
И чему ты хочешь научиться на старой версии? Тому, как бороться с багами старой версии? Очень ценное знание.

Как говорил один -- в новых студиях лучше автодополнение и поэтому люди ничему не учатся.


Отправлено Crystallize 20-07-2017 в 15:11:

Цитата:
XaeroX писал:
Поздно - это может статься, уже после твоей смерти. И какая в этом твоя личная выгода?

На душе спокойно? Ты советуешь стремиться к хорошей зарплате и через неё измерять свой успех в жизни. Это правильно, но у меня до сих пор мировоззрение "на машине=бандит" и низкая самооценка, что тут попишешь.

Добавлено 20-07-2017 в 22:11:

Цитата:
XaeroX писал:
И чему ты хочешь научиться на старой версии? Тому, как бороться с багами старой версии? Очень ценное знание.

Меня всё равно это интересует в контексте брашевого гейминга, т.е. учиться интереснее всего на сорцах Кваки и ХЛ, а значит нужно и понимать баги студии, в которой они писались.


Отправлено nemyax 20-07-2017 в 15:48:

Цитата:
Crystallize писал:
а значит нужно и понимать баги студии, в которой они писались

Странный вывод.


Отправлено Дядя Миша 20-07-2017 в 17:09:

Цитата:
XaeroX писал:
Тому, как бороться с багами старой версии?

Единственный баг шестёрки, который я ловил за все эти годы - однажды у меня вылезло Internal Compiler Error. Но воспроизвести я не смогу.

Цитата:
Crystallize писал:
но у меня до сих пор мировоззрение "на машине=бандит"

"на машине=фкредит"

ЗЫ, фортгамно

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 20-07-2017 в 18:04:

Цитата:
Дядя Миша писал:
Единственный баг шестёрки, который я ловил за все эти годы - однажды у меня вылезло Internal Compiler Error. Но воспроизвести я не смогу.

Это бывает если вставить код после ретарна.


Отправлено nemyax 20-07-2017 в 18:15:

В хаскеле всё время вставляют код после ретарна, и ничего.


Отправлено fl0wer 21-07-2017 в 00:38:

Как увеличить размер определенного игрока? Чтобы большая модель не была в земле.


Отправлено Ku2zoff 21-07-2017 в 03:03:

fl0wer заменить ему модель на такую, которая большая, и ориджин у неё смещён ниже. От ориджина до пола в стоячем положении должно быть 36 юнитов, в сидячем - 18. Но размеры игрока останутся прежними, а трейсинг весь съедет, если серверную модель не изменишь на увеличенную. Да даже если изменишь, не факт, что будет трейситься правильно.
Если ты хочешь сделать более-менее грамотно - сделай игрока по-умолчанию сидячим, чтобы у него юзался "сидячий" хулл. А когда увеличиваешь его - убирай флаг FL_DUCKING и меняй модель. Ещё придётся поменять размеры хуллов в дллке и использовать хуллфайл для компиляторов с новыми размерами (чтобы игрок стал не только в два раза выше, но и шире и длиннее). И самое печальное - игрок не сможет приседать, то есть будет как в первокваке, всегда в полный рост, и в два раза больше, если увеличен.
Короче, довольно сложно это. Можешь напороться на всякие подводные камни. Но если тебе надо только визуально, сделай по первому варианту.


Отправлено fl0wer 21-07-2017 в 12:10:

А как увеличить ориджин до пола? В pm_shared? Я увеличил модельку игрока в 4 раза. Вышло 144 юнита, попадает по нему всё ок, но моделька в полу.


Отправлено st1x51 21-07-2017 в 15:30:

Могу ошибаться,но нужно же еще размер задать,у вас это UTIL_SetSize вроде

__________________
//generated by Quake, do not modify
//I want QuakeC in XashNT
http://www.moddb.com/games/conscript


Отправлено Ku2zoff 21-07-2017 в 19:35:

Цитата:
fl0wer писал:
А как увеличить ориджин до пола?

Опустить его в qc файле, и пепекомпилить модель.


Отправлено fl0wer 22-07-2017 в 00:51:

Цитата:
Ku2zoff писал:
Опустить его в qc файле, и пепекомпилить модель.

А можно ли анимацию опустить по ориджину вниз в qc?


Отправлено Ku2zoff 22-07-2017 в 12:41:

Цитата:
fl0wer писал:
А можно ли анимацию опустить по ориджину вниз в qc?

Ну так-то да. Можно приписать параметр origin в конце строки, описывающей секвенцию.


Отправлено ncuxonaT 26-07-2017 в 18:12:

Я тут хотел попробовать свою запекалочку на картах из Жекиной Ареи 51, но возник казус при загрузке BSP. У некоторый фейсов какое-то запредельное число рёбер (nEdges) 10К-50К, такого быть просто не может. Но Ксаш и Паранойя грузят эти карты спокойно. Подскажите, где я мог ошибиться, при условии что обычные карты загружаются нормально? Загрузку BSP делал по этим спекам: http://hlbsp.sourceforge.net/index.php?content=bspdef


Отправлено Дядя Миша 26-07-2017 в 19:08:

ncuxonaT у Жэки в моде BSP31, осложнённые внутренним форматом HLFX 0.6b.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 26-07-2017 в 19:17:

Дядя Миша я понимаю, но ведь старый Ксаш открывает и не плюётся. 31 отличается чем-то от 30 помимо разрешения лайтмап?


Отправлено Дядя Миша 26-07-2017 в 19:23:

ncuxonaT ну есть жы сорцы движка в свободном доступе. Грузи карту, пихай туда алерт и смотри чего к чему.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 26-07-2017 в 19:36:

Дядя Миша это не путь самурая. Тем более что студии нет, пихать некуда. Я надеялся, что ты вспомнишь процесс загрузки геометрии карты.


Отправлено XaeroX 26-07-2017 в 19:49:

Не понимаю людей, которые читают какие-то спеки, когда под рукой есть код. Причём код довольно понятный.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ncuxonaT 27-07-2017 в 00:53:

XaeroX когда не рубишь в си, толку от кода немного

Добавлено 27-07-2017 в 03:53:

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


Отправлено Дядя Миша 27-07-2017 в 18:24:

ncuxonaT там спеки малость тово. Там все переменные объявлены как unsigned int, это неправильно. Там иногда бывает -1, например. А в твоём варианте - "запредельное число рёбер".

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 28-07-2017 в 00:14:

Дядя Миша не, проблема оказалось не в этом. Короче, я лох. Нужно было просто увеличить лимиты. Потому что я считывал в массивы фиксированного размера, не проверив, влезет ли. И в итоге одни массивы перезаписывали куски других.


Отправлено Дядя Миша 28-07-2017 в 13:03:

Цитата:
ncuxonaT писал:
Потому что я считывал в массивы фиксированного размера

Как бы мы об этом догадались? Ты ведь даже код не приводишь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено (_-=ZhekA=-_) 28-07-2017 в 13:49:

ncuxonaT
Интересно будет глянуть, что из этого получится

__________________
Kiss my ass if you don't like my Ford!
------------------------------------------
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.

http://button.moddb.com/download/medium/125531.png


Отправлено ncuxonaT 28-07-2017 в 14:43:

Дядя Миша так он на паскале, вы бы не стали разбираться. Я скорее спрашивал, нет ли каких-то изменений в формате записи фейсов, лумпов или типа того.
(_-=ZhekA=-_) да пока что ничего интересного. Но то, что у тебя 1000 лампочек на карте, это конечно.. странно. Не помнишь, сколько пеклось освещение на r0a2?


Отправлено (_-=ZhekA=-_) 28-07-2017 в 14:57:

ncuxonaT
А что странного то? r0a2 компилилась мин 7 не больше. На r2a2 в 2 раза больше лампочек )

__________________
Kiss my ass if you don't like my Ford!
------------------------------------------
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.

http://button.moddb.com/download/medium/125531.png


Отправлено XaeroX 28-07-2017 в 15:01:

ncuxonaT
Зачем ты пишешь на паскале? На дворе вроде ж не 1999-й год.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ncuxonaT 28-07-2017 в 15:15:

(_-=ZhekA=-_) не проще было сделать светящимися текстурами? Те же ступеньки.
XaeroX паскаль сила, паскаль мощь, паскаль кроссплатформенность. Главное что работает.


Отправлено (_-=ZhekA=-_) 28-07-2017 в 15:21:

Цитата:
ncuxonaT писал:
(_-=ZhekA=-_) не проще было сделать светящимися текстурами? Те же ступеньки.
XaeroX паскаль сила, паскаль мощь, паскаль кроссплатформенность. Главное что работает.

Где-то лучше использовать светящиеся текстуры, а где-то точечное освещение.

__________________
Kiss my ass if you don't like my Ford!
------------------------------------------
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.

http://button.moddb.com/download/medium/125531.png


Отправлено XaeroX 28-07-2017 в 15:28:

Цитата:
ncuxonaT писал:
паскаль сила, паскаль мощь, паскаль кроссплатформенность. Главное что работает.

Сало - сила, спорт - могила?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Crystallize 28-07-2017 в 16:49:

ncuxonaT char(rand(255))


Отправлено Дядя Миша 28-07-2017 в 17:52:

Цитата:
ncuxonaT писал:
паскаль сила, паскаль мощь, паскаль кроссплатформенность. Главное что работает.

Всех, кого ты ни спроси
Программируют на Си
И уже найдешь едва ли
Тех, кто пишет на Паскале!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SOZON 29-07-2017 в 08:57:

торрентик

дайте нормальный торрентик на visual , чтобы прям работоспособный,а то уже несколько сборок по 15 гб , скачал все запарывают со своими драйверами приложения некоторые потом не запускаются вообще 000000x5 вот такая ошибка вылазит и все. поэтому снес ее от греха пока. И сама прога заглючила запускаю можно только файл открыть нажать ни проект ничего не открывается... операционка win7


Отправлено Crystallize 29-07-2017 в 10:53:

кинул в лс


Отправлено Ku2zoff 04-08-2017 в 05:53:

Корочи, вопросец такой. Наверное поднимался мной и ещё кем-то в моей же теме-туторе про ноги игрока от первого лица. Пишу сюда, т.к. не понимаю, почему возникает нижеописанный баг. И таки выходит, что вопрос нубский.

Немного теории-предыстории:
CStudioModelRenderer::StudioDrawModel вызывается много раз за кадр для целой тучи моделей. Если в неё запихать рисование кастомной модели (даже не используя темпэнтить, а просто подменяя модель на манер p_моделей), и не обозначить условие когда рисовать, вместо всех моделей станет рисоваться кастомная. В случае с ногами игрока самым подходящим условием является проверка, что текущая модель - это вьюмодель:

C++ Source Code:
if (m_pCurrentEntity == gEngfuncs.pfnGetViewModel())

Работает это условие нормально, в первой версии тутора оно и используется. Но. Есть неприятный момент. На некоторых картах ноги рисуются ещё в другом месте, дублируются. Легче всего обнаружить их на карте cs_mansion4, они прям по центру карты будут бегать вверх-вниз. Что это такое? В чём причина дублирования? Так же я пробовал вызывать StudioDrawPlayer по аналогии с ксашевскими зеркалами. Результат тот же - дублирование. А вот если загнать кастомную модель в отдельный проход - полный порядок.

Поэтому я от такого способа отказался, и рисую модель ног из DrawNormalTriangles, посредством отдельной функции DrawCustomEntity, что используется в Паранойе для лицевого щитка. И здесь снова не всё гладко: ноги рисуются отлично и не дублируются, но на некоторых картах в некоторых местах становятся ярко освещёнными, будто к ним применяется r_fullbright 1. Что это может быть такое?


Отправлено Дядя Миша 04-08-2017 в 09:32:

Цитата:
Ku2zoff писал:
В случае с ногами игрока самым подходящим условием является проверка, что текущая модель - это вьюмодель

Извращенная логика. А когда нет оружия, то и ног не видно, по принципу нет ножек - нет мультиков?
Самым подходящим является вызов отрисовки модели игрока от третьего лица. В параное именно так и сделано и никаких проблем и вообще никакого дополнительного кода там не надо - уже и так всё необходимое установлено. Единственное условие - это вот как раз что рисовать, ноги или модель игрока. Как вы любите на пустом месте максимально усложнять себе задачу, а потом плакаться что оно не работает как должно. Там где хватает одной строчки по смыслу - городятся какие-то фабрики с менеджерами.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 04-08-2017 в 10:12:

Цитата:
Дядя Миша писал:
В параное именно так и сделано и никаких проблем и вообще никакого дополнительного кода там не надо - уже и так всё необходимое установлено.

В Паранойе 2.
Цитата:
Дядя Миша писал:
Самым подходящим является вызов отрисовки модели игрока от третьего лица.

StudioDrawPlayer, да. И откуда это вызывать, чтобы оно работало правильно? Вызывается по-умолчанию оно только движком, для локального игрока от 3-го лица и для нелокальных игроков в мультиплеере. Ну ещё из StudioDrawModel для дохлых игроков с особым условием. Дело в том, что для дохлых игроков есть энтить на сервере. Я пробовал создавать энтить для ног и рисовать её похожим способом. Что-то у меня тогда не получилось. Ладно, попробую ещё раз.


Отправлено Дядя Миша 04-08-2017 в 15:00:

Цитата:
Ku2zoff писал:
В Паранойе 2.

И всё, мозг отключился?
Цитата:
Ku2zoff писал:
Вызывается по-умолчанию оно только движком, для локального игрока от 3-го лица и для нелокальных игроков в мультиплеере.

Правильно. А откуда движок узнает, что надо рисовать модель от третьего лица? Правильно, об этом ему говорит клиентка. И сама камера от третьего лица в клиентке. Ну так и скажи движку, что надо рисовать модель от третьего лица, а камере скажи, чтоб не включалась, а вместо это модели рисуй ноги. Правда сложно догадаться?

Добавлено 04-08-2017 в 18:00:

Там единственный момент, вызывающий трудности - движок расхочет рисовать вьюмодель, но это легко обойти, т.к. вызов CL_IsThirdPerson не кэшируется в голдсорсе. Метода такая:
Где-нибудь, ну например в HUD_Frame ставим com_thirdperson = 1;
После того как модель игрока от третьего лица успешно добавлена в лист ( мы об этом узнаем в HUD_AddEntity), ставим com_thirdperson = 0. Движок теперь думает что мы рисуем от первого лица, но и модельку от третьего тоже добавили. А дальше в StudioDrawPlayer делаем просто проверку на com_thirdperson (мы же его сбросили в ноль), и если он равен нулю - рисуем ноги. Аналогично камера от третьего лица не включится, т.к. к моменту её активации com_thirdperson уже сброшен в ноль. Осталось только придумать как восстановить функциональность собственно thirdperson, но это не слишком сложная задачка, так что не буду разжёвывать.
В целом работы по добавлению ног - 8-10 минут. Модельку дольше делать ито.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 04-08-2017 в 18:15:

Цитата:
Дядя Миша писал:
Осталось только придумать как восстановить функциональность собственно thirdperson

А зачем? Оно всё равно только в дебаге работает, да почти нигде не юзается. Я только для тестирования анимаций игрока использую внешнюю камеру.
Вроде получилось неплохо. Осталось проверить, не пропадает ли модель оружия в руках у других игроков. Хотя, этот вот код только для локального игрока, и на них влиять не должен.


Отправлено Ku2zoff 05-08-2017 в 03:14:

Придумал. Нам же надо сообщить движку, что thirdperson включён, а потом сразу выключить, чтобы не исчезла вюмодель. При этом не включать камеру от третьего лица. Значит, нужно поменять условия функции CL_IsThirdPerson на такие, которые камеру не включат без команды thirdperson. И все проверки на CL_IsThirdPerson в клиентке (например в view.cpp), поменять на какую-нибудь свою, которая будет знать, включена камера или нет. До кучи добавить колоизацию камеры, чтобы она не проваливалась в стены.


Отправлено fl0wer 06-08-2017 в 00:15:

Как научить npc подниматься по лестнице?


Отправлено Ku2zoff 06-08-2017 в 06:21:

fl0wer либо сделать это скриптом, как в CS CZ: DS дельта снайпер залезает на башню, либо долго и упорно кодить. Ты наверное обратил внимание, что в ХЛ нет монстров с разными мувтипами? Ну то есть таких, которые сначала бегают, а потом летают, или ползают, а потом плавают. Из-за сложностей в реализации, либо из-за ненадобности. Так вот. Чтобы монстр лазил по лестнице, он должен иметь на этот момент MOVETYPE_FLY. Переключить мувтип несложно. Сложно сделать навигацию и код движения, чтобы монстр не тупил. И самое сложное - анимации.

Добавлено 06-08-2017 в 13:21:

Если хочешь, сначала стоит попробовать сделать чужих, которые могут лазать по стенам.

З.Ы. можно пойти извращенским путём, как мапперы Cube 2: Sauerbraten. В сойере нет вертикальных лестниц, поэтому вертикальные лестницы там - суть обычные лестницы, но с очень короткими ступеньками в 1 тамошний юнит. Игроку, чтобы залезть, достаточно.


Отправлено Дядя Миша 06-08-2017 в 09:59:

Цитата:
Ku2zoff писал:
Ну то есть таких, которые сначала бегают, а потом летают, или ползают, а потом плавают.

Это скорее для кваки характерно

Цитата:
Ku2zoff писал:
Сложно сделать навигацию и код движения

Боты же лазают по лестницам

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 17-08-2017 в 20:23:

1) Не могу понять, что делает функция UTIL_MakeVectors. Во-многих местах её видел. Но не могу понять, что именно она делает. Выделяет в памяти новые вектора? да вроде в отладчике ничего нового не высвечивалось и значение векторов не менялось. Например: UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle ); Что произойдет?
2) В чём отличие pev->angles от pev->v_angle? Хотя, примерно я понимаю, что v_angle (v_ от view) содержит угол обзора из самой камеры, но решил всё проверить какие значения они хранят. Оси Y-и вроде равны, а вот X-ы как-то немного отличаются, разница не существенная, но, просто пока из-за интереса, хотелось бы узнать в каких случаях что и как используется.
3) Есть ли отличие между записью UTIL_SetOrigin(pev, vecOrigin); и pev->origin=vecOrigin;? Или может я не до конца разобрался и для местонахождения сущности используется не только свойство origin.


Отправлено Дядя Миша 17-08-2017 в 20:50:

Цитата:
semerjon писал:
UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle ); Что произойдет?

Углы эйлера разложатся на три вектора
gpGlobals->v_forward
gpGlobals->v_right
gpGlobals->v_up
глобальные значения, потому что этот механизм остался от первокваки с её виртуальной машинкой.

Цитата:
semerjon писал:
В чём отличие pev->angles от pev->v_angle?

Оно только для игрока имеет значение. pev->v_angle хранит угол камеры на клиенте, pev->angles для игрока содержит почти тоже самое, но питч инвертирован и поделён на три. Долго объяснять зачем.

Цитата:
semerjon писал:
Есть ли отличие между записью UTIL_SetOrigin(pev, vecOrigin); и pev->origin=vecOrigin;

Есть. UTIL_SetOrigin, перелинковывает сущность в новый узел AABB-дерева, это используется для выбраковки видимости энтить на сервере, для быстрого нахождения энтить, сквозь которые проходит трасса, итд.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 21-08-2017 в 15:34:

1) Пожалуйста, можете скинуть инфу или рассказать про создание интерфейса меню. Например, в CS меню закупки, как отрисовывается затемнение экрана(понятно, что прямоугольный примитив, я имею ввиду функцию), как задаётся ширина и высота каждого пункта меню. Я как-то давно смотрел текстовые файлы CS, и какой-то из них как раз описывал пункты данного меню. Но, мне бы узнать как и что описать в самой программе.
2) Есть ли какая-либо документация по программированию для GoldSrc. Я уже на этом сайте где-то видел, что человек объединял гайды из сети в единый файл. Но, я имею ввиду наподобие https://developer.valvesoftware.com/wiki/SDK_Docs. Просто, пока что кое-какие свойства объектов не совсем понятны за что отвечают.


Отправлено Ku2zoff 21-08-2017 в 16:12:

semerjon качай тутор из аттача в этом посте.

Добавлено 21-08-2017 в 23:12:

Цитата:
semerjon писал:
Есть ли какая-либо документация по программированию для GoldSrc.

Это делал Тренсфер. Придётся поискать в интернете, т.к. ссылки давно сдохли. Рекомендую почитать Дядь Мишины статьи по квейк-движкам. А потом раздел туториалы на нашем форуме. А потом поискать туториалы на half-life.ru, wavelength.net. Ну и web.archive.org никто ещё не отменял. Там можно найти снимки collective.valve-erc.com, chatbear, planethalflife... Да много чего. Там есть ОЧЕНЬ древние давно забытые туторы. Вот что действительно надо восстановить и объединить в сборник.


Отправлено Crystallize 21-08-2017 в 16:33:

Ku2zoff По-моему все туторы из веб-архива и так доступны на Wavelength?


Отправлено Ku2zoff 21-08-2017 в 19:28:

Crystallize нет. Например, те, что были на valve-erc недоступны. И на planethalflife некоторые. Кое-где страницы живые ещё, но не полностью.


Отправлено Smykov 21-08-2017 в 23:32:

Ku2zoff Пожалуйста, помогите найти ещё статьи про сообщения и события. Автор про них упоминал в туторе.


Отправлено Ku2zoff 22-08-2017 в 02:23:

semerjon сообщения? Ну это наверное текст из titles.txt. Ничего сложного. Просто добавляешь свои строки туда, вот и всё. А про события в самом туторе написано, функция AddActionSignal. С помощью сигналов можно менять как переменные на клиенте, так и отправлять команды на сервер и клиент. И даже функции какие-либо вызывать.
Вообще, это единственный тутор по ВГУИ, который объясняет теорию, а не только показывает, как сделать на практике. Так что пробуй, делай.


Отправлено Smykov 22-08-2017 в 11:50:

Я не совсем понятно написал. В одном из абзацев написано:
"При нажатии на кнопку, как и задумано, панель со свистом закрывается, курсор исчезает, и мы можем бегать как обычно. Чтобы показать нашу панель опять, надо откуда-нибудь вызвать gViewPort->m_pMyPanel->setVisible(true), а затем UpdateCursorState. Откуда это вызывать - это, конечно, ваше дело. Можете создать мессадж или эвент, и при его приеме показывать панель (создание мессаджей и эвентов в этой статье не рассматривается)"
И я так понял у него есть статьи на эти темы. Возможно, там будет рассказано про то, как какой-либо клавише назначить процедуру открытия VGUI. А так, всё то что написано в статье про VGUI, всё ясно.


Отправлено Crystallize 22-08-2017 в 11:53:

Цитата:
Crystallize писал:
Я беру у Trigger_Camera его yaw и передаю мессагой на клиент, прибавляю его ко viewangles игрока. Таким образом, утрируя, W и S всегда двигают игрока по оси камеры. Однако при стрейфе мы не движемся по ровному кругу вокруг камеры, как должны бы, а быстро уходим прочь по спирали. Чтобы идти по кругу, нужно повернуться к камере на лишние примерно 20 градусов. Это тот самый предиктинг виноват? Просто у камеры стоит SetNextThink ( 0 ), так что не похоже. Я пробовал менять cl_lc, cl_lw, безрезультатно. Попытался прикрутить для сглаживания углов функцию V_SmoothInterpolateAngles ( ) которая во view.cpp, но я вроде кормлю ей такие же vec3_t, а она выдаёт ошибку преобразования типов.

Я попробовал по-дядемишиному сделать, отталкиваясь от v_origin камеры, получилось конечно проще, но в результате то же самое: для кругового движения вокруг камеры отклонение джойстика на 90 градусов должно иметь погрешность, и чем дальше игрок от камеры, тем меньше погрешность. Тут штука в том, что уходя вбок от следящей за ним камеры, игрок будет двигаться по идеальной окружности только в реальности, видимо, а в симуляции он движется по многоугольнику. Сколько там, 1000 отсчётов в секунду?


Отправлено Ku2zoff 22-08-2017 в 15:17:

Цитата:
semerjon писал:
И я так понял у него есть статьи на эти темы.

ЕМНИП, то нет. В данном контексте мессаджи - это User Messages, отправляемые с сервера на клиент. Поищи по проектам gmsgCurWeapon и MsgFunc_CurWeapon, например. Там, в принципе, всё расписано в комментариях в коде: как создавать эти мессаги на сервере, как их отправлять и как принимать на клиенте, можно узнать из кода оригинальных вальвоских библиотек. Единственные подводные камни для новичка - это типы сообщений (MSG_ONE, MSG_ALL) и размер мессаги в байтах. Я думаю, ты сможешь разобраться.
Эвенты - это предиктабельные (в случае с оружиями) аналоги пользовательских мессаг, но передающие в себе всегда фиксированный набор данных. Ищи по строчке PLAYBACK_EVENT_FULL на сервере и файлам .sc в папке events.


Отправлено Smykov 29-08-2017 в 16:35:

Есть какой-нибудь тутор по редактированию меню? Я так понял, его описывает файл menu.cpp, но что-то после пары поправочек, изменений не происходит.


Отправлено Ku2zoff 29-08-2017 в 18:02:

semerjon меню шлётся с сервера. В виде строк. А с клиента отправляются команды при выборе строки. Зачем что-то менять на клиенте, если все изменения идут с сервера? Опиши точнее, что ты хочешь сделать.
Касательно ВГУИ это не действует. Там менюшки строятся на клиенте. Можно конечно передавать с сервера что-то, вроде MOTD.TXT, но сами меню пишутся на клиенте.


Отправлено Smykov 29-08-2017 в 20:03:

Ku2zoff Я имел ввиду меню паузы(или, ещё проще, Главное меню), в котором содержатся пункты меню: Resume game; Create Server и прочее. А так просто, интересно, можно ли переоформить меню. Вместо пунктов меню, сделать что-то наподобие быстрой строки из DOS-овских программ. Там ещё писали F3 Open и т.д.


Отправлено Ku2zoff 30-08-2017 в 13:38:

semerjon в меню можно изменить только текст, фон и звуки. В вон-версии текст в виде большой BMP-картинки, фон тоже BMP + видеоролик в верхней части фона. В стим-версии текст находится в GameMenu.res, + можно поменять шрифт. Фон там в виде нескольких tga-картинок, есть специальная прога, которая нарезает готовое изображение на части и делает текстовик с масштабом под разные разрешения: BackgroundLayout.txt
Больше в халфе ты ничего сделать не сможешь. А вот в ксаше можно как угодно кастомизировать меню, т.к. его исходный код открыт.


Отправлено Cybermax 31-08-2017 в 01:26:

Ku2zoff а как насчет Cry of Fear?


Отправлено Ku2zoff 31-08-2017 в 07:10:

Cybermax там кастомный лаунчер, написанный на б-гмерзком дотнете, который по определённым адресам делает инъекции в движок, на манер AMXX.


Отправлено Crystallize 01-09-2017 в 01:48:

Как из input32.cpp получить доступ к viewentity->angle?


Отправлено Ku2zoff 01-09-2017 в 05:17:

Crystallize ну я думаю, что доступ можно получить только в view.cpp. А из инпута слать команды с помощью глобальных переменных. А что за надобность такая возникла?

Добавлено 01-09-2017 в 12:17:

Есть ли возможность активировать ScreenShake на клиенте? На сервере это пользовательское сообщение, а вот на клиенте нет ответки, она зашита в движок. Не хотелось бы тащить из ксаша код на клиент.


Отправлено Crystallize 01-09-2017 в 07:05:

Цитата:
Ku2zoff писал:
Crystallize ну я думаю, что доступ можно получить только в view.cpp. А из инпута слать команды с помощью глобальных переменных. А что за надобность такая возникла?

Мне нужно yaw камеры узнать, чтобы управлять игроком в её координатах, а не глобальных. За неумением камера пока что маппингом, а не thirdperson или ещё какая. Хотя наверное в этом и корень многих проблем.

Добавлено 01-09-2017 в 14:05:

Кстати для общего развития, почему доступ можно получить только из view.cpp? Это какой-то инклуд просто или что?


Отправлено Ku2zoff 01-09-2017 в 16:14:

Цитата:
Crystallize писал:
почему доступ можно получить только из view.cpp? Это какой-то инклуд просто или что?

ref_params_s. Вот. Их можно получить из V_CalcRefdef. ЕМНИП, это экспортная функция, которую хавает движок, засылая в неё ref_params_s. Но никто не мешает завести в классе CHud клиентскую энтитю, которая будет ссылкой на pparams->viewentity. Таким образом, ты сможешь получить доступ к ней во всей клиентке.

Добавлено 01-09-2017 в 23:14:

Корочи вот, в функции V_CalcRefdef можно сделать так:
C++ Source Code:
1
// override all previous settings if the viewent isn't the client
2
if ( pparams->viewentity > pparams->maxclients )
3
{
4
  cl_entity_t *viewentity;
5
  viewentity = gEngfuncs.GetEntityByIndex( pparams->viewentity );
6
  if ( viewentity )
7
  {
8
    VectorCopy( viewentity->origin, pparams->vieworg );
9
    VectorCopy( viewentity->angles, pparams->viewangles );
10
 
11
    // Store off overridden viewangles
12
    v_angles = pparams->viewangles;
13
 
14
    [color=red]gHUD.viewentity = viewentity;[/color]
15
  }
16
}


Отправлено Дядя Миша 01-09-2017 в 16:41:

А еще проще взять внешний указатель на весь ref_params_t

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 02-09-2017 в 15:58:

2Ku2zoffя дополнил структурки Chud но он говорит ошибка 2274 на твою строчку.
2Дядя Миша
В общем я понял, нужно GetEntityByIndex делать всегда. Поганый Си уводит не в том направлении, говорит непроинициализировано.

Зачем нужны структурные переменные, ну те которые в халфе оканчиваются на _t? Почему нельзя сразу обратиться к переменным из которых состоит сама структура blah_s?
Зачем вот этот "треугольник":

code:
struct blah_s {...} blah_t struct blah_s *lol *lol = &blah_t


Отправлено Дядя Миша 02-09-2017 в 21:57:

Цитата:
Crystallize писал:
Зачем вот этот "треугольник":

Сам выдумал - сам спросил. Еще и в последней строчке сделал фатальную ошибку.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Eternal12 03-09-2017 в 13:58:

Опытные пользователи подскажите, возможно ли реализовать регенерацию жизней игрока в hl sdk 3.2 либо есть тутор по созданию такой функции. Заранее спасибо.


Отправлено Crystallize 03-09-2017 в 14:05:

Цитата:
Дядя Миша писал:
Сам выдумал - сам спросил. Еще и в последней строчке сделал фатальную ошибку.

Звездочку забыл, да. А так, гляди:
http://www.c-cpp.ru/books/ispolzova...ey-na-strukturu
Как будто мы два раза помещаем в указатель адрес структуры, просто разными способами. Да и непонятно опятьже, зачем нужно отдельно имя структуры, а отдельно ещё какая-то ссылающаяся на неё переменная.

Кстати, у меня ни с того ни с сего вдруг ХЛ отказывается грузить скомпиленную клиентку. Что может не так быть?


Отправлено Ku2zoff 03-09-2017 в 14:31:

Eternal12 конечно можно. Вот небольшая тема по этому поводу, может быть поймёшь суть, если немного знаком с кодингом, или умеешь внимательно читать код Valve. Даю посказку где ещё можно подглядеть: ищи по pev->airtime в файле player.cpp. Там есть регенерация после выныривания из воды, когда игрок немного задохнулся.
Вот тут тутор для Сорса из Alien Swarm SDK. Скорее всего без всяких правок заработает в HL2, и с небольшими правками в HL1.

Добавлено 03-09-2017 в 21:31:

Цитата:
Crystallize писал:
Кстати, у меня ни с того ни с сего вдруг ХЛ отказывается грузить скомпиленную клиентку. Что может не так быть?

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


Отправлено Eternal12 03-09-2017 в 15:05:

Цитата:
Ku2zoff писал:
Eternal12 конечно можно. Вот небольшая тема по этому поводу, может быть поймёшь суть, если немного знаком с кодингом, или умеешь внимательно читать код Valve. Даю посказку где ещё можно подглядеть: ищи по pev->airtime в файле player.cpp. Там есть регенерация после выныривания из воды, когда игрок немного задохнулся.
Вот тут тутор для Сорса из Alien Swarm SDK. Скорее всего без всяких правок заработает в HL2, и с небольшими правками в HL1.

Добавлено 03-09-2017 в 21:31:


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

О точно попробую докапаться до сути через перебирания кода востановления после выныривания. Спасибо за подсказку.


Отправлено Дядя Миша 03-09-2017 в 15:54:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-09-2017 в 18:31:

Цитата:
Eternal12 писал:
попробую докапаться до сути через перебирания кода востановления после выныривания

Только учти, что механизм не совсем такой, как надо именно для регенерации. "Отдыхиваться" игрок начинает сразу после того, как игрок вынырнул. А нам надо, чтобы через n секунд он начал регенерировать. Заведи в классе игрока float, который будет становиться после каждого получения игроком урона равен gpGlobals->time + 10.0, например. А потом условие:
C++ Source Code:
if (m_flLastDamageTime < gpGlobals->time && pev->health < pev->max_health)
Ну и в этом условии прибавляй здоровье с определённым интервалом на определённое количество пунктов. Разместить это дело можно там же, где и реген после воды.

Добавлено 04-09-2017 в 01:31:

Вот ссылка на код из Alien Swarm SDK, я почему-то забыл её прикрепить в предыдущем сообщении.


Отправлено Crystallize 06-09-2017 в 16:00:

Цитата:
Ku2zoff писал:
Откати последние изменения в сорцах этой клиентки. Скорее всего порча или утечка памяти. Ну или пробуй дебажить.

У меня просто серверная дллка куда-то пропадала. о_О
А ругался почему-то на клиентку.


Отправлено Crystallize 07-09-2017 в 17:23:

К ошибке could not load library client.dll приводит глобальная переменная

code:
float purerange = 1-joy_yawthreshold->value;

Пока она локальная, всё нормально.


Отправлено Ku2zoff 13-09-2017 в 12:25:

Подскажите пож, как правильно сделать выключаемые текслайты для спирита? Для халфы трюк с функ_валл и лампочкой у меня получился. А в спирите лампочка не нужна, лайтстиль задаётся прям в коде функ_валла. Но чота не работает нифига. Использую джек и вхлт, что в комплекте с ним.
Может быть есть карта-пример именно для спирита? Для халфы я аж целых две нашёл, но это немного не то.

Добавлено 13-09-2017 в 19:25:

Цитата:
Crystallize писал:
глобальная переменная

Цитата:
Crystallize писал:
joy_yawthreshold->value

Глобальная переменная инициализируется раньше, чем регистрируется квар. Вот тебе и вылет. Попробуй вне тела функции определить её как float purerange = 0.0; чтобы на момент загрузки дллки движком у неё было значение. А уже истинное значение задавай в теле какой-нибудь функции.


Отправлено Luciferchik 13-09-2017 в 13:48:

Доброго времени суток форумчанам, возникла такая проблема с кодом смены рук в движке тринити не совсем понятно именно вот этот момент из кода

C++ Source Code:
1
/*
2
====================
3
StudioRenderFinal
4
 
5
====================
6
*/
7
void CStudioModelRenderer::StudioRenderFinal( void )
8
{
9
  StudioSetupRenderer( m_pCurrentEntity->curstate.rendermode );
10
  StudioSetChromeVectors();
11
 
12
  for (int i = 0; i < m_pStudioHeader->numbodyparts; i++)
13
  {
14
    StudioSetupModel(i);
15
    //------------------------Change hands right/left---------
16
    if(m_pCurrentEntity == gEngfuncs.GetViewModel() && (m_pCvarRighthand->value))  //-----------------------------------------------
17
      gEngfuncs.pTriAPI->CullFace( TRI_NONE );								  //Сюда ли пхать этот код или вовсе в другое место
18
    //--------------------------------------------------------                    так как в стоковом коде халвы этот кусок кода вовсе иной
19
    //а этот кусок представлен из тринити
20
    StudioDrawPoints();
21
    //----------------------------Change hands right/left-----
22
    if(m_pCurrentEntity == gEngfuncs.GetViewModel() && (m_pCvarRighthand->value))
23
      gEngfuncs.pTriAPI->CullFace( TRI_FRONT );
24
    //--------------------------------------------------------
25
  }
26
 
27
  StudioRestoreRenderer();
28
  StudioDrawDecals();
29
 
30
  // Restore this here, so decals won't mess up
31
  if(m_pCurrentEntity->curstate.rendermode != kRenderNormal
32
    && m_iEngineBinding != m_iCurrentBinding)
33
  glBindTexture(GL_TEXTURE_2D, m_iEngineBinding);

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Eternal12 14-09-2017 в 06:14:

Всех приветствую. Интересует как реализовать воскрешение монстров через определённое время. Не добавления новых точек спавна монстров а вот именно воскрешение .


Отправлено Ku2zoff 14-09-2017 в 08:00:

Eternal12 ты можешь спавнить их монстермейкером. Если нужно именно воскрешение, как у зонбе в кваке, тогда придётся кодить. И не забывай про кускование. Разорванного на мясо довольно трудно воскресить.


Отправлено Eternal12 14-09-2017 в 08:21:

Цитата:
Ku2zoff писал:
Eternal12 ты можешь спавнить их монстермейкером. Если нужно именно воскрешение, как у зонбе в кваке, тогда придётся кодить. И не забывай про кускование. Разорванного на мясо довольно трудно воскресить.

Про монстермейкера погуглил и уже проверил на тест карте , то что нужно. Спасибо за помощь.


Отправлено Ku2zoff 14-09-2017 в 12:50:

Цитата:
Luciferchik писал:
Доброго времени суток форумчанам, возникла такая проблема с кодом смены рук в движке тринити не совсем понятно именно вот этот момент из кода

Там, короче, при зеркаленьи модели сначала меняем тип куллинга, потом трансформируем матрицы, а потом восстанавливаем тип куллинга. Вроде так. Я когда-то экспериментальным путём подбирал в какие места в коде это запихать. И оно даже работало.


Отправлено Smykov 14-09-2017 в 18:43:

Может глупые вопросы, но после работы в 3ds привык при создании локации, чтобы было без лишних полигонов и чётко по размеру. Хотя понимаю, направления программ отличаются.
1) Возможна ли работа с метрическими величинами(сантиметрами и миллиметрами)?
2) Есть ли возможность задавать фиксированный размер объектов? Например, что если потребуется создать комнату 400см x 300см x 300см. Конечно, я могу примерно сам подогнать, задав величину grid'а, и растягивать по сетке, но мне кажется по любому есть более лучшее решение, в котором, примерно как в 3ds, заполнив поля параметров объекта.
3) Есть ли возможность изменить местоположение объекта, задав координаты? Наподобие панели в 3ds XYZ.


Отправлено Crystallize 15-09-2017 в 01:30:

В Хаммере(Джеке) насколько я знаю
1)нет
2)нет
3)нет


Отправлено Ku2zoff 15-09-2017 в 04:45:

semerjon смотря в чём ты работаешь. Если речь про хаммер и джек, то:
1). Нет. Умножай сам размеры на 2.5, получишь сантиметры. (1 юнит ~ 1 дюйм).
2). Можно использовать заранее заготовленные куски карты (с известными тебе размерами) и масштабировать их с помощью инструмента "Трансформировать".
3). Можно сдвинуть объект относительно текущего положения на определённое кол-во юнитов, используя инструмент, как в п.2.

И вообще, постарайся выкинуть из головы мысли о метрической системе и точном соответствии размеров и масштабов игровых объектов объектам ИРЛ. ИРЛ размеры и пропорции выглядят в игре очень маленькими. Помещения получаются тесными, а проходы узкими. Делай карты на глаз, сверяясь с оригиналом, тогда будет выглядеть хорошо.


Отправлено JPEG 15-09-2017 в 08:00:

Цитата:
Ku2zoff писал:
semerjon тогда будет выглядеть хорошо.

пока в этих объектах не появятся npc) Вот на скрине отчётливо видно, что на стульях сидят будто бы 12-летние дети. С эти можно только свыкнуться и забить

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 15-09-2017 в 11:43:

Yo Den а мне норм. Есть конечно диспропорция, но сильно заметна она лишь на статических картинках. Играя в Паранойю, я вообще не обращал на это внимания, даже в глаза не бросалось.


Отправлено Дядя Миша 15-09-2017 в 18:11:

Цитата:
Yo Den писал:
что на стульях сидят будто бы 12-летние дети

так это модельки такие. Ну не 12-летние, а 17-летние.
Всякое бывает. Иной и в 12 лет может под два метра вымахать, а ума-то нет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 15-09-2017 в 18:43:

Цитата:
Дядя Миша писал:
так это модельки такие. Ну не 12-летние, а 17-летние.
Всякое бывает. Иной и в 12 лет может под два метра вымахать, а ума-то нет.

ну, с такими книжищами, которые на полках сзади них лежат, можно за них не беспокоиться

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Smykov 16-09-2017 в 12:12:

Возможно, немного туго объясню вопрос.
Допустим, задача создать локацию в виде куба. Для этого мы 6 раз создаем браш и внутри локации нашей локации будет сущность игрока. По сути, для нашего персонажа требуется 6 полигонов от всех этих 6 брашей. Вопрос. Что происходит с полигонами брашей, которые не попадают в обзор игрока? А ведь, даже если с помощью noclip выйти за пределы куба, то мы не будем видеть эти стороны прямоугольников, а будем видеть нашу локацию(то что внутри куба).
И ещё, чтобы бы если был инструмент создания плоскости (plane из 3ds), а не box'ы "вытягивать". Я понимаю, что если создать браш размера нашей локации, и внутрь браша вставить сущность игрока, то, точно не помню, игрок при спавне в нём застрянет и вроде звуки воды ещё будут. Но я к тому, что если создавать 6 брашей, то будут лишние полигоны, которые игрок не сможет видеть и займут лишнюю память.
Думаю вы поняли, что я хотел сказать. Хотя личные догадки тоже есть, возможно компилятор предусматривает, что не будет попадать в обзор и отсекает лишнее.


Отправлено Дядя Миша 16-09-2017 в 15:49:

Цитата:
Yo Den писал:
ну, с такими книжищами

Книга - источник знаний

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Eternal12 16-09-2017 в 17:52:

Появилась идея сделать мирную зону. Заметил что func_water имеет на несколько видов оружия действие как запрет выстрела в воде (например mp5).

void CMP5::PrimaryAttack()
{
// don't fire underwater
if (m_pPlayer->pev->waterlevel == 3)

Следовательно подскажите в какую сторону копать либо делать новую копию func_water и вырезать от туда все лишнее что бы было как не в водной среде. Либо копать в сторону функции waterlevel == 3. Выслушаю все мнения по этому поводу.


Отправлено Smykov 16-09-2017 в 19:27:

Eternal12, думаю можно попробовать сделать что-то наподобие func_buyzone из кс, или хотя бы зоны для спасения заложников(func_ не знаю название). только не знаю, как бы дополнить pev каким-нибудь int peacezone. типо waterlevel - переменная, хранящая значение находимся ли мы в воде, а peacezone - находимся ли мы в мирной зоне.
Если всё это сделать, тогда думаю можно просто дополнить функцию ItemPostFrame класса CBasePlayerWeapon проверкой значения peacezone.

if ( (m_pPlayer->pev->peacezone==0) (m_pPlayer->pev->button & IN_ATTACK2) && CanAttack( m_flNextSecondaryAttack, gpGlobals->time, UseDecrement() ) )
{
if ( pszAmmo2() && !m_pPlayer->m_rgAmmo[SecondaryAmmoIndex()] )
{
m_fFireOnEmpty = TRUE;
}

m_pPlayer->TabulateAmmo();
SecondaryAttack();
m_pPlayer->pev->button &= ~IN_ATTACK2;
}
else if ( (m_pPlayer->pev->peacezone==0) (m_pPlayer->pev->button & IN_ATTACK) && CanAttack( m_flNextPrimaryAttack, gpGlobals->time, UseDecrement() ) )
{
if ( (m_iClip == 0 && pszAmmo1()) || (iMaxClip() == -1 && !m_pPlayer->m_rgAmmo[PrimaryAmmoIndex()] ) )
{
m_fFireOnEmpty = TRUE;
}

m_pPlayer->TabulateAmmo();
PrimaryAttack();
}

Или же просто, блок проверяющий нажатие клавиш огня заключить в условие.


Отправлено Eternal12 18-09-2017 в 03:59:

Цитата:
semerjon писал:
Eternal12, думаю можно попробовать сделать что-то наподобие func_buyzone из кс, или хотя бы зоны для спасения заложников(func_ не знаю название). только не знаю, как бы дополнить pev каким-нибудь int peacezone. типо waterlevel - переменная, хранящая значение находимся ли мы в воде, а peacezone - находимся ли мы в мирной зоне.
Если всё это сделать, тогда думаю можно просто дополнить функцию ItemPostFrame класса CBasePlayerWeapon проверкой значения peacezone.

if ( (m_pPlayer->pev->peacezone==0) (m_pPlayer->pev->button & IN_ATTACK2) && CanAttack( m_flNextSecondaryAttack, gpGlobals->time, UseDecrement() ) )
{
if ( pszAmmo2() && !m_pPlayer->m_rgAmmo[SecondaryAmmoIndex()] )
{
m_fFireOnEmpty = TRUE;
}

m_pPlayer->TabulateAmmo();
SecondaryAttack();
m_pPlayer->pev->button &= ~IN_ATTACK2;
}
else if ( (m_pPlayer->pev->peacezone==0) (m_pPlayer->pev->button & IN_ATTACK) && CanAttack( m_flNextPrimaryAttack, gpGlobals->time, UseDecrement() ) )
{
if ( (m_iClip == 0 && pszAmmo1()) || (iMaxClip() == -1 && !m_pPlayer->m_rgAmmo[PrimaryAmmoIndex()] ) )
{
m_fFireOnEmpty = TRUE;
}

m_pPlayer->TabulateAmmo();
PrimaryAttack();
}

Или же просто, блок проверяющий нажатие клавиш огня заключить в условие.


http://articles.thewavelength.net/237/
нашёл тутор только связанный с jail.

(Теперь я добавил boolean для CBasePlayer для серверной DLL, чтобы ссылаться, если игрок находится в тюрьме или нет.
КОД

bool m_bInJail; )

не знаю куда добавить bool m_bInJail;
А так же не могу в Player.cpp найти PlayerPrethink


Отправлено Smykov 18-09-2017 в 20:45:

Eternal12
Похоже, нужно просто дополнить сам класс CBasePlayer свойством bool m_bInJail(файл Player.h). И по поводу PlayerPrethink, может в других версиях как-то по другому, но у меня PreThink. Чтобы лучше ориентироваться пользуйся окном классов. Сразу открываешь hldll - CBasePlayer - PreThink.


Отправлено Eternal12 19-09-2017 в 03:54:

Цитата:
semerjon писал:
Eternal12
Похоже, нужно просто дополнить сам класс CBasePlayer свойством bool m_bInJail(файл Player.h). И по поводу PlayerPrethink, может в других версиях как-то по другому, но у меня PreThink. Чтобы лучше ориентироваться пользуйся окном классов. Сразу открываешь hldll - CBasePlayer - PreThink.


Угу спасибо теперь разобрался, перепутал исходники когда то их испортил и не удалил и там в нём искал того что удалено было.


Отправлено Ku2zoff 19-09-2017 в 11:32:

Задача такая: есть функ_валл, который должен быть несолиден только для игрока. То есть игнорить его должна только трасса в pm_shared. Все прочие должны в него упираться, чтобы оставались декали, взрывались гранаты, не могли пройти монстры. Как это сделать? Копал в сторону PM_PlayerTrace, там последним аргументом принимается int, который видимо индекс игнорируемой энтити. Но это не индекс. Что это, и в правильном ли направлении я вообще думаю?

Добавлено 19-09-2017 в 18:32:

Думал не туда UTIL_SetGroupTrace помогает решить задачу.


Отправлено Дядя Миша 19-09-2017 в 15:10:

Цитата:
Ku2zoff писал:
там последним аргументом принимается int, который видимо индекс игнорируемой энтити. Но это не индекс

Индекс, но для physent-набора. Малоюзабельная штука.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 19-09-2017 в 17:12:

Цитата:
Дядя Миша писал:
Индекс, но для physent-набора. Малоюзабельная штука.

Я уже разобрался, поглядев сорцы ксаша.


Отправлено Eternal12 20-09-2017 в 04:12:

Цитата:
Ku2zoff писал:
Я уже разобрался, поглядев сорцы ксаша.

Норм тему закодил


Отправлено Ku2zoff 20-09-2017 в 04:23:

Цитата:
Eternal12 писал:
Норм тему закодил

Осталось решить пару проблем, и можно в виде тутора это сделать. Для сингла на данный момент всё отлично, а вот в мульте кое-какие огрехи проявляются.


Отправлено Chyvachok 20-09-2017 в 09:21:

Ku2zoff отлично получилось, кстати пистолет в руке большой, это ты научил игру аттачить w_модели? Вообще забавно выглядит то что w_модели оружия в халве какие-то огромные, больше чем p_модели. Кстати во второй халве там тоже как и в ХЛ1 у оружия есть кости руки там, то есть тоже игра соединяет скелет моделей оружия с моделью игрока или НПС.


Отправлено XF-Alien 20-09-2017 в 09:35:

Цитата:
Chyvachok писал:
Вообще забавно выглядит то что w_модели оружия в халве какие-то огромные, больше чем p_модели.

Не та игра, чтоб делать всё с пропорциями как ИРЛ, ИМХО. Я в своё время когда-то пробовал подогнать скейл w-моделей к p. Получилось, как минимум, просто некрасиво. Стволы выглядели преуменьшенными, и я не всегда замечал их на фоне текстур и прочего.


Отправлено Ku2zoff 20-09-2017 в 14:08:

Цитата:
Chyvachok писал:
кстати пистолет в руке большой

Игрок ростом 36 юнитов, масштаб уменьшен в два раза. p_ и w_ модели я не скейлил ещё.
Цитата:
XF-Alien писал:
Стволы выглядели преуменьшенными, и я не всегда замечал их на фоне текстур и прочего.

Надо их или вертеть, как в кваке, или подсвечивать в таком разе.


Отправлено Cybermax 20-09-2017 в 14:40:

>>Осталось решить пару проблем, и можно в виде тутора это сделать. Для сингла на данный момент всё отлично, а вот в мульте кое-какие огрехи проявляются.

Выглядит отлично! Какие проблемы мульте?


Отправлено Chyvachok 20-09-2017 в 14:40:

Цитата:
Ku2zoff писал:
Игрок ростом 36 юнитов, масштаб уменьшен в два раза. p_ и w_ модели я не скейлил ещё.


Точно вспомнил, ты вроде мир же у себя уменьшаешь, тогда понятно чего пест большой, а то увидев его сначала подумал что ты убрал p_модели и сделал как-то чтобы w_модели аттачились Из-за того что w_ модели в оригинальной халве больше чем p_модели.

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


Отправлено Ku2zoff 20-09-2017 в 15:18:

Цитата:
Cybermax писал:
Какие проблемы мульте?

Игроки также становятся несолидными друг для друга, когда ползают под func_wall'ами, которые блокируют проход стоячим и присевшим игрокам.
В кратце, механизм такой: когда игрок ползёт, в боксе, равном его сидячему хуллу, ищутся от 1 до 8 func_wall'ов с определённым флагом. Как только в бокс попадает нужный валл, он и игрок получают общее pev->groupinfo, чтобы не коллайдить между собой. Это позволяет ползущему игроку заползать в низкие лазы, а сидячему и стоячему - нет.
Так вот, если в данный момент под валлом ползут два игрока - они могут ползать сквозь друг дружку. Во-первых, это как-то стрёмно выходит, придётся или позволить игрокам вообще проходить сквозь других игроков в любом случае, либо искать другой способ. Во-вторых, это приводит к застреванию одного игрока в другом, если один почти вылез из-под валла, но ещё несолиден для других ползущих игроков, а второй полностью вылез, и у него сменилось pev->groupinfo, и первый стал для него солидным. Конечно, второму игроку (застрявшему) достаточно нажать на прыжок, и он высвободится. Но прыжок в ползании так-то не работает, и игроку будет сложно об этом догадаться.

Добавлено 20-09-2017 в 22:11:

Я ещё попробую игнор физэнтити в трейсе в pm_shared. Если это сработает, то такой вариант будет лучше.

Добавлено 20-09-2017 в 22:15:

Цитата:
Chyvachok писал:
А вообще у тебя крутые вещи выходят

Во многом это заслуга Дяди Миши: открытые сорцы ксаша и просто его советы. Часть идей я позаимствовал из других модов и игр и развил, а часть придумал сам. Ну и ещё часть - это буржуйские статьи, которые немного неполные или только теоретические. Не такой уж я хороший кодер на самом деле.

Добавлено 20-09-2017 в 22:18:

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


Отправлено Дядя Миша 20-09-2017 в 15:30:

Ku2zoff а чево не сделал мини-хулл на месте второго хулла?
Он же нужен только здоровым монстрам, типа гарга.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 20-09-2017 в 15:32:

Цитата:
Дядя Миша писал:
Он же нужен только здоровым монстрам, типа гарга.

А как же тогда гарг будет трейсить свой путь?


Отправлено Дядя Миша 20-09-2017 в 18:58:

та какой гарг в мультиплеере?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 20-09-2017 в 20:11:

Цитата:
Ku2zoff писал:
Игрок ростом 36 юнитов, масштаб уменьшен в два раза. p_ и w_ модели я не скейлил ещё.

воу, так у тебя полностью получилось?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 21-09-2017 в 06:26:

Цитата:
Дядя Миша писал:
та какой гарг в мультиплеере?

А я не думаю отказываться от сингла пока. Так что большие монстры не выкинуты. Ну и задумка на кооп ещё есть.
Цитата:
Yo Den писал:
воу, так у тебя полностью получилось?

С одной оговоркой: без хотя бы одного игрока на сервере (в мультиплеере) не работает, т.к. доступ к моделям (которые model_t) можно получить только из PM_PlayerMove.
Цитата:
Ku2zoff писал:
Я ещё попробую игнор физэнтити в трейсе в pm_shared

Короче, надо серьёзно шаманить с MOVETYPE_WALK в pm_shared, чтобы не использовать UTIL_SetGroupTrace.


Отправлено Smykov 21-09-2017 в 08:22:

Можно ли в хаммере вставлять prop_модели. Я знаю как в версиях для source добавлять. Но я немного запутался. Примеры моделей в sdk есть, но добавлять нельзя чтоли? Хотя можно создать новый класс в fgd, но наверняка есть более простое решение.


Отправлено XaeroX 21-09-2017 в 09:49:

Можно, для этого есть энтитя cycler.
Еще есть monster_furniture - это если надо, чтобы модель умела играть скриптовые анимации.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Smykov 23-09-2017 в 15:42:

Решил попрактиковаться на Source. Скачал из стима Source SDK, Source SDK Base 2007. По инструкции из документации настроил проект, DLL компилируются, копируются в папку с модом. После создания мода через SDK, у нас имеется проект Episode Two(сама игра у меня не установлена, так что не потестил я ничего). Как я понял, если наш GoldSrc-мод не мог найти файлы в своей директории, то он мог использовать контент самой HL, находящийся в папке valve, то тут мод может использовать контент в директориях, описанных в gameinfo.txt.
Честно говоря, пока что не хочется лишнюю игру устанавливать ради отладки, мне пока что HL1 хватает, но Source тоже хочется. Возник ступор. Можно ли найти какое-либо применение Base 2007 для модификации? Всё-таки ~4 гб весит.
З.Ы. Похоже стоит удалить моё прошлое сообщение в техн. разделе.


Отправлено Ku2zoff 23-09-2017 в 18:00:

Цитата:
semerjon писал:
Можно ли найти какое-либо применение Base 2007 для модификации

Source SDK Base - это движок + платформа. Source SDK - это набор утилит + сорцы и примеры.
Для запуска мода тебе нужен Soure SDK Base. Для разработки - Source SDK. Вот и всё. Естественно, и то и другое одной версии. Моды на сорс ты хоть раз устанавливал? Они требуют определённую версию Source SDK Base для работы. ЕМНИП, то бесплатная Блак Меса работает с Source SDK Base 2007.


Отправлено JPEG 23-09-2017 в 18:54:

Цитата:
semerjon писал:
Как я понял, если наш GoldSrc-мод не мог найти файлы в своей директории, то он мог использовать контент самой HL, находящийся в папке valve, то тут мод может использовать контент в директориях, описанных в gameinfo.txt.

не, ну в хл1 модах через liblist.gam тоже можно указывать директорию отличную от valve, где искать файлы в случае ненахождения их в папке с модом

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 24-09-2017 в 16:15:

Цитата:
Дядя Миша писал:
а чево не сделал мини-хулл на месте второго хулла?

Помимо гарга, кстати, этот хулл юзают активно летающие монстры, а ещё ихтиозавр и нихилант. Интересно, как он соотносится с их реальными размерами? Он 64х64х64, а тот же гарг ростом 214 и шириной и длиной 80 юнитов. А контроллер ростом и шириной с игрока. Может быть можно заменить этот хулл head_hull'ом? Он почти кубический (32х32х36), только меньше в два раза.

Добавлено 24-09-2017 в 23:15:

Цитата:
Yo Den писал:
не, ну в хл1 модах через liblist.gam тоже можно указывать директорию отличную от valve, где искать файлы в случае ненахождения их в папке с модом

Как минимум 6 директорий, в последних версиях. По приоритетности:
1. Папка мода_язык.
2. Папка мода_downloads.
3. Папка мода_addons.
4. Папка мода.
5. Папка fallback_dir.
6. Папка valve.
Насчёт addons не знаю, вполне возможно работает только в официальных играх и модах. Остальное 100% работает везде. Реальную же пользу несут только папки с языком и fallback_dir, т.к. addons и downloads заполняются по особым правилам, т.е. не автором мода. Получается 4 директории: папка_язык, папка_мод, папка_fallback, и папка valve.


Отправлено JPEG 24-09-2017 в 16:51:

Цитата:
Ku2zoff писал:
папка_язык

у меня в пиратской стим версии хл после установки хл2 стала появляться у каждого мода папка _russian, которая само собой никакой пользы в отношении хл1 не несёт, кроме захламления директории и копированием конфигов. К счастью через реестр отключается. Да, fallback самый лучший вариант

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Sigurth 24-09-2017 в 17:16:

Цитата:
Ku2zoff писал:
Как минимум 6 директорий, в последних версиях


Еще в современной стим версии хл есть папка мода_hd для опциональных hd моделей, звуков и всего такого. Хотя туда можно что угодно запихать, просто будет в первую очередь оттуда файлы загружать, если отмечена галочка в настройках.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Cybermax 24-09-2017 в 19:24:

Я где-то встречал упоминание cstrike_custom кажется.


Отправлено JPEG 24-09-2017 в 19:39:

Цитата:
Cybermax писал:
Я где-то встречал упоминание cstrike_custom кажется.


хз, гугл выдал, что это в сорсе можно внутри каталог custom создавать

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 25-09-2017 в 04:29:

Цитата:
Sigurth писал:
Еще в современной стим версии хл есть папка мода_hd для опциональных hd моделей, звуков и всего такого.

О, я про это и забыл. Сам ведь использую периодически - положил в папку czero_hd собственную озвучку кс и кастомные русурсы. Надоедает играть в кастом - снимаю галочку, играю в ваниллу
Цитата:
Cybermax писал:
Я где-то встречал упоминание cstrike_custom кажется.

Такое только на сорсе работает.


Отправлено Дядя Миша 25-09-2017 в 16:32:

Цитата:
Ku2zoff писал:
Может быть можно заменить этот хулл head_hull'ом?

застревать буит

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 25-09-2017 в 16:35:

Цитата:
Дядя Миша писал:
застревать буит

Значит не судьба, если не отказаться от гарга, ихтиозавра и летающих монстров. А если делать 4 трассы вместо одной (естественно, трейся head_hull)? Бредово конечно, но почему нет? Стартовые точки сместить относительно друг друга в цикле. Если хоть один из 4-х трейсов утыкается в солид - отбой, отказ.


Отправлено Дядя Миша 26-09-2017 в 06:39:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 28-09-2017 в 18:01:

Сделал ползание отдельным хуллом. Геморно оказалось из-за жёсткой привязки usehull = 1 к FL_DUCKING. Вроде работает. Осталось только сделать сидячий хулл чисто квадратным. Он 32х32х36, а надо 32х32х32. Тогда как раз четыре трейса head_hull будут равны по объёму одному трейсу старого big_hull (64х64х64), который сейчас занят под ползание. Компенсировать уменьшенный рост сидячего игрока можно clip-брашами, чтобы он не мог залазить туда, куда не надо, ну и камеру задрать на 4 юнита вверх, чтобы визуальных отличий не было.

Добавлено 29-09-2017 в 00:20:

Когда делал масштабирование, не уменьшил размеры CTestHull. То-то у меня уч0ные немного подтупливали при перемещении, и некоторые ноды между собой не коннектились. Сколько работы с масштабом, оказывается.

Добавлено 29-09-2017 в 00:57:

UPD: да вроде гарг и так нормально работает, без дополнительных трейсов. Проходит через коридор шириной 40 юнитов (при собственном размере 32х32х32 и коллижн боксе 80x80x107). Надо проверить, как он себя при оригинальных размерах поведёт.

Добавлено 29-09-2017 в 01:01:

И при оригинальных так же. Проходит в узкие дырки спокойно.


Отправлено Smykov 02-10-2017 в 19:31:

Вопросы по поводу ресурс-файлов(valve/resource).
1) Пример: OptionsSubMouse.res.
//Фрагмент описывающий "бегунок" для чувствительности мыши
"Slider"
{
"ControlName" "CCvarSlider"
"fieldName" "Slider"
"xpos" "40"
"ypos" "222"
"wide" "272"
"tall" "40"
"autoResize" "0"
"pinCorner" "0"
"visible" "1"
"enabled" "1"
"tabPosition" "6"
}
Как программа обращается к элементам, описанным через ресурс-файл? В коде(проекта VS) никаких упоминаний не удалось найти.

2) Как вообще использовать элементы, описанные через ресурс-файл? То есть, как их вывести на экран?
Например, в GameMenu.res описаны пункты главного меню, которые содержат команды, исполняющиеся при нажатии на них.
//Find server(Найти сервер)
"9"
{
"label" "#GameUI_GameMenu_FindServers"
"command" "OpenServerBrowser"
"notsingle" "1"
}
Не могу понять, где описывается команда OpenServerBrowser? Впрочем, как и остальные.

3) Мне бы статейки какие-нибудь на эту тему, может есть? Даже, если от старых версий есть, скиньте пожалуйста, просто из интереса почитать.


Отправлено JPEG 02-10-2017 в 20:01:

Цитата:
semerjon писал:
Вопросы по поводу ресурс-файлов(valve/resource).
1) Пример: OptionsSubMouse.res.
//Фрагмент описывающий "бегунок" для чувствительности мыши
"Slider"
{
"ControlName" "CCvarSlider"
"fieldName" "Slider"
"xpos" "40"
"ypos" "222"
"wide" "272"
"tall" "40"
"autoResize" "0"
"pinCorner" "0"
"visible" "1"
"enabled" "1"
"tabPosition" "6"
}
Как программа обращается к элементам, описанным через ресурс-файл? В коде(проекта VS) никаких упоминаний не удалось найти.

2) Как вообще использовать элементы, описанные через ресурс-файл? То есть, как их вывести на экран?
Например, в GameMenu.res описаны пункты главного меню, которые содержат команды, исполняющиеся при нажатии на них.
//Find server(Найти сервер)
"9"
{
"label" "#GameUI_GameMenu_FindServers"
"command" "OpenServerBrowser"
"notsingle" "1"
}
Не могу понять, где описывается команда OpenServerBrowser? Впрочем, как и остальные.

3) Мне бы статейки какие-нибудь на эту тему, может есть? Даже, если от старых версий есть, скиньте пожалуйста, просто из интереса почитать.

если ты про хл сдк, то там и не должны упоминаться эти ресурс файлы, ведь они появились позже, в стим-версии хл и хл2. Т.е. другие dll за это отвечают. Хотя в кандишн зеро, были дополнительные пункты меню, как и в zbot для кс 1.6, но, думаю, что за это отвечают стимовские длл, поэтому не получится их редактировать. Могу лишь сказать, что в каждом ресурс файле можно использовать только определённый набор команд, характерный конкретно для этого файла (хотя GameMenu.res более гибкий, чем остальные, там можно даже консольные команды юзать)

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Smykov 02-10-2017 в 20:24:

Я сюда запостил, потому что тут в принципе раздел посвященный HL, а также чтобы отдельную тему не создавать.
По поводу определённого набора команд и редактирования. Не думаю, что тут всё жестко заточено. Раньше, когда я увлекался разными сборками CS, были сборки Version Pack от cs-redemax.ru. И у них помню в главном меню свой пункт был. То есть, дополнительная пункт, открывающий фрейм, в котором вроде бы указана информация о сборке. То есть, похоже действительно можно создавать свои элементы.


Отправлено JPEG 02-10-2017 в 20:57:

Цитата:
semerjon писал:
Я сюда запостил, потому что тут в принципе раздел посвященный HL, а также чтобы отдельную тему не создавать.
По поводу определённого набора команд и редактирования. Не думаю, что тут всё жестко заточено. Раньше, когда я увлекался разными сборками CS, были сборки Version Pack от cs-redemax.ru. И у них помню в главном меню свой пункт был. То есть, дополнительная пункт, открывающий фрейм, в котором вроде бы указана информация о сборке. То есть, похоже действительно можно создавать свои элементы.

Про тот пункт, что ты говоришь, почти уверен, что это просто отредактированное окно запуска сингла

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Smykov 03-10-2017 в 09:36:

Как же тогда окно выбора модели персонажа, меню закупки, а также вспомогательное меню(на клавишу H)?


Отправлено JPEG 03-10-2017 в 13:05:

Цитата:
semerjon писал:
Как же тогда окно выбора модели персонажа, меню закупки, а также вспомогательное меню(на клавишу H)?

так это же другое вообще, там res-файлы не при делах, это vgui, точно видел туторы по этой теме

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 03-10-2017 в 15:52:

Цитата:
Yo Den писал:
Т.е. другие dll за это отвечают.

GameUI.dll, если точнее. Если клиентка принимает экспорты от GameUI (как в этих ваших каэсках), то можно и из клиентки рулить ресурс-файлами и всякой прочей лабудой. Причём, в разных каэс оно разное. До определённого времени 1.6 умел только работать с рес-файлом настройки ботов при создании сервера. А потом научился и кастомизации прицела, и вообще всему, т.к. дллки с CZ стали одинаковые. А вот в Deleted Scenes своя клиентка, она могёт работать с картой мира (выбор заданий), но не могёт всего прочего, что могёт сетевая кс.

Добавлено 03-10-2017 в 22:52:

Цитата:
Yo Den писал:
так это же другое вообще, там res-файлы не при делах, это vgui, точно видел туторы по этой теме

На H вызывается коммандменю, оно и в обычной халфе работает. Изначально эта бяка была написана для ТФК, как и всё VGUI. Кстати, тут многие не в курсе, но при определённом старании можно собрать клиентку ТФК из сорцев на гитхабе. Там всего лишь несколько внешних функций отсутствуют. Лучшы-б сервер выложили. Или там лицензия хитроумная какая-то, что низзя?


Отправлено Smykov 03-10-2017 в 19:10:

Yo Den, cstrike/resource/UI - тут содержатся элементы интерфейса CS.
Ku2zoff, так в итоге есть ли возможность создавать свои элементы интерфейса таким образом? Просто для чего тогда делать такую систему, если ею нельзя пользоваться.
Кстати, не знаю как в старых версиях CS, но в нынешней отсутствует GameUI.dll.


Отправлено JPEG 03-10-2017 в 19:51:

Цитата:
semerjon писал:
Yo Den, cstrike/resource/UI - тут содержатся элементы интерфейса CS.
Ku2zoff, так в итоге есть ли возможность создавать свои элементы интерфейса таким образом? Просто для чего тогда делать такую систему, если ею нельзя пользоваться.
Кстати, не знаю как в старых версиях CS, но в нынешней отсутствует GameUI.dll.

если тебе нужно меню внутри игры (как закупки, меню ботов и прочее), то можно без проблем, где-то были туторы, поищи тут или на csm, я не помню их названия

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено a1batross 03-10-2017 в 19:55:

Если вам интересно как использовать VGUI2 внутри клиентки, то вот есть https://github.com/CKFDevPowered/CKF3Alpha. Рекомендую почитать. Китайцы восстановили хедеры и прикрутили VGUI2, прям как в CS.

Саму по себе логику работы GameUI менять нельзя, поскольку вальва в движке захардкодила путь к GameUI.dll как valve/cl_dlls/GameUI.dll. Никаким образом заменить в моде не выйдет. (Кроме перезаписи памяти)

В res-файлах на те же кнопки можно повесить команды. Как там слайдеры ставить я ее знвю.


Отправлено JPEG 03-10-2017 в 20:05:

Цитата:
semerjon писал:
Yo Den, cstrike/resource/UI - тут содержатся элементы интерфейса CS.
Ku2zoff, так в итоге есть ли возможность создавать свои элементы интерфейса таким образом? Просто для чего тогда делать такую систему, если ею нельзя пользоваться.
Кстати, не знаю как в старых версиях CS, но в нынешней отсутствует GameUI.dll.

нашёл http://ralertmod.narod.ru/sham-vgui.htm

Добавлено 03-10-2017 в 23:05:

ну а если нужно редактировать меню, которое оконное (find servers, options...), то там с помощью блокнота можно поменять цветовую тему (TrackerScheme.res), вставить картинки, включить/выключить некоторые пункты в меню (пункт type в либлисте), переименовать все надписи, добавить свои консольные команды в пункты меню GameMenu.res (например "command" "engine noclip; cd eject; mp3 play sound/UI/loading"). Есть ещё user.scr и settings.scr для опции настройки мультиплеерной игры

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Smykov 03-10-2017 в 21:05:

Yo Den, спасибо. То что элементы редактировать можно это я понимаю. Я интересуюсь именно про создание новых. То есть, создать свой res-файл, каким-либо образом создать команду для пункта command файла GameMenu.res, чтобы тот открывал мой элемент. Вообщем, похоже тут плачевно.
А так, про VGUI-элементы я уже читал, а сейчас интересуюсь созданием элементов интерфейса через res. Ведь как-то же в CS реализовали такую систему, хотя может тут уже вэлв постарались, а кроме CS не могу привести пример.


Отправлено Sigurth 04-10-2017 в 03:20:

Цитата:
a1batross писал:
вальва в движке захардкодила путь к GameUI.dll как valve/cl_dlls/GameUI.dll


Не знаю, с чего ты так решил, но я только что разрушил этот миф и перенес GameUI.dll из valve в свой мод, и как результат, халфа не запускается, а мод прекрасно работает. А значит, что пусть все таки не захардкоден. Причем как и в более старой версии отученной от стим пиратки, так и в лицензии. Так что движок спокойно схавает кастомный GameUI.dll в папке с модом. Вот только толку

__________________
Никогда не поздно сделать мод под хл1


Отправлено Ku2zoff 04-10-2017 в 07:23:

Цитата:
a1batross писал:
Если вам интересно как использовать VGUI2 внутри клиентки, то вот есть

Там мод Chicken Fortress, и CSBTE - вроде бы опенсорсный клон CSO. Как игры интереса не представляют, но как источники закрытого кода и примеры использования недокументированных интерфейсов полезны. Кстати, там есть ещё сорцы GameUI.dll. Да, да. Только совместима ли она с последней версией голдсорса - хз.


Отправлено a1batross 04-10-2017 в 09:05:

Sigurth в бинарнике движка строка присутствует именно такой, какой я описал.

Ku2zoff в CSBTE сорцы неполные, так как реализована только та часть, которая посредством перезвписи кода в памяти будет заменена. То есть он использует оригинальный клиент. А в ckf исходники полные. Бери и компиляй.


Отправлено Smykov 08-10-2017 в 21:21:

1) Либо в книжке по программированию игр или в статейке где-то прочитал, посвященным DirectX, что во время инициализации компонентов, каждый "пытается" получить аппаратное обеспечение у компонентов системы, а в противном случае он работает программно. Неточная формулировка, пытался найти фрагмент текста в книжке, не смог, но где-то я это видел. Как понимаю суть в том, что если какой-либо из компонентов не может работать с устройством системы, то обработка информации происходит через CPU.
В таком случае, я не понимаю с помощью чего происходит обработка, с помощью драйверов(не DirectX, а например nVidia)?

2) Про видеорежим Software в HL.
В этом режиме обработка графики происходит посредством графических драйверов? Или может без использования GPU? Просто не совсем понятно, почему графика в низком качестве, и это не только во время геймплея, но и фон меню игры тоже выводится нечётко. И кстати, не работает net_graph.

3) Никогда ещё не играл в первый квейк, но вроде там нету поддержки Direct3D, в отличии от HL. В связи с чем, в обновлённой стимовской версии HL убрали его поддержку?

4) Порой в некоторых видео, или статьях где обсуждают про Direct3D и OpenGL, часто вижу, что у игр с использованием OpenGL стабильнее fps. Сразу скажу, ни в коем случае я не пытаюсь устроить срач, а лишь хотелось бы узнать в чём дело. Ведь у DirectX очень обширные возможности, но порой OpenGL "облегчает" работу программы. Может тут вы свою точку зрения расскажите? В каких ситуациях, что лучше использовать?


Отправлено Дядя Миша 08-10-2017 в 21:37:

Цитата:
semerjon писал:
Как понимаю суть в том, что если какой-либо из компонентов не может работать с устройством системы, то обработка информации происходит через CPU.

Эмуляция. В OpenGL такое тоже есть.

Цитата:
semerjon писал:
Или может без использования GPU?

Да. Но для ускорения тем не менее используется аппаратный 2D ускоритель.

Цитата:
semerjon писал:
В связи с чем, в обновлённой стимовской версии HL убрали его поддержку?

Этож фейк, не было там никакой поддержки D3D.

Цитата:
semerjon писал:
часто вижу, что у игр с использованием OpenGL стабильнее fps

Разные идеологии API. В GL очень тяжело так накосячить, чтобы уронить фпс в пол, выставив неправильные стейты. В DX наоборот это легко и просто, там надо постоянно обращаться к документации.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 09-10-2017 в 04:38:

Цитата:
semerjon писал:
Просто не совсем понятно, почему графика в низком качестве

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


Отправлено JPEG 09-10-2017 в 13:28:

Цитата:
Дядя Миша писал:
Этож фейк, не было там никакой поддержки D3D.

хм, а что тогда это за режим? В хз он почему-то работал заметнее быстрее, чем опенгл

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Crystallize 09-10-2017 в 14:10:

Yo Den А ещё там Z-fighting в принципе отсутствует.


Отправлено Дядя Миша 09-10-2017 в 15:21:

Цитата:
Ku2zoff писал:
Кстати, софтвар в халфе очень близок по конечному результату к OpenGL

А должен выглядеть ну совсем по-другому?

Цитата:
Yo Den писал:
хм, а что тогда это за режим?

Транслятор GL-D3D, встроенный в движок. Ксерокс помнится такой писал, только внешний.

Цитата:
Crystallize писал:
А ещё там Z-fighting в принципе отсутствует.

Глупости какие

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 09-10-2017 в 15:25:

Цитата:
Yo Den писал:
хм, а что тогда это за режим? В хз он почему-то работал заметнее быстрее, чем опенгл

Это НЕ НАТИВНАЯ поддержка D3D, а ЭМУЛЯЦИЯ OpenGL через D3D. Ксер сделал то же самое отдельной либой - QindieGL. Работало это гумно (рендерер в халфе, а не QindieGL конечно ) заметно быстрее у тех, у кого была б-г мерзкая графика от интел, например. Или какие-то стрёмные драйвера, которые не умели нормально в OpenGL. У меня, когда был ATI Radeon 9250, нативный OpenGL был всегда быстрее.
Цитата:
Crystallize писал:
А ещё там Z-fighting в принципе отсутствует.

А ещё с некоторыми версиями драйверов на радеонах Xбла-бла-блаPRO вообще не рисуются декали. Так-то.

Добавлено 09-10-2017 в 22:25:

Цитата:
Дядя Миша писал:
Транслятор GL-D3D, встроенный в движок. Ксерокс помнится такой писал, только внешний.

О, Дядя Миша меня опередил
Цитата:
Дядя Миша писал:
А должен выглядеть ну совсем по-другому?

Некоторые отличия есть. Я не о графике в целом, а о поддержке всяких плюшек и реализации фич. Например, водичка в софтваре весьма интереснее, чем в OGL. А вот партикли наоборот паршивые. Ну и динамические лайтстили могут тормозить.


Отправлено Дядя Миша 09-10-2017 в 15:27:

Вот вам пример как Z-файтинг отсутствует в D3D.
З-файтинг может отсутствовать только в софтварном рендерере, при условии что з-буффер целочисленный. Собственно это прямое следствие использования плавающей точки, а не какая-то заслуга именно софт-рендера.

Добавлено 09-10-2017 в 18:27:

Цитата:
Ku2zoff писал:
Например, водичка в софтваре весьма интереснее, чем в OGL

Во времена OpenGL 1.0 многое из того, что элементарно делалось в софтваре было недоступно в GL. Сейчас такой проблемы нет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 09-10-2017 в 15:52:

А с чем кстати вот это связано? Вадник из чернобыля, показаны мип-уровни, но в игре при удалении от объекта они не используются, хотя по идее должны быть, т.е. текст остаётся русским

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 09-10-2017 в 16:04:

Цитата:
Yo Den писал:
Вадник из чернобыля

Ватник из чернобыля?

Цитата:
Yo Den писал:
в игре при удалении от объекта они не используются

Это только для софтварного рендера мипы.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 09-10-2017 в 16:58:

Цитата:
Дядя Миша писал:
Во времена OpenGL 1.0 многое из того, что элементарно делалось в софтваре было недоступно в GL. Сейчас такой проблемы нет.

Сделай в ксаше водичку как в халфовском софтваре.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 09-10-2017 в 20:08:

XaeroX круги на воде вот эти? а смысл? Я лутьше починю рандом тайлинг.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 10-10-2017 в 04:27:

Цитата:
Дядя Миша писал:
а смысл

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

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 10-10-2017 в 14:37:

XaeroX заметил, но оно ж нефизичное всё равно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 10-10-2017 в 15:32:

что в софтваре, что в гл отстойная вода, для большинства случаев эти бесконечные круги и волны не подходят

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 10-10-2017 в 15:40:

Цитата:
Дядя Миша писал:
оно ж нефизичное всё равно

Цитата:
Yo Den писал:
что в софтваре, что в гл отстойная вода

Да, пожалуй, не буду спорить с профессионалами.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 10-10-2017 в 17:23:

XaeroX как говорил наш друг - это вкусовщина. Ну тебе нравятся эти капельки, так чтоже с того?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 10-10-2017 в 17:51:

Цитата:
Дядя Миша писал:
оно ж нефизичное всё равно

Зато красиво. И красивее, чем в Унреале. На самом деле, такое в халфе наблюдать намного приятнее, чем всякие отражения и преломления на воде. Преломления и отражения требуют графики а-ля Крайзис или Унреал3, всё-таки.


Отправлено Luciferchik 14-10-2017 в 19:20:

Назрел такой вопрос, почему худ не может воспроизводить черный цвет это баг такой что-ли?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 14-10-2017 в 19:43:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 14-10-2017 в 19:58:

Дядя Миша:А сменить его можно?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 14-10-2017 в 21:47:

рисуй через SPR_Draw, вместо SPR_DrawAdditive

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 14-10-2017 в 22:42:

Цитата:
Дядя Миша писал:
рисуй через SPR_Draw

Но так же прозрачность его пропадет и будет просто черная картинка и спрайта не видать будет

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 15-10-2017 в 05:31:

Цитата:
Luciferchik писал:
А сменить его можно?

"Аддитивный режим" в переводе с английского - это сложение.
Чёрный цвет - это цвет (0,0,0), а сложение с нулём даёт оригинальный цвет. Поэтому он и выглядит "прозрачным".
Есть ещё SPR_DrawHoles, так рисуется спрайт с альфа-тестом, у которого прозрачный строго определённый цвет, заданный в палитре.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 15-10-2017 в 07:01:

Цитата:
Luciferchik писал:
и будет просто черная картинка и спрайта не видать будет

Цитата:
XaeroX писал:
SPR_DrawHoles

Вот с помощью этого рисуй. То ли первый цвет в палитре прозрачный, то ли последний, не помню.


Отправлено Crystallize 15-10-2017 в 09:46:

Можно ли на клиенте перезаписывать v_origin игрока напрямую, не полагаясь на SetViewAngles?


Отправлено Luciferchik 15-10-2017 в 15:10:

Ku2zoff
XaeroX Надо чтоб было что-то наподобии хл2 или как на скрине

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 15-10-2017 в 15:44:

Luciferchik
Это вроде бы через TriAPI делать можно.
И ещё можно VGUI подключить, там панельки не аддитивные, а обычный бленд.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 15-10-2017 в 15:47:

Цитата:
XaeroX писал:
И ещё можно VGUI подключить, там панельки не аддитивные, а обычный бленд.
Наверно через него скорей всего делать норм будет.
И да, есть еще один вопрос по дядь Мишеному веапон лагу не могу понять что отвечает за движениям миши верх и вниз просто как-то оно не очень модель смещает, а в халве норм

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 16-10-2017 в 15:35:

Цитата:
Luciferchik писал:
Но так же прозрачность его пропадет

ЧТо за молодёж пошла, им мало чёрного цвета, еще и прозрачность подавай

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 28-10-2017 в 18:50:

Есть вопрос почему в тринити рендер не написали бамп это типа ради совместимости так сделали, рендер же написан на основе параноевского редера и хотелось бы узнать много ли нужно писать в тринити чтоб его туда перенести ещё интересен спекуляр

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 29-10-2017 в 10:01:

Цитата:
Luciferchik писал:
почему в тринити рендер не написали бамп

ума нехватило

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 29-10-2017 в 14:11:

Цитата:
Дядя Миша писал:
ума нехватило

Ага, чтоб бамп написать ума не хватило, а чтоб в коде коменты оставлять что валв сосет и их код отстой хватило ума, как-то странно

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 29-10-2017 в 16:05:

Цитата:
Luciferchik писал:
а чтоб в коде коменты оставлять что валв сосет и их код отстой хватило ума, как-то странно

Ты считаешь, что для того, чтобы написать "валв сосёт и их код отстой", требуется ума не меньше, чем на бамп?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 29-10-2017 в 16:16:

Цитата:
XaeroX писал:
Ты считаешь, что для того, чтобы написать "валв сосёт и их код отстой", требуется ума не меньше, чем на бамп?
Это был сарказм, а бамп так просто не напишешь без знания opengl

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 30-10-2017 в 12:29:

Цитата:
Luciferchik писал:
а бамп так просто не напишешь без знания opengl

Бамп-маппинг это один дотпродукт в нужном месте. А всё остальное - подготовительные работы.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 30-10-2017 в 20:24:

Цитата:
Дядя Миша писал:
Бамп-маппинг это один дотпродукт в нужном месте. А всё остальное - подготовительные работы.
Кстати что по идее лучше нормал-мапинг или же бамп-мапинг?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 31-10-2017 в 02:00:

Luciferchik
Да это одно и то же. Я ни разу не видел, чтобы кто-то употреблял понятие "бамп-маппинг" в оригинальном значении. Кроме википедии и "умных" статей о графике.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 31-10-2017 в 05:50:

XaeroX
Стало интересно сможет ли движок халвы вытянуть паралакс с помощью glsl шейдеров или же под эти интересы лучше брать ксаш?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 31-10-2017 в 07:44:

Luciferchik
Смотря что ты понимаешь под "вытянуть".
В хлфх был параллакс, например.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 31-10-2017 в 10:04:

Цитата:
XaeroX писал:
В хлфх был параллакс, например.

Ога, если на хлфх он был то значит потянет. Да я чот сразу заметил что в хлфх бамп не такой как в параное.
Под словом "вытянет" я имел ввиду что двиг халвы сможет такое обработать или этим уже будет заниматься иная библиотека?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 31-10-2017 в 10:30:

То, что ты в дллках делаешь - этим двиг уже не занимается. То есть самому всё обеспечивать нужно.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 31-10-2017 в 13:01:

Цитата:
Luciferchik писал:
Кстати что по идее лучше нормал-мапинг или же бамп-мапинг?

Нормал-маппинг конечно. Бамп-маппинг особо и не прижился, от него уже в 2004-м отказались. Но термин теперь юзают и для нормалмаппинга. Путают.
Бамп-маппинг он по карте высот строится.
Цитата:
Luciferchik писал:
Стало интересно сможет ли движок халвы вытянуть паралакс

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 31-10-2017 в 13:33:

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

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 31-10-2017 в 14:26:

Цитата:
Luciferchik писал:
а директ в ней это просто эмулятор

Эмулятор чего?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 31-10-2017 в 14:36:

Цитата:
XaeroX писал:
Эмулятор чего?
Ну в халве как бы нету же директ3д он просто эмулирует опенгл

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 31-10-2017 в 14:45:

Luciferchik
Это кто тебе такую глупость сказал?
В Won-версии халфы есть Direct3D-рендерер. Не веришь - сам включи и убедись.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 31-10-2017 в 16:30:

XaeroX
Так я говорил о стим версии и ксаше

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Crystallize 31-10-2017 в 16:48:

Цитата:
XaeroX писал:
Это кто тебе такую глупость сказал?

Распространено мнение что Direct3D в халфе-это фейк, транслятор команд GL-а.


Отправлено XaeroX 31-10-2017 в 16:54:

Luciferchik
В стим-версии его нет в принципе. Ни эмулятора, ничего.

Цитата:
Crystallize писал:
Распространено мнение что Direct3D в халфе-это фейк, транслятор команд GL-а.

Я не слушаю распространённые мнения, особенно там, где у меня есть своё, вполне чёткое.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 31-10-2017 в 18:49:

XaeroX
Есть к тебе ещё один вопрос, в туторе про DirectX Mesh Tools ты пользовался своей программкой smd2lod чтоб насадить анимацию, так вот сам вопрос есть она у тебя с большем лимитом чем 4082 полигона?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 31-10-2017 в 18:57:

Там вроде нет никаких лимитов.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 31-10-2017 в 19:12:

Цитата:
XaeroX писал:
Там вроде нет никаких лимитов.

А что это тогда?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено XaeroX 01-11-2017 в 02:13:

А, это. Так это стандартный лимит MAXSTUDIOVERTS.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 01-11-2017 в 13:14:

Цитата:
XaeroX писал:
А, это. Так это стандартный лимит MAXSTUDIOVERTS.

А можешь пожалуйста сделать чтоб он больше был хотя бы в два раза? Очень бы помогло

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 02-11-2017 в 15:12:

Цитата:
Luciferchik писал:
чтоб он больше был хотя бы в два раза? Очень бы помогло

В GoldSRC ты никак этот лимит не увеличишь. Но обойти можешь, разбивая модели на большее кол-во бодигрупп. Ну а в ксаше, ХЗ, МБ этот лимит увеличен. Если smd2lod не глотает такие сложные бодигруппы, наверное стоит задуматься об уменьшении кол-ва полигонов. По-моему больше 3500 треугольников на модель для первохалфы - жэсть.


Отправлено Luciferchik 02-11-2017 в 16:12:

Цитата:
Ku2zoff писал:
smd2lod не глотает такие сложные бодигруппы

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

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Crystallize 07-11-2017 в 14:29:

Цитата:
Ku2zoff писал:

Я никак не могу понять, что у вас, товарищи, за проблемы с шестой студией в новых виндах.

Вот ещё какой вопрос, какая разрядность у твоей семерки, и стоит ли сервис-пак?


Отправлено Ku2zoff 07-11-2017 в 16:08:

Crystallize была Win7 x64, SP1. Работало норм. На десятке не пробовал, думаю, тоже заведётся. Скорее всего дело в железе, а точнее в каких-то драйверах, которые конфликтуют с древней IDE.


Отправлено Crystallize 08-11-2017 в 13:25:

Ku2zoff Да, я пробовал на Lenovo и на Thinkpad X40, с сервис-паком и без, разные разрядности, всё равно работает.


Отправлено Luciferchik 10-11-2017 в 20:58:

Расскажите как работают ивенты в халве, вот в нас есть такой ивент "event 5004 4 ", что значит вот эта цифра "5004" и что эта "4"?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 11-11-2017 в 02:25:

Цитата:
Luciferchik писал:
что значит вот эта цифра "5004" и что эта "4"?

C++ Source Code:
event 5004 32 "weapons/reload.wav"

5004 - номер. 32 - кадр вызова. "weapons/reload.wav" - опции. Этот эвент клиентский, играет звук при анимации модели на определённом кадре. Смотри HUD_StudioEvent, разберёшься.
По серверным эвентам смотри CBaseMonster :: HandleAnimEvent.


Отправлено Crystallize 19-11-2017 в 08:20:

При закрытой консоли на экран печатается только последние 4 консольных сообщения, как сделать больше?


Отправлено XaeroX 19-11-2017 в 13:21:

contimes?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Crystallize 19-11-2017 в 15:33:

XaeroX Спасибо! Жесть какая, и ведь гуглится только в контексте сорса или кс16, в исходниках тоже не ищется. Но работает.


Отправлено Crystallize 25-11-2017 в 10:49:

А что, на клиенте диапазон углов 180, но клиентские функции AngleMatrix и VectorAngles всё равно работают с диапазоном 360?


Отправлено Sigurth 25-11-2017 в 12:59:

Хотелось бы поинтересоваться. Возможно ли на ГС реализовать 3д небо как в Паранойе, но без использования хакнутой опенгл32.длл? В спирите небо на бесконечном расстоянии от игрока, а в Паранойе сделано очень красиво, но работает только на ее кастомном рендерере.

__________________
Никогда не поздно сделать мод под хл1


Отправлено ncuxonaT 25-11-2017 в 13:02:

Sigurth сделать моделью?


Отправлено Дядя Миша 25-11-2017 в 13:11:

Цитата:
Crystallize писал:
А что, на клиенте диапазон углов 180, но клиентские функции AngleMatrix и VectorAngles всё равно работают с диапазоном 360?

Диапазон везде одинаков - 360 градусов, меняется представление, от -180 до 180, либо 0 - 360.

Цитата:
Sigurth писал:
Возможно ли на ГС реализовать 3д небо как в Паранойе, но без использования хакнутой опенгл32.длл?

Возможно.

Добавлено 25-11-2017 в 16:11:

Цитата:
Sigurth писал:
а в Паранойе сделано очень красиво

А вторую параною видел?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Sigurth 25-11-2017 в 13:19:

Цитата:
ncuxonaT писал:
Sigurth сделать моделью?


Не цельной моделью, как, например, в концовке Arctic Incident. А просто расставить в маленькой коробочке на карте модели/браши/чтоугодно и указать точки центра энтитями.

Цитата:
Дядя Миша писал:
Возможно.


Если вышеописанным методом или примерно таким же, то хорошо, это мне и нужно было знать, значит буду изучать и пытаться сделать.

Цитата:
Дядя Миша писал:
А вторую параною видел?


Видел.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Ku2zoff 25-11-2017 в 17:20:

Цитата:
Sigurth писал:
Если вышеописанным методом или примерно таким же, то хорошо, это мне и нужно было знать, значит буду изучать и пытаться сделать.

http://half-life.ru/forum/showthread.php?threadid=6878
Вот. Мааленькая доработка. Но я всё же рекомендую утянуть код (и энтити) из паранойи. В спирите небесная камера (env_sky) статична. А в паранойе подвижна (или сама проекция неба на скай-браши подвижна, точно не помню). Смысл в том, что нам нужны две энтити: одна в спирите уже есть - небесная камера, точка из которой небо проецируется. Остаётся добавить вторую - "центр" мира (envpos_world). И считать смещение относительно неё. Можно конечно считать относительно настоящего центра, но это актуально только если вся карта открытая, а не какой-то отдельный участок в уголке, иначе придётся ставить envpos_world по центру этого уголка.


Отправлено Sigurth 25-11-2017 в 17:48:

Цитата:
Ku2zoff писал:
Вот. Мааленькая доработка.

Благодарю. Сначала перетащу код из спирита, а потом доработаю его)

Цитата:
Ku2zoff писал:
Но я всё же рекомендую утянуть код (и энтити) из паранойи

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

__________________
Никогда не поздно сделать мод под хл1


Отправлено Ku2zoff 26-11-2017 в 02:22:

Цитата:
Sigurth писал:
Тогда придется там весь кастомный рендерер тащить

Не обязательно. Тащишь себе серверную часть и приём мессаг на клиенте. Потом берёшь спиритовское небо и подсовываешь ему envpos_sky вместо env_sky. Потом останется только получить на клиенте координаты envpos_world и написать код, смещающий точку небесной камеры от envpos_sky относительно расстояния между envpos_world и игроком.
Правда, в этом случае небесная камера может выехать за пределы небесной коробки. Или попасть внутрь браша/энтити в небесной коробке. В паранойе такое невозможно, т.к. камера неподвижна, смещается сама проекция относительно небесных брашей. Я ещё не добрался до неба, делал более важные вещи для себя. Как доберусь - покумекаю, может получится как-то грамотно всё провернуть.


Отправлено Sigurth 26-11-2017 в 05:42:

Цитата:
Ku2zoff писал:
Не обязательно.

Тогда еще лучше. Я просто еще не разбирался в коде неба ни спирита, ни паранойи. Буду смотреть

__________________
Никогда не поздно сделать мод под хл1


Отправлено Luciferchik 26-11-2017 в 11:58:

Цитата:
Sigurth писал:
Я просто еще не разбирался в коде неба спирита

Разбираться придется много так как в спирите есть одна энтитя которая разворачивается вокруг всего движка спирита и копипастить её ну очень долго есть замена этой энтити которую придумал тов. Дядя Миша под названиям "Xash PostActive System" она тебе поможет в копипасте неба на хл

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 26-11-2017 в 12:28:

Цитата:
Luciferchik писал:
так как в спирите есть одна энтитя которая разворачивается вокруг всего движка спирита

Ты про DesiredAction? Так это не энтитя, а функция такая, которая срабатывает через некоторое время после спавна, когда пользовательские мессаги уже зарегистрированы на клиенте. Эта функция является частью глобальной системы тчинков спирита. А система в свою очередь была введена с одной целью: поправлять положение, углы и скорости дочерних энтить в конце кадра при мовевитче. Т.к. в начале кадра нельзя - будет рассинхрон и застревания, а функции EndFrame в халфе нету.


Отправлено Luciferchik 26-11-2017 в 12:32:

Цитата:
Ku2zoff писал:
Ты про DesiredAction?

Ога

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Luciferchik 29-11-2017 в 17:00:

Возникла идея сделать backweapon ( то есть чтоб модель пушки была видна на спине игрока, а не известно где он её прячет ) немного подумал где найти примерный код и вспомнил что в коэс что-то такое есть на примере бомбы вот только интересно не нужно будет ли моделить игрока чтоб пушки отображались на его же спине как бомба?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 29-11-2017 в 21:38:

Luciferchik нужно сделать ещё по одной модели оружия от 3-го лица, которая приаттачена не к руке игрока, а к спине. Запихать m_iId нужной нам пушки в pev->iuser4 игрока, например, и проверять его на клиенте, и аттачить нужную модель в коде StudioModelRenderer. Только вот нужно определиться, какие пушки стоит отображать, а какие нет. К примеру, если в твоём моде, как в кс, первичное и вторичное оружие, то отображать надо первичное, когда оно не в руках. Навесить на игрока всё оружие, которое в данный момент не в руках (см. Iron Storm) довольно проблематично, я пробовал навесить три пушки (из четырёх: основное, запасное, пистолет и ближний бой) - начинается путаница в какой переменной какую пушку слать на клиент.


Отправлено Luciferchik 29-11-2017 в 22:15:

Ku2zoff
Для начала достаточно сделать только первичное оружия

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 30-11-2017 в 06:27:

Luciferchik тогда вот тебе совет: проверяем pev->weapons на наличие бита нашей первичной пушки. Если этот бит есть, проверяем, в руках ли она. Если нет, шлём инфу на клиент, а там рисуем приаттаченную модель. Примерно так:

C++ Source Code:
1
if (!m_fPrimaryUpdated)
2
{
3
  if (FBitSet(pev->weapons, WEAPON_PRIMARY1))
4
  {
5
    if (m_pActiveItem->m_iId != WEAPON_PRIMARY1)
6
      pev->iuser4 = WEAPON_PRIMARY1;
7
    else
8
      pev->iuser4 = 0;
9
  }
10
  m_fPrimaryUpdated = TRUE;
11
}

Вызывать из UpdateClientData. m_fPrimaryUpdated ставить в FALSE в CBasePlayerWeapon::DefaultDeploy, CBasePlayer::Spawn и CBasePlayer::ForceClientDllUpdate.


Отправлено Chyvachok 30-11-2017 в 22:28:

Попались как-то вроде сорцы ОпФора, мне вот интересно это кто-то тестил? Код виревок и боссов рабочий тут вообще?: https://github.com/malortie/halflif...ch-malortie-op4


Отправлено FreeSlave 30-11-2017 в 23:55:

Chyvachok, там старье. Можешь почекать ещё вот эти.
https://github.com/nekonomicon/hlsd...d/commits/opfor
https://github.com/LostGamerHL/hlsd...d/commits/opfor

В репозитории nekonomicon вполне годные питдрон, волтигора, гоном и шоктрупер. Говорю, потому что сам приложил к ним руку
Веревки и боссов не проверял.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Luciferchik 01-12-2017 в 10:19:

Есть вопрос к моделерам, есть у меня пушка она в игре отображается в левой руке но мне нужно чтоб была правая собственно как это реализовать?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено nemyax 01-12-2017 в 11:16:

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


Отправлено Luciferchik 01-12-2017 в 13:21:

nemyax
Не знаю выйдет ли у меня что-то не очень шарю в этом, может я скину исходник модели и ты сделаешь все быстренько буду очень благодарен

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено nemyax 01-12-2017 в 13:24:

Luciferchik
Ну выложи, но я успеха не гарантирую. Исходник в SMD?


Отправлено Ku2zoff 01-12-2017 в 15:13:

Luciferchik ну флипни модель тулзой (gFlip) или ручками в милке, ну чё ты?
Можешь конечно и в коде её флипнуть, аки в кс сделано. Только в софтваре это не работает.

Добавлено 01-12-2017 в 22:13:

Кстати, вся эта леворукость пошла от ускоглазого, то есть человека-гуся, когда он делал кс. Вот уж не знаю, что за необходимость была делать леворукие модели. Может быть, чтобы раскосые азиатские глазёнки не косили ещё больше?


Отправлено Luciferchik 01-12-2017 в 16:22:

Цитата:
nemyax писал:
Исходник в SMD?

Да

https://drive.google.com/open?id=1k...bLcXAVf_6rT3SQt

Цитата:
Ku2zoff писал:
ну флипни модель тулзой (gFlip)


чет оно ничего не работает

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Chyvachok 01-12-2017 в 21:08:

Цитата:
Ku2zoff писал:
Кстати, вся эта леворукость пошла от ускоглазого, то есть человека-гуся, когда он делал кс. Вот уж не знаю, что за необходимость была делать леворукие модели. Может быть, чтобы раскосые азиатские глазёнки не косили ещё больше?


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

Luciferchik раз gFlip не работает, открой модель с анимацией в милке (СМД), там есть Tools/Mirror All, этим отрази модель и сохрани в СМД, но тебе прийдеться так каждую анимацию открывать, отражать и сохранять заново, это может быть нудновато если в модели анимаций много, gFlip это все сразу делает со всеми анимации.


Отправлено Дядя Миша 01-12-2017 в 21:27:

А при компиляции попробуйте $scale_y "-1.0" и в командной строке
studiomdl.exe -f
Хотя наверное ерунда получится...

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 01-12-2017 в 21:49:

Дядя Миша
Чёт scale_<ось> вообще на компиляцию не влияет.


Отправлено Ku2zoff 02-12-2017 в 04:06:

Цитата:
Chyvachok писал:
вроде как левша сам по себе, поэтому он как для себя слева сделал

Ни в одной игре не видел, чтобы по-умолчанию стволы были слева. Только в кс. Маразм?
Цитата:
Chyvachok писал:
Кстати модели в КС правильные если они слева находятся, но видимо авторы не стали замораживаться и перемоделивать моделям справа затворы

Изначально модели были в двух вариантах. "Правильные", но слева, и "неправильные" отзеркаленные справа, с постфиксом _r. Потом просто написали флип прям в коде, видимо, после того, как стал доступен StudioModelRenderer в клиентке.
Ну самый маразм, это конечно в кс 1.6 Там все оружия слева, кроме ножа. То есть там хак в коде именно на модель v_knife.mdl. Видимо, забыли или поленились отзеркалить, а потом так и оставили. Уже почти 15 лет прошло.


Отправлено a1batross 02-12-2017 в 07:50:

Ku2zoff
Ты прав. Там хак на нож и щит.

Притом половина кода в движке, а другая в клиентке.


Отправлено JPEG 02-12-2017 в 09:01:

Цитата:
Chyvachok писал:
Тот кто в КС модели делал вроде как левша сам по себе, поэтому он как для себя слева сделал, а дальше видимо пошло чисто как модная фишка

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

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено qpAHToMAS 02-12-2017 в 09:30:

Цитата:
Ku2zoff писал:
Ну самый маразм, это конечно в кс 1.6 Там все оружия слева, кроме ножа. То есть там хак в коде именно на модель v_knife.mdl. Видимо, забыли или поленились отзеркалить, а потом так и оставили. Уже почти 15 лет прошло.

Цитата:
a1batross писал:
Ku2zoff
Ты прав. Там хак на нож и щит.

Притом половина кода в движке, а другая в клиентке.

Я еще отчетливо помню то, что если сменить какую-то из команд (cl_lw или cl_lc, что-то такое), то именно нож флипанётся.


Отправлено Luciferchik 02-12-2017 в 12:18:

Цитата:
Chyvachok писал:
есть Tools/Mirror All, этим отрази модель и сохрани в СМД

Отразить то отразил сохраняю, а анимация не играется может не так сохраняю что-ли?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Chyvachok 02-12-2017 в 15:26:

Luciferchik там когда с милки экспортируешь в Half-Life SMD там появляется окошко с тремя галочками, Reference - экпорт модели, Sequence - экпорт анимации, тебе надо эту выбрать когда анимы сохраняешь, и With Vertex Weights(HL2) это экспорт мягкой привязки, или как она там точно называется, в первой халве она не используется, так что эта галочка ни на что не влияет, мягкая привязка это когда вертекс не к одной кости, а к нескольким привязан, это для рук и персонажей чтобы суставы их плавно сгибались.


Отправлено Luciferchik 02-12-2017 в 18:12:

Цитата:
Chyvachok писал:
Sequence - экпорт анимации, тебе надо эту выбрать когда анимы сохраняешь

Ничего не изменилось все также

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Smykov 02-12-2017 в 18:25:

Ребят, такой вопрос. Можно ли скомпилировать проекты xash в 2010 студии, При том, что проекты от 6 версии?
Если - да, то не могу понять в чём проблема почему куча ошибок.
Стоит ещё упомянуть. Когда при первом запуске проектов Source-движка, вызывается мастер импорта, и в конце показывает отчёт результатов. Тут он тоже запускается, но более простой - с кнопками Да/Нет, и всё быстро проходит.
Если - нет, может можно сделать смену набора инструментов платформы. К примеру, на Source тоже приходилось сменять на v100 (2010 версия)/


Отправлено Chyvachok 02-12-2017 в 20:07:

Luciferchik ну не знаю, тут сложного ничего нет, скинь модель неотзеркаленную чтоли тогда.


Отправлено Luciferchik 02-12-2017 в 20:15:

Цитата:
Chyvachok писал:
Luciferchik ну не знаю, тут сложного ничего нет, скинь модель неотзеркаленную чтоли тогда.


Скидал же на предыдущий странице

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Chyvachok 02-12-2017 в 20:24:

semerjon там код надо переделывать под десятую студию, так его не скомпилишь просто десяткой, выбивает кучу ошибок, я лично не стал париться и просто поставил 6 студию.

Добавлено 02-12-2017 в 22:24:

Luciferchik модель что ты скинул не скомпилиться без текстур, там только smd, я думал просто ее GFlip-ом отразить, а он работает уже с скомпилеными моделями в mdl, а не в смд.

Кстати может он у тебя не работал т.к. ты пытался smd вместо mdl в нем открыть, если что попробуй с этой ссылки, у меня эта точно работает: https://gamebanana.com/tools/4907


Отправлено Luciferchik 02-12-2017 в 21:01:

Цитата:
Chyvachok писал:

Luciferchik я думал просто ее GFlip-ом отразить

Вот что после него происходит

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Chyvachok 02-12-2017 в 21:43:

Luciferchik А модель у тебя из сорса? Если да то ты ее Crowbar-ом декомпилировал? А то я давно заметил что после него Milkshape только 1 кадр анимации грузит. Попробуй разве что поставить в кровбаре Format for stricter importers, и после этого открой анимацию, играется ли она в самой милке. Ну и сам кровбар у тебя чуть устарел, там в смд файлах написана 44 версия, у меня 49-ая, не знаю насколько критично это, но можешь по новее скачать, кстати его научили декомпилировать модели из 1 халвы тоже, прога активно разрабатывается и периодически новые версии выходят, щяс глянул уже 51-ая есть.

А ошибку с гфлипом я такую впервые вижу, но и модель у тебя если честно зверь детализации, 10 субмоделей, 9 из них имеют по 2000 поли, модель тяжелая даже я бы сказал для сорса, не говоря о первой хавле, к примеру эмка из ХЛВЕ с обвесами и руками всего 4000 поли имеет, то есть как 2 куска твоей модели.


Отправлено ***FantoM*** 02-12-2017 в 21:58:

Luciferchik
https://yadi.sk/d/ET2L_Za73QG4qT


Отправлено Luciferchik 02-12-2017 в 22:16:

Цитата:
Chyvachok писал:
Luciferchik А модель у тебя из сорса? Если да то ты ее Crowbar-ом декомпилировал?

Да

Цитата:
Chyvachok писал:
Попробуй разве что поставить в кровбаре Format for stricter importers, и после этого открой анимацию, играется ли она в самой милке.


Попробуем
Цитата:
Chyvachok писал:
А ошибку с гфлипом я такую впервые вижу, но и модель у тебя если честно зверь детализации, 10 субмоделей, 9 из них имеют по 2000 поли

Да мне просто было лень играться с Dx Mesh tools-ом

Добавлено 03-12-2017 в 01:16:

Цитата:
***FantoM*** писал:
Luciferchik
https://yadi.sk/d/ET2L_Za73QG4qT


Оо, спасибо вам большое добрый человек, что сотворили такое чудо

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 07-12-2017 в 14:57:

Подскажите, есть ли возможность без проблем использовать два light_environment с разными значениями на одной карте? Ну, например, сначала у нас день. Потом мы спустились под землю, там задели триггер, который выключил одно солнце и включил другое. Мы вылезли на поверхность, а там уже ночь. Я ставлю два солнца, но переключение между ними как-то фигово работает.


Отправлено thambs 07-12-2017 в 15:11:

Ku2zoff
А вот ДМ, вроде, в разрабатываемых коптеляторах делает. Но я пока не успел затестить, т.к. не дошёл ещё до сборки карт с аутсайдом.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено ncuxonaT 07-12-2017 в 15:22:

Ku2zoff кажется, доктор давно делал что-то такое. Или там только скайбоксы менялись...


Отправлено JPEG 07-12-2017 в 16:27:

Цитата:
Ku2zoff писал:
Подскажите, есть ли возможность без проблем использовать два light_environment с разными значениями на одной карте? Ну, например, сначала у нас день. Потом мы спустились под землю, там задели триггер, который выключил одно солнце и включил другое. Мы вылезли на поверхность, а там уже ночь. Я ставлю два солнца, но переключение между ними как-то фигово работает.

я точно знаю, что на ксм давным-давно поднималась такая тема, но никто не смог её реализовать на тот момент. А, что если использовать light-энтити?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 07-12-2017 в 17:28:

Цитата:
Ku2zoff писал:
Я ставлю два солнца, но переключение между ними как-то фигово работает.

Ну довай карту-пример, потестирую, заодно и отлажу. Если ты используешь UMHLT мои, то оно там и не будет работать нормально, т.к. всем солнцам задаётся лайтстиль 20, это для паранои.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 07-12-2017 в 17:31:

Цитата:
Дядя Миша писал:
UMHLT

Назови лучше UMKLAIDET.
Заодно и культурный код отдельно взятых товарищей проверим.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено nemyax 07-12-2017 в 18:20:

UMGEBRACHT тогда уж.


Отправлено Ku2zoff 08-12-2017 в 10:55:

Цитата:
Дядя Миша писал:
Ну довай карту-пример, потестирую, заодно и отлажу. Если ты используешь UMHLT мои, то оно там и не будет работать нормально

Использую кетайские конпеляторы v34. Я так понимаю, что из кода энтити берутся только значения sv_skycolor_r/g/b и sv_skyvec_x/y/z, которые влияют на освещение моделей. Функции Use нету, и нормально это дело не переключается, и значения кваров не меняет. А лайтстилями в данном случае рулит компилятор же? Вот у точечных лайтов в Use задаются лайтстили. А тут как?


Отправлено Дядя Миша 08-12-2017 в 13:52:

Цитата:
Ku2zoff писал:
Функции Use нету, и нормально это дело не переключается, и значения кваров не меняет

Функция-то есть, в FGD нету. А вот насчёт установки кваров - да, недоработка. Надо из KeyValue перенести в Use, и вызвать его в Spawn.
Т.е. чисто на уровне серверной дллки работа.

Добавлено 08-12-2017 в 16:52:

Вспомнил как делал фпараное смену дня и ночи.
C++ Source Code:
1
// if time is used on a map
2
  if( m_flLevelTime != -1.0f )
3
  {
4
    m_flLevelTime += gpGlobals->frametime * GLOBAL_TIME_STEP;	// evaluate level time
5
    if( m_flLevelTime > 24.0f ) m_flLevelTime = 0.0f; // clamp the time
6
 
7
  // probably it will be think every frame
8
  if( fabs( m_flClientLevelTime - m_flLevelTime ) > GLOBAL_TIME_STEP * GLOBAL_TIME_STEP )
9
  {
10
    //			ALERT( at_console, "CurTime: %g\n", m_flLevelTime );
11
 
12
    MESSAGE_BEGIN( MSG_ONE, gmsgLevelTime, NULL, pev );
13
    WRITE_LONG( *(int *)&m_flLevelTime ); // convert float to long
14
    MESSAGE_END();
15
 
16
    gGlobalState.EntitySetTime( MAKE_STRING( "GLOBAL_TIME" ), m_flLevelTime );
17
    m_flClientLevelTime = m_flLevelTime;
18
  }
19
}

Я там солнце вообще не трогал, а в классе игрока увеличивал таймер таким образом, что еденичка равнялась одному часу, а в каждой минуте было по 10 секунд, ну типо как в сталкере.
Время отправлялось на клиент и дальше положение солнца считалось исключительно исходя из текущего времени, т.е. полностью параметрически.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 08-12-2017 в 15:05:

Цитата:
Дядя Миша писал:
Надо из KeyValue перенести в Use, и вызвать его в Spawn.

Ну эт понятно, я этим займусь на ближайших выходных. У меня пока без правки кода такие результаты: есть два солнца. У второго (ночного) стоит спавнфлаг 1 (который Initially Dark у обычных лайтов), у первого (дневного) не стоит. Имена одинаковые. То есть по логике один включён при старте карты, а второй выключен. При нажатии кнопки они должны поменять свои состояния.
В итоге, вот что я получаю: выключены на старте оба (карта тёмная). Но освещение модели берут от второго, что с флагом. При нажатии кнопки карта освещается первым, но модели всё равно берут эмбиент лайт от второго. Как накодю изменение цвета и векторов в юзе, отпишусь, как оно будет. Ещё проверю переключение обычных лайтов таким способом, возможно я что-то не так сделал в логике.

Добавлено 08-12-2017 в 22:05:

Кстати, вопрос. Почему обычные лайты с боооооольшим уровнем яркости не годятся для освещения карты? Они нормально переключаются. Но. От них нет теней, т.к. они освещают противоположные от них стены. Такое ощущение, что лайт не точечный, а расползается на всю карту.


Отправлено Дядя Миша 08-12-2017 в 21:26:

Цитата:
Ku2zoff писал:
Но освещение модели берут от второго, что с флагом

Ну он же ниже по списку, вот и берут. Перепиши код солнца.

Цитата:
Ku2zoff писал:
Почему обычные лайты с боооооольшим уровнем яркости не годятся для освещения карты?

пример бы

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 11-12-2017 в 05:44:

Почему игрок бегущий точно вбок от камеры бежит по спирали, а не по окружности?


Отправлено marikcool 12-12-2017 в 16:05:

у тебя луч от камеры до игрока и от игрока строго в центр должен светить, счас куда то в бок. углы игроку как расчитываешь?

__________________
vk.com/skullcapstudios


Отправлено Crystallize 12-12-2017 в 16:16:

marikcool
Сначала углы считал просто сложением углов от джойстика и камеры, потом сделал посложнее надеясь победить глюк:

code:
cl_entity_t *viewentity; viewentity = gEngfuncs.GetEntityByIndex( gHUD.viewEntityIndex ); // get the floating point zero-centered, potentially-inverted data for the current axis v_stick[ 0 ] = (float) *pdwRawValue[1]; // move centerpoint to zero v_stick[ 0 ] -= 32768.0; // convert range from -32768..32767 to -1..1 v_stick[ 0 ] /= 32768.0; // get the floating point zero-centered, potentially-inverted data for the current axis v_stick[ 1 ] = (float) *pdwRawValue[0]; // move centerpoint to zero v_stick[ 1 ] -= 32768.0; // convert range from -32768..32767 to -1..1 v_stick[ 1 ] /= 32768.0; stickbend = v_stick.Length(); if (stickbend > joy_yawthreshold->value ) { if (stickbend > 1) { stickbend = 1; } AngleMatrix ( viewentity->angles, rmatrix ); VectorTransform ( v_stick, rmatrix, v_plangle ); v_plangle = -v_plangle; v_plangle[2] = 0; VectorAngles ( v_plangle, viewangles ); gEngfuncs.SetViewAngles( (float *)viewangles ); }


Отправлено Crystallize 14-12-2017 в 15:35:

Ок, в каком порядке хл обновляет положение и углы энтитей при расчете сцены? Конкретно активного триггер_камеры и игрока?


Отправлено Дядя Миша 14-12-2017 в 17:13:

Crystallize да ты бери и напрямую их пиши в камеру

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 14-12-2017 в 17:20:

Кто-нибудь пробовал 3dsky в trinity renderers? Я заменил оригинальные дллки паранойи на тринитивские (названия энтить одинаковые), только добавил на сервере env_model, которого нет, чтобы все энтити в скайбоксе отображались, да исправил гадский вылет на клиенте - ноль эмоций. Поправил названия мессаг под паранойевские - с оригинальной паранойевской клиенткой работает.
В чём косяк? Не уж-то просто для фана автор тринити оставил код 3D неба, да ещё и сильно переписал его? Для тех, кто не в теме: в тринити выкинута хакнутая opengl32.dll. В паранойе без неё не работает вообще весь рендерер, но на самом деле, хакнутых функций там всего две: glDepthRange и wglChoosePixelFormat. В коде паранойи есть комментарий:

C++ Source Code:
// dont draw skybox entites, DepthRange will be incorrect

Собсно, вот оно. Небо без хакнутой glDepthRange в паранойе не работает. Но в тринити рендерер устроен по-другому. Вот и хотелось бы узнать, что может быть не так.


Отправлено JPEG 14-12-2017 в 20:03:

Может, там что не дописано? Всё-таки тринити недоделанный проект, помню, в том же коде для партиклей приходилось что-то менять, чтобы появились брызги на воде, для которых в самой тринити были готовы и конфиги и анимация. Есть две версии исходников: 1.4final и 3.08final они отличаются и их разные люди делали. В истории изменений нашёл это

"A major improvement: Minor bugfixes on some parts.
Replaced Paranoia's sloppy envpos_* maths with my
own, now objects in the sky should function fine
even if they are moving entities." про какие объекты идёт речь? Ещё в фгд есть энтити envpos_world, может, она для 3д-ская

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 14-12-2017 в 20:45:

Цитата:
Ku2zoff писал:
но на самом деле, хакнутых функций там всего две: glDepthRange и wglChoosePixelFormat

Параноя рисует мир в укороченном диапазоне глубины 0 - 0.8. В диапазоне 0.8 - 0.9 рисуются модельки 3д скайбокса, а в диапазоне 0.9 - 1.0, собственно задники скайбокса. Вся замута особо не нужна, BUzer по каким-то причинам незахотел сделать нормальное небо через дополнительный проход, ну или хотя бы отсортировать всё это гамно по дальности. Самое ужасное что этот укороченный дептч-рендж мне достался в наследство во вторую параною, а я как вы думаете, что я с ним сделал, ну что? Правильно - полинился.
А wglChoosePixelsFormat - это еще более странная замута. Она нужна для того чтобы халфа создала альфа-буффер, а альфа-буффер нужен для того, чтобы деномические проекционные источники не светили одновременно вперёд и назад (если включить тхирдперсон очень хорошо виден светлый ректангл вокруг игрока). Причём сделано это было путём рендеринга всей геометрии в альфа-буффер и последующим умножением света на него. Совершенно дикая и тормозная замута, тогда как исправление косяка сводится к параметру текстуры GL_CLAMP_TO_BORDER. Ну может у кого-то в 2007-м видимокарты еще не поддерживали бардюр, яхз.
У меня к вам другой вопрос - зачем вы тринити ковыряете до сих пор?
Советские учёные уже давно убедительно доказали что он гамно.
А вы ковыряете. А потом теми же руками пишете на форум.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 14-12-2017 в 21:15:

Цитата:
Дядя Миша писал:
зачем вы тринити ковыряете до сих пор?

Затем, что сорцев hlfx нету. Это единственный мод для халфы с более-менее вменяемым кастомным рендерером и одновременно открытыми сорцами. Всякие raven city и прочие арранжменты ещё хуже. Паранойя отпадает по причине тех вот самых хаков, про которые написано выше, т.к. тащить хакнутую дллку с модом - лютый изврат.


Отправлено Дядя Миша 14-12-2017 в 21:24:

Цитата:
Ku2zoff писал:
Затем, что сорцев hlfx нету.

Ну как это нету. А как же мы по твоему с Жэкой ошибки в его моде исправляли?

Цитата:
Ku2zoff писал:
Это единственный мод для халфы с более-менее вменяемым кастомным рендерером и одновременно открытыми сорцами

Что вы там нашли вменяемого я понять-то не могу. Под халфу вообще нет грамотно написанных рендереров ни закрытых ни открытых.
Нашёл свою старую тему с обозором тринити. Перечитал список возможностей. Ну и что там есть? Глючные декали на моделях? Глючные зеркала и водичка из mech mod? Ну и на кой оно нужно? Эта водичка особенно реалистично смотрится на фоне стандартных халфовских текстур.

Цитата:
Ku2zoff писал:
Паранойя отпадает по причине тех вот самых хаков,

Ну так перепиши. Я же русским языком говорю, исправление проще того что там нагородили - надо просто клампнуть текстуру к бардюру, а условие с альфабуффером выкинуть. А насчёт неба - ну включи спиритовское.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PLut 14-12-2017 в 21:25:

Question Вопрос на мильён

Что не так с Remap?

В игре:


В модел вьювере дяди:

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 14-12-2017 в 21:32:

PLut глюк у тебя

Добавлено 15-12-2017 в 00:32:

Ладно, дам на водку. Для приаттаченных энтить надо что-то подшаманить, чтобы у них ремап корректно работал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 14-12-2017 в 21:43:

Цитата:
Дядя Миша писал:
Ну так перепиши.

Придётся бамп со спекуляром из паранойи выкинуть и добавить шадовмапы. А так же вернуть вырезанные лайтстили. Да, была у меня такая мысль. Но работы много, проще взять код из тринити, и вырезать из него ненужное.
Цитата:
Дядя Миша писал:
А насчёт неба - ну включи спиритовское.

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


Отправлено Дядя Миша 14-12-2017 в 21:46:

Цитата:
Ku2zoff писал:
проще взять код из тринити, и вырезать из него ненужное.

Это при условии что сам тринити был стабильным. А в реальности обе задачи соответствуют аксиоме Эскобара.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PLut 14-12-2017 в 22:23:

Дядя Миша Спасибо, разобрался!

__________________
Base Defense on Steam, ModDB


Отправлено Crystallize 15-12-2017 в 03:10:

Цитата:
Дядя Миша писал:
Crystallize да ты бери и напрямую их пиши в камеру


В камере я уже поменял vecGoal на pev->angles чтобы она мгновенно поворачивалась. Но у меня образовался вот этот странный глюк с углами и я предположил что из-за жёсткого халфовского порядка обновления энтитей положение игрока или скажем угол камеры - может браться не из текущего, а из предыдущего кадра, отсюда погрешность.


Отправлено Ku2zoff 16-12-2017 в 14:50:

Цитата:
Дядя Миша писал:
Ну довай карту-пример, потестирую, заодно и отлажу. Если ты используешь UMHLT мои, то оно там и не будет работать нормально, т.к. всем солнцам задаётся лайтстиль 20, это для паранои.

Потестировал. Вот оказывается что: второе солнышко игнорится компилятором от слова совсем. То есть первое включается и выключается как обычный лайт, а второе нет - ничего не происходит. Параметр -noskyfix у hlrad выставлен. Эмбиент и угол освещения моделей меняются при переключении солнышек, я вынес этот функционал из Spawn в Use.

Добавлено 16-12-2017 в 21:50:

С zhlt 2.5.3 то же самое.


Отправлено Дядя Миша 16-12-2017 в 15:01:

Цитата:
Ku2zoff писал:
второе солнышко игнорится компилятором от слова совсем.

Китаец писал что там какой-то надо добавлять на карту энтить info_sunlight, вероятно это в свенкупе такая специальная энтить. Потому что компилятор про нее не знает, только ругается, если солнц много, а info_sunlight нету. Ну да напиши такую энтить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 16-12-2017 в 15:16:

Цитата:
Дядя Миша писал:
пример бы

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

Добавлено 16-12-2017 в 22:10:

Цитата:
Дядя Миша писал:
Китаец писал что там какой-то надо добавлять на карту энтить info_sunlight

Это короче такая энтитя чисто для того, чтоб компилятор из неё взял единственно верные значения эмбиента и углы для освещения моделей при наличии нескольких солнышек:
Цитата:
Overrides light_environment light affecting, making all models affected by light_environment(s) picks lightning settings from this info_sunlight instead of environment lights. Helpful when light_environment produces dim light, but we need models to be more brightened. Also useful when multiple light_environments are used, and light doesn't suit both lights, so mapper can specify light color and brightness by his own for environmental lights.


Добавлено 16-12-2017 в 22:16:

З.Ы. Ну вот с двумя обычными лайтами всё получилось. Включаются и выключаются норм, единственное, что тени получаются темнее, т.к. механизм освещения не такой как от неба.


Отправлено Дядя Миша 16-12-2017 в 15:27:

Цитата:
Ku2zoff писал:
Ну вот с двумя обычными лайтами всё получилось. Включаются и выключаются норм, единственное, что тени получаются темнее, т.к. механизм освещения не такой как от неба.

C++ Source Code:
1
void CEnvLight::KeyValue( KeyValueData* pkvd )
2
{
3
  if (FStrEq(pkvd->szKeyName, "_light"))
4
  {
5
    int r, g, b, v, j;
6
    char szColor[64];
7
    j = sscanf( pkvd->szValue, "%d %d %d %d\n", &r, &g, &b, &v );
8
    if (j == 1)
9
    {
10
      g = b = r;
11
    }
12
    else if (j == 4)
13
    {
14
      r = r * (v / 255.0);
15
      g = g * (v / 255.0);
16
      b = b * (v / 255.0);
17
    }
18
 
19
    // simulate qrad direct, ambient,and gamma adjustments, as well as engine scaling
20
    r = pow( r / 114.0, 0.6 ) * 264;
21
    g = pow( g / 114.0, 0.6 ) * 264;
22
    b = pow( b / 114.0, 0.6 ) * 264;
23
 
24
    pkvd->fHandled = TRUE;
25
    sprintf( szColor, "%d", r );
26
    CVAR_SET_STRING( "sv_skycolor_r", szColor );
27
    sprintf( szColor, "%d", g );
28
    CVAR_SET_STRING( "sv_skycolor_g", szColor );
29
    sprintf( szColor, "%d", b );
30
    CVAR_SET_STRING( "sv_skycolor_b", szColor );
31
  }
32
  else
33
  {
34
    CLight::KeyValue( pkvd );
35
  }
36
}

Ты вот это вот видишь? Ты думаешь зачем нужны эти sv_skycolor? Вот как раз их на клиенте для освещения от солнца используют. А если у тебя два солнца, то последнее в списке перезапишет эти значения на себя да так и оставит. Тебе надо это вынести в Use и когда переключаешь два солнца менять эти квары тоже. Ну что непонятнова?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 16-12-2017 в 15:57:

Дядя Миша да сделал я это всё. Освещение моделей меняется при переключении солнышек.
Второе солнышко не освещало мир. И знаешь, в чём была проблема? Именно в параметре -noskyfix. Видимо, если одно из солнышек изначально выключено флагом, то параметр не нужен. Всё заработало. Ну и эта, ещё важно, чтобы у солнышек были разные имена.


Отправлено Smykov 16-12-2017 в 17:43:

Делал когда-то я такую модель:

Уже неплохо для prop-модели.
1) Я так понял, через cycler лучше добавлять prop-модели, которые просто ничего не делают, а лишь наполняют локацию. Но что-то как-то неприятно смотреть в редакторе на разноцветные кубы, нежели чем на сами модели. Нельзя ли никак это сделать? Если что, то можно и свой fgd подправить.
2) Посмотрел исходник карты c1a0 (аномальные материалы). Мне кажется или большая часть объектов, наполняющих уровни сделаны из брашей? Просто для чего тогда в SDK такое большое количество prop-моделей. Вообщем, тут я хочу понять на что делать упор, либо создавать брашами модели, даже те, которые в 3ds уже неплохо сделал, либо всё же можно и с cycler работать.
3) в qc-файле мы можем указывать bbox'ы. В cycler они будут ли учитываться?


Отправлено Ku2zoff 16-12-2017 в 18:23:

1). Нужно добавить особый параметр в свойства энтити, чтобы хаммер 3.5 или джек отображали студиомодель в 3D виде (джек и в 2D может):

code:
model(studio) : "Model"

Значение имеет именно параметр (studio).

2). Ну в общем-то почти все украшательства в первохалфе сделаны брашами. У них есть несколько плюсов по сравнению с модельной детализацией: первый, и самый главный - правильное освещение. На брашевые пропы могут накладываться тени. Чтобы наложить аналогичную тень на модель, нужно химичить кастомный рендерер. Второй - на такие пропы накладываются декали. Третий - они без проблем коллайдят с игроком и всем остальным. Цыклеры коллайдят как монстры, по хуллу. Даже если твой цыклер - цветочный горшок - он всё равно имеет размеры, указанные в коде, т.е. размеры гуманоидного монстра.

3). Я этого наверняка не помню, но должны. Цыклер - это монстр, а значит трасса у него как у монстра. То есть, можно обозначить руки, ноги, живот, туловище и голову.

В обычной халфе лучше использовать monster_furniture вместо цыклера, т.к. первый может играть scripted_sequence. А вообще, я бы советовал своровать из спирита env_model для модельной детализации, если ты пишешь новый код на сервере.

Добавлено 17-12-2017 в 01:23:

Цитата:
semerjon писал:
Делал когда-то я такую модель:

Хе, а у меня похожий сервант есть. Только слева в верхней части нет шкафчика, и он не на ножках, а полностью на полу стоит. semerjon, ты по фото делал или по реальному шкафу?


Отправлено Дядя Миша 16-12-2017 в 18:25:

Цитата:
Ku2zoff писал:
Именно в параметре -noskyfix.

Емнип эта штука отключает какой-то багфикс для солнца. Я хз, там наслоения совместимости. они противоречат друг-другу порой.

Цитата:
Ku2zoff писал:
Ну и эта, ещё важно, чтобы у солнышек были разные имена.

Ну естественно, им же разные лайтстили даются по разным именам.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 16-12-2017 в 18:31:

Цитата:
Дядя Миша писал:
там наслоения совместимости. они противоречат друг-другу порой.

Вот это меня и запутало. Получается, если солнышек много, то параметр нужен, чтобы каждая часть карты была освещена по-своему. (Здесь как раз можно применить info_sunlight, чтобы модели были везде освещены одинаково, а не по параметрам от считанного первым солнышка). А если солнышек два (глобальных: день и ночь), он не нужен, т.к. ломает весь механизм, и работает только первое считанное компилятором солнышко.
Цитата:
Дядя Миша писал:
Ну естественно, им же разные лайтстили даются по разным именам.

Эх, и где бы про это в учебниках по маппингу было написано? Ну правильно, нигде. Т.к. я не видел ни одной кс-карты со сменой дня и ночи.


Отправлено Smykov 16-12-2017 в 18:35:

Ku2zoff нужно было свой советский сервант сделать для курсовика, тоже игру пытался пилить. Делал по фотке:

Более детально, не стал делать. В принципе, всё пытался делать, связанное со старой тематикой.
P.S. не ожидал, что картинка такая большая будет


Отправлено Ku2zoff 16-12-2017 в 18:40:

Ждём-с новых компиляторов, чтобы компилить ими. Китайские сейчас управляются с заготовкой моей карты за 70 секунд. Будет интересно сравнить с новыми, что обсуждаются на ксм.

Добавлено 17-12-2017 в 01:40:

semerjon шикарная мебель. У меня стенка есть такого плана, только жёлтая, тоже на ножках.
Я тебе посоветую делать детали брашами (в халфе), но не миром и func_wall, а func_detail. Только слишком сложные или мелкие конструкции делай моделями. А для экономии MAX_MODELS в движке, ты можешь загружать брашевые пропы из внешних BSP, есть такой фокус. Только у них освещение всегда одинаковое, взятое из их "родного" BSP-файла. В ксаше (а тем более в п2) можно и моделями, Дядя Миша работает над этим, освещение выходит весьма и весьма годное.


Отправлено Smykov 16-12-2017 в 18:47:

Не будет ли проблем с диспропорцией, если я буду придерживаться реальным размерам объектов (для юнита буду делить на 2,54)?
И ещё, получается это тоже самое, если бы мы в 3ds делали все составляющие моделей из примитивов, и накладывали их друг на друга. Компилятор сможет "отрезать" лижние полигоны, которые не будут попадать в обзор камеры?


Отправлено Ku2zoff 16-12-2017 в 18:54:

Цитата:
semerjon писал:
Не будет ли проблем с диспропорцией, если я буду придерживаться реальным размерам объектов (для юнита буду делить на 2,54)?

Математически - нет. Визуально - да. Объекты будут выглядеть на халфовских картах довольно маленькими, а сами карты (коридоры, дверные проёмы, окна) будут тесными. Ориентируйся на размеры оригинальной халфы, пусть объекты и участки уровня будут больше, чем ИРЛ, но уровень будет просторным визуально в игре. Почитай статью "Разгадка реального размера юнита на CSM", чтобы вникнуть в подробности.
Цитата:
semerjon писал:
Компилятор сможет "отрезать" лижние полигоны, которые не будут попадать в обзор камеры?

Удалять невидимые треугольники из моделей нужно ручками. studiomdl ничего не отрезает. Оптимизируй по максимуму сам. Это ещё один повод делать брашами, т.к. компиляторы карт отрезают невидимые фейсы.


Отправлено Smykov 16-12-2017 в 18:58:

Ku2zoff видимо, мне нужно было дописать про компилятор карт, про них и имел ввиду.
Хотел ещё спросить. Будет ли разница в удобстве между Джеком и VHE? Могли бы, несколько отличий сказать. Думаю сейчас купить себе.


Отправлено Ku2zoff 16-12-2017 в 19:15:

semerjon покупай джек конечно. Он очень удобен. Преимущества перед хаммером значительные, начиная с отображения/скрытия служебных текстур и отображения триггеров полупрозрачными, и заканчивая кросслатформенностью и стабильностью в новых ОС. Также, можно без проблем мапать большие карты (больше 8192х8192х8192). А ещё можно багрепортить и засылать реквесты автору. Вполне возможно, что фича, нужная тебе, будет реализована в новом билде.
Главной причиной, по которой я когда-то перешёл на джек, было то, что он не вылетает, в отличие от хаммера 3.5. Сейчас я уже привык к этому редактору, и хаммер кажется мне деревянным и неподатливым. Одна только проблема - не дружит со встроенной графикой говноинтел.


Отправлено thambs 16-12-2017 в 19:18:

semerjon
Длья объектов размером больше 2м можно придерживаться пропорции 1:1; для объектов размером с игрока , вроде дверных проёмов, узких комнат масштаб 1:1.1 .. 1:1.2 по горизонтали; для мелочёвки размером 50см и меньше -- 1:25 .. 1.5.

>Будет ли разница в удобстве между Джеком и VHE?
Да (в сторону улучшения, в том плане, что после джека от vhe хочется блевать).
>Могли бы, несколько отличий сказать.
Не вылетает (и не гробит сохранения); не тормозит (в том числе на больших картах); есть кнопки что бы: рисовать модели, рисовать небо, анимировать текстуры, прятать служебные текстуры; есть дополнительные инструменты брашворка: триангуляция и склейка брашей, примитив для создания камней; архиполезные при текстурировании режимы "scale lock" и "uv-lock"; автобекапы; толковый вьюер текстур.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Ku2zoff 16-12-2017 в 19:22:

Цитата:
thambs писал:
Длья объектов размером больше 2м можно придерживаться пропорции 1:1; для объектов размером с игрока , вроде дверных проёмов, узких комнат масштаб 1:1.1 .. 1:1.2 по горизонтали; для мелочёвки размером 50см и меньше -- 1:25 .. 1.5.

Вот, совет опытного маппера, как и что нужно скейлить. Так что, semerjon, дерзай. Но не делай 1:1, будет выглядеть убого.


Отправлено Smykov 16-12-2017 в 19:24:

Спасибо, учту


Отправлено thambs 16-12-2017 в 19:36:

Ещё моменты:
минимальная ширина коридора что бы в нём гарантированно смогли разойтись 2 игрока -- 72, монстра -- 96 юнитов;
минимальная ширина дверей -- 40 юнитов, оптимально 48; высота дверей 96-80;
минимальная ширина комнатушки -- 120 юнитов;
если делаешь реалмэппинг про рашку, то ширину комнат в пяти/многоэтажках лучше делать в 128--144 юнита, а ширину несущих стен 8-12 юнитов.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 16-12-2017 в 20:40:

Цитата:
Ku2zoff писал:
А для экономии MAX_MODELS в движке, ты можешь загружать брашевые пропы из внешних BSP, есть такой фокус

внешняя и внутренняя модель расходуют слоты одинаково.

Цитата:
Ku2zoff писал:
Математически - нет. Визуально - да.

Ктож мне говорил, поиграл в халфу в 3д очках и все пропорции сразу встали на свои места.

Цитата:
Ku2zoff писал:
studiomdl ничего не отрезает

Полигоны нет, а кости - вполне может.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-12-2017 в 03:52:

Цитата:
Дядя Миша писал:
внешняя и внутренняя модель расходуют слоты одинаково.

Дядя Миша, просвети пож-та. Если мы делаем десять брашевых столов (func_wall) и располагаем их в разных местах карты под разными углами, это будут десять разных моделей? Если да, то десять таких же (точечных) столов, грузящих одну заранее откомпиленную модель из table.bsp, будут занимать не десять слотов в таблице моделей, а один. У меня всё руки не доходят проверить эту теорию.


Отправлено Sigurth 17-12-2017 в 07:28:

Ku2zoff Я пытался задавать моделью откомпиленный кубик, но на нем не рисовались декали, фонариком и вообще любыми источниками света не освещался. Вышло хуже, чем просто модель ставить, но коллизия была нормальная. И то не уверен, ведь это кубик. Хотя может быть я делал это неправильно.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Дядя Миша 17-12-2017 в 12:59:

Цитата:
Ku2zoff писал:
Если мы делаем десять брашевых столов (func_wall) и располагаем их в разных местах карты под разными углами, это будут десять разных моделей? Если да, то десять таких же (точечных) столов, грузящих одну заранее откомпиленную модель из table.bsp, будут занимать не десять слотов в таблице моделей, а один.

Если одинаковую модель пихать в разные места, то экономия будет конечно. Просто брашевые модели обычно все уникальны, если конечно речь не идёт за аптечки-патроны.

Цитата:
Sigurth писал:
Хотя может быть я делал это неправильно.

халфа изначально с ними не очень хорошо дружит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-12-2017 в 13:38:

Цитата:
Дядя Миша писал:
Просто брашевые модели обычно все уникальны, если конечно речь не идёт за аптечки-патроны.

Вагончики на картах c0a* все одинаковые. А их там до 3х штук на карте. Ещё зарядники здоровья и брони. Всякие лампы под потолком, двери. Можно нехило так сэкономить на больших картах, до 20-30 моделей. Хотя, конечно, самая экономия будет, если прекэшить как можно меньше моделей и спрайтов.


Отправлено Chyvachok 17-12-2017 в 15:11:

Кстати многие обьекты вроде ящиков, и прочего тоже очень много повторяются на уровнях халвы.


Отправлено Ghoul [BB] 17-12-2017 в 15:50:

Цитата:
Ku2zoff писал:
Вагончики на картах c0a* все одинаковые. А их там до 3х штук на карте. Ещё зарядники здоровья и брони. Всякие лампы под потолком, двери. Можно нехило так сэкономить на больших картах, до 20-30 моделей. Хотя, конечно, самая экономия будет, если прекэшить как можно меньше моделей и спрайтов.


Eсли вы отказываетесь от w_*.mdl оружия, а так же запихиваете все айтемы, гильзы и пикапы по отдельным субмоделям, прирост в экономии моделей будет существенным.
добавьте сюда отрисовку всех спецэффектов многокадровыми спрайтами из набора разных фреймов - и это ещё экономия. если же ещё для таких вещей сделать client precache, подгружая это дело только из клиентки, то ещё ужмёмся. собственно, во всём остальном моделей вполне должно хватить, если, конечно, вы не делаете детализацию карты одними моделями. Да и в этом случае прежде fps не позволит т.к. будет слишком много еполи в кадре...
А если ещё и перейдёте на Ксаш... то ... ну вы поели...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Sigurth 18-12-2017 в 04:46:

Как узнать количество bodyparts у модели на клиенте?

Пробовал

C++ Source Code:
model->numframes

возвращает 0

Пробовал
C++ Source Code:
((studiohdr_t *)IEngineStudio.Mod_Extradata(model))->numbodyparts

возвращает 0

Задаю непосредственно бодю вот так
C++ Source Code:
1
if( model->type == mod_sprite )
2
  pTemp->entity.curstate.frame = RandomLong( 0, frameCount - 1 );
3
else if( model->type == mod_studio )
4
  pTemp->entity.curstate.body = RandomLong( 0, frameCount - 1 );


Просто делаю кастомный CL_BreakModel, скопипастил код из ксаша, с некоторыми изменениями. Так вот, в Ксаше код такой
C++ Source Code:
1
// frameCount это количество bodyparts
2
Mod_GetFrames( modelIndex, &frameCount );
3
 
4
// где функция выше это
5
void Mod_GetFrames( int handle, int *numFrames )
6
{
7
  model_t    *mod = Mod_Handle( handle );
8
 
9
  if( !numFrames ) return;
10
  if( !mod )
11
  {
12
    *numFrames = 1;
13
    return;
14
  }
15
 
16
  *numFrames = mod->numframes;
17
  if( *numFrames < 1 ) *numFrames = 1;
18
}


За исключением того, что все гибсы падают с одинаковым body == 0, все остальное работает как надо.

ЧЯДНТ

__________________
Никогда не поздно сделать мод под хл1


Отправлено Дядя Миша 18-12-2017 в 10:13:

Если у тебя numbodyparts возвращает ноль, то модель вообще не будет рисоваться. Что-то ты не то возвращаешь. Далее, если ты делаешь на чистой халфе, то она и не пишеть кол-во бодей в numframes, это только ксаш так делает. Но можно взять R_StudioBodyVariations и рассчитать самому.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Sigurth 18-12-2017 в 12:29:

Цитата:
Дядя Миша писал:
Если у тебя numbodyparts возвращает ноль, то модель вообще не будет рисоваться

Ошибся, ((studiohdr_t *)IEngineStudio.Mod_Extradata(model))->numbodyparts возвращает единицу, не ноль.

Но теперь все заработало, стырил из ксаша R_StudioBodyVariations, но был уверен, что не заработает, ведь в ней цикл с этим самым numbodyparts, который мне надо было найти, однако все работает. Главное, что работает. Спасибо,
Дядя Миша

__________________
Никогда не поздно сделать мод под хл1


Отправлено Sigurth 19-12-2017 в 14:54:

Кстати до меня дошло почему. numbodyparts это не сами субмодели, а бодигруппы с субмоделями, и вот в каждой бодигруппе есть уже сами субмодели в количестве pbodypart[i].nummodels

__________________
Никогда не поздно сделать мод под хл1


Отправлено Crystallize 19-12-2017 в 17:41:

Как в кваке повесить на одну и ту же клавишу одновременно +left и +moveleft?


Отправлено JPEG 19-12-2017 в 17:52:

Цитата:
Crystallize писал:
Как в кваке повесить на одну и ту же клавишу одновременно +left и +moveleft?

bind q "+left; +moveleft"

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 19-12-2017 в 17:53:

alias надо наверное

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 19-12-2017 в 18:45:

да можно без алиасов

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 19-12-2017 в 20:42:

Yo Den а ты где провирял?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 19-12-2017 в 22:59:

Решил попытаться настроить компиляцию Xash для VS2010. Нашел набор инструментов платформы v60 (Visual Studio 6) от Daffodil. Вообщем, это сборник инструментов для поддержки старых платформ в новых. Решил пока что подготовить один проект для компиляции, изменил свойства. Результата нету. Как и была куча ошибок, так и осталась. На их сайте люди пишут, что этот набор реально работает, хотя и есть обсуждения ошибок.
Может я не совсем понял, что означает набор инструментов платформы? Как я понял, через набор инструментов ведётся работа с проектом в среде разработки с какой-либо конкретной версией, в зависимости от определённой версии набор инструментов платформы (вроде туфта, не смог по-лучше сформулировать).
Даже не знаю, что предположить. Может никаких параметров самого компилятора не изменилось или ещё что?
Может у вас какие-нибудь мысли будут?)
Думаю кто-то наверняка хотел бы поработать с Xash, и при этом не скачивать старую версию VS. Мне, например, не хочется устанавливать лишние программы. А вдруг, потом интерес пропадёт.


Отправлено Crystallize 20-12-2017 в 04:30:

Цитата:
Yo Den писал:
bind q "+left; +moveleft"

Получается либо вечный стрейф влево, либо после отжатия клавиши стрейф разбиндивается. Это на фитце.

Добавлено 20-12-2017 в 11:24:

даже ";+moveleft" такое вызывает. Точка с запятой чтоли виновата?

Добавлено 20-12-2017 в 11:30:

When using actions commands in a bind (ie +attack or +left) the first action will automatically be stopped when the key is released. To prevent this, start the command with a semicolon:
bind q ";+mlook" (This will keep mlook on until a -mlook is executed.)


Отправлено JPEG 20-12-2017 в 06:05:

Цитата:
Crystallize писал:
+moveleft

каюсь, запамятовал. Вот это вставь в автоэгзец
bind q +m
alias +m "+left; +moveleft"
alias -m "-left; -moveleft"

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Crystallize 20-12-2017 в 07:24:

Yo Den Спасибо!


Отправлено Ku2zoff 20-12-2017 в 12:40:

Цитата:
semerjon писал:
Нашел набор инструментов платформы v60 (Visual Studio 6) от Daffodil. Вообщем, это сборник инструментов для поддержки старых платформ в новых. Решил пока что подготовить один проект для компиляции, изменил свойства. Результата нету. Как и была куча ошибок, так и осталась.

Потому, что если переходишь на новую студию - надо править проекты ручками. Хедеры подключить новые, функции сменить на новые, незначительные варнинги отключить. Набор инструментов - это компилятор, линкер и либы. Хедеры туда не входят. Заметь, часть хедеров чисто сишные, в папках самой студии. А часть - виндовые, в папках windows sdk. Больше для сборки халфы/ксаша не нужно, там ATL/MFC не используются. Разве что хедеры OpenGL, но они многр лет сохраняют обратную совместимость.

Добавлено 20-12-2017 в 19:40:

semerjon
Если тебе уж так лень править проекты, попробуй вручную подключить тулзы, хедеры и либы от 6-ой студии к 2010-й. Это реально работает с небольшими огрехами, я сам пробовал. Но настоятельно рекомендую апгрейдить проект вручную. Обратная совместимость с 6-ой студией остаётся почти всегда.


Отправлено Дядя Миша 20-12-2017 в 14:30:

Цитата:
Crystallize писал:
даже ";+moveleft" такое вызывает. Точка с запятой чтоли виновата?

Объясняю. Вот это вот:
Цитата:
Yo Den писал:
bind q "+left; +moveleft"

Будет работать только в ксаше и в кутри, откуда я собственно этот механизм и попятил. Оно там парсит строку бинда, находит точку с запятой и разделяет команды. Ни в кваке ни в халфе ни во второй кваке это работать не будет, там код обработки клавиш исходит из предположения, что один бинд = одна команда и не разделяет их. Но при этом для каждого нажатия клавиши генерируется авто-отжатие. Т.е. когда вы вводите +cmd не через консоль, а через забинденную клавишу, движок автоматически генерирует точно такую же команду с минусом. Но, как я уже говорил, код нажатия клавиш в халфе-кваке не способен различить две команды в бинде, поэтому команда отжатия формируется только для первой в списке, а дальше эти команды отправляются в команнд-буффер, который в отличие от кода обработки кнопок прекрасно видит эту точку с запятой и разделяет строку на две команды, но команда отжатия генерируется только для первой. Вот поэтому вторая и "залипает". Я ж поэтому сразу сказал, что нужен alias, но кто в наше время слушает дядю Мишу

Добавлено 20-12-2017 в 17:30:

Цитата:
Crystallize писал:
даже ";+moveleft" такое вызывает. Точка с запятой чтоли виновата?

Обработчик клавиш ждёт первым символом '+'. Если не находит, то команда авто-отжатия не генерируется и кнопка остаётся залипшей, пока ты вручную через консоль не напишешь -moveleft.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 21-12-2017 в 15:57:

Цитата:
Дядя Миша писал:
но команда отжатия генерируется только для первой

?


Отправлено a1batross 21-12-2017 в 18:01:

Crystallize

при отжатии.
if( key_cmd[0] == '+' )
{
key_cmd[0] = '-'
Cmd_ExecuteString(key_cmd);
key_cmd[0] = '+'
}


Конечно код там не такой и это не совсем правильно, но это чтобы вы понимали, если не хочется читать текст на русском языке.

Да, так делают голдсорс, ку1 и ку2.


Отправлено Дядя Миша 21-12-2017 в 18:10:

Crystallize ну ты же ковыряешься в коде ввода, ты что вот это не видел?

C++ Source Code:
1
void InitInput (void)
2
{
3
  gEngfuncs.pfnAddCommand ("+moveup",IN_UpDown);
4
  gEngfuncs.pfnAddCommand ("-moveup",IN_UpUp);
5
  gEngfuncs.pfnAddCommand ("+movedown",IN_DownDown);
6
  gEngfuncs.pfnAddCommand ("-movedown",IN_DownUp);
7
  gEngfuncs.pfnAddCommand ("+left",IN_LeftDown);
8
  gEngfuncs.pfnAddCommand ("-left",IN_LeftUp);
9
  gEngfuncs.pfnAddCommand ("+right",IN_RightDown);
10
  gEngfuncs.pfnAddCommand ("-right",IN_RightUp);
11
  gEngfuncs.pfnAddCommand ("+forward",IN_ForwardDown);
12
  gEngfuncs.pfnAddCommand ("-forward",IN_ForwardUp);
13
  gEngfuncs.pfnAddCommand ("+back",IN_BackDown);
14
  gEngfuncs.pfnAddCommand ("-back",IN_BackUp);
15
  gEngfuncs.pfnAddCommand ("+lookup", IN_LookupDown);
16
  gEngfuncs.pfnAddCommand ("-lookup", IN_LookupUp);
17
  gEngfuncs.pfnAddCommand ("+lookdown", IN_LookdownDown);
18
  gEngfuncs.pfnAddCommand ("-lookdown", IN_LookdownUp);

Нажатие кнопки - одна команда, отжатие кнопки - другая команда. И все нажатия проходят сквозь комманд-буффер.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 24-12-2017 в 16:15:

Решил исправить ошибки, возникающие при компиляции Xash в vs2010. Сделал серверную DLL, получилось и работает. Клиентскую всё исправил, кроме одной строки.

C++ Source Code:
1
//Файл - cdll_int.h
2
//Строка - 43
3
 
4
typedef int HSPRITE;	// handle to a graphic

И ошибка ссылается на определение HSPRITE в windef.h (одна из библиотек WinAPI вроде).
И что-то никак не могу придумать как переопределить HSPRITE. В интернете не нашёл. Может предложите совет?


Отправлено Ghoul [BB] 24-12-2017 в 16:21:

Да зачем тебе?

У меня проблема с точностью да наоборот - я хочу XDM собирать под шестёркой.
2010 для меня это злое зло...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Smykov 24-12-2017 в 17:28:

Расскажите мне, что такого есть в шестой версии, чего нету в десятой. Меня друзья всё упрекают, то что я 15 или 17 не использую, но мне просто это пока что не нужно. Десятки вполне хватает без всяких дополнительных средств диагностики программ.


Отправлено PLut 24-12-2017 в 17:37:

semerjon

C++ Source Code:
typedef int HL_HSPRITE;

__________________
Base Defense on Steam, ModDB


Отправлено Ghoul [BB] 25-12-2017 в 03:40:

Цитата:
semerjon писал:
Расскажите мне, что такого есть в шестой версии, чего нету в десятой. Меня друзья всё упрекают, то что я 15 или 17 не использую, но мне просто это пока что не нужно. Десятки вполне хватает без всяких дополнительных средств диагностики программ.


Как минимум, это скорость. Потому что 2010 проект минут 10 собирает...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Crystallize 29-12-2017 в 18:46:

В чем разница между player->blahblah, player->curstate.blahblah и pparams->blahblah? (ну там для координат, углов)
И что такое refdef?


Отправлено Дядя Миша 29-12-2017 в 19:16:

refdef = refresh definitions вроде. Хотя какая в принципе разница.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-12-2017 в 03:24:

Crystallize ну, очевидно, что pparams->blahblah берётся из ref_params_s в функции V_CalcRefdef, которые даёт дллке движок, а остальное берётся из других экспортных функций в файле entity.cpp. Различие между player->blahblah и player->curstate.blahblah я точно не знаю, не читал сорцы ксаша в этом месте. Мне самому стало интересно, в чём отличие, между player->origin и player->curstate.origin. Про prevstate.origin ясно, что это предыдущий кадр, а curstate.origin - текущий. Что тогда player->origin?


Отправлено Crystallize 30-12-2017 в 07:12:

Ku2zoff там ещё и prevstate есть? о_О


Отправлено XaeroX 30-12-2017 в 07:17:

Цитата:
Ku2zoff писал:
Про prevstate.origin ясно, что это предыдущий кадр, а curstate.origin - текущий

Не кадр, а снапшот! Снапшоты не каждый кадр с сервера приходят. И между кадрами нужно всё это дело как-то интерполировать.

Добавлено 30-12-2017 в 14:17:

Цитата:
Crystallize писал:
там ещё и prevstate есть? о_О

А в ку3 есть nextstate, представляешь?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 30-12-2017 в 13:24:

Цитата:
Ku2zoff писал:
Про prevstate.origin ясно, что это предыдущий кадр, а curstate.origin - текущий. Что тогда player->origin?

Интерполянт

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 03-01-2018 в 20:35:

Расскажите пожалуйста, как можно сделать, чтобы npc могли брать и перемещать предметы. Например, на некой плоскости есть предмет, у npc есть анимация, на которой вытягиваются руки. Хотелось бы, чтобы с данной анимацией npc мог якобы брать предмет и, допустим, перенёс на другой плоскость.
В принципе, мысли тут уже кое-какие есть. Можно сделать у данной анимации набор субмоделей, содержащий предметы, которые npc сможет держать. И когда персонаж подходит к предмету, активируется данная анимация с определённой субмоделью, а тот удаляется, только ума не приложу как заспавнить предмет в новой области. Вроде, что-то логичное тут есть. Но у меня такое чувство, что может сделать как-то по уникальнее решение. Надеюсь, не бред.
Вообщем, что хотел. Как лучше реализовать сцену где npc перемещают предметы?


Отправлено Sigurth 03-01-2018 в 22:42:

semerjon А что из себя представляет объект? Если что-то брашевое, то можно использовать для этого func_wall_toggle, а если модель какая-нибудь, то сделать ее как monster_furniture и с помощью scripted_sequence мгновенно переместить на нужное место. Я на 99.99% уверен, что это сработает, т.к. это тоже монстр.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Smykov 04-01-2018 в 13:17:

Sigurth Модель, допустим - кастрюля (посуда сразу на ум пришла). Можно ли её присоединить к рукам таким образом, что когда npc передвигается, то вместе с ним и модель? Похоже то, что я представляю реализовать очень сложно


Отправлено Дядя Миша 04-01-2018 в 14:20:

Цитата:
semerjon писал:
только ума не приложу как заспавнить предмет в новой области.

CBaseEntity::Create

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 04-01-2018 в 14:23:

semerjon можно кастрюле по идее анимацию сделать, и как-то ее расчитать чтобы она вместе с анимацией НПС нормально смотрелась, но я не аниматор, как такое правильно сделать не знаю. Ну или бодигрупами, но не знаю стоит ли эта вся сцена всей возни. А именно приаттачить я думаю никак средствами халвы, даже в ХЛ2 в начале игры разрабы пошли на хитрость с чемоданами и пакетами с едой которые носят гражданские реализовав их как отдельное оружие.


Отправлено nemyax 04-01-2018 в 14:49:

Такую привязку можно сделать средствами триде-пакета. И экспортировать отдельно перса и кастрюлю с идентичными скелетами. Если соответствующие анимации у них запускать одновременно, то всё будет ок.


Отправлено Smykov 05-01-2018 в 09:24:

Как думаете, как в HL2 реализован уровень перед Рейвенхольмом (когда мы играемся с гравипушкой и питомцем Алекс)? По моему там питомец как раз брал предметы с карты.


Отправлено Cybermax 05-01-2018 в 13:47:

Цитата:
semerjon писал:
Sigurth Модель, допустим - кастрюля (посуда сразу на ум пришла). Можно ли её присоединить к рукам таким образом, что когда npc передвигается, то вместе с ним и модель? Похоже то, что я представляю реализовать очень сложно

А я вот не пойму взрывчатка с ДУ - несет в руках, потом кидает. Это не то же самое?


Отправлено Crystallize 05-01-2018 в 14:18:

semerjon был тутор по Спириту как делать подбираемые предметы.


Отправлено Smykov 05-01-2018 в 20:11:

Cybermax это я не для оружия, а для создания что-то типо сцены, состоящей из последовательностей скриптов. Да ладно, я уже понял, что у меня скилла мало для реализации такой задачи.


Отправлено Luciferchik 05-01-2018 в 21:16:

Народ помогите пожалуйста разобраться с Спиротовской "GetState" чет не могу её перетащить в хл уже хз чо в поиск вбивать

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 06-01-2018 в 03:52:

Luciferchik ну что в поиск вбивать? Возьми и закомментируй state_t (или как там его правильно) в cbase.h. При компиляции сервера студия тебе вывалит все места, ссылающиеся на этот enum с ошибками. Их и надо будет копипастить вместе с соответствующими функциями.

Цитата:
semerjon писал:
Да ладно, я уже понял, что у меня скилла мало для реализации такой задачи.

Самый простой способ - синхонные анимации у двух моделей. Способ сложнее - аттач нужной модели к монстру с помощью кода. Во втором случае не может быть рассинхрона, но надо кодить.

Добавлено 06-01-2018 в 10:52:

Luciferchik а зачем тебе стейты, кстати? Решил строить сложные скриптовые конструкции с минимумом энтить? В халфе используются trigger_relay для всяких переключателей между состояниями. Но, таки да, в спирите удобнее.


Отправлено JPEG 06-01-2018 в 12:41:

Как сделать такое: нажимаю назад, игрок не идёт назад, а моментально разворачивается и идёт передом? Ну как в half-life 2d https://www.youtube.com/watch?v=km3m4A_Hjmc

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Luciferchik 06-01-2018 в 18:09:

Ku2zoff
Разобрался с ним, но есть еще вопрос почему env_model имеет в фгд функцию скела, а вот по идеи в коде этой же энтити её нет этой функции и в игре естественно работать не будет хотелось бы решить эту проблему

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 07-01-2018 в 04:49:

Luciferchik ЕМНИП, то скейл читается сразу на клиенте. Если в StudioModelRenderer есть ответка, то скейл будет работать. Утащи код из спирита. Только учти, что физический размер энтить при этом не меняется.


Отправлено Crystallize 07-01-2018 в 07:55:

Yo Den ну я для этого беру yaw и прибавляю к нему абсолютный угол с устройства ввода, 180 в твоём случае. Могу дать сорцы HL2d, вроде были у меня.


Отправлено JPEG 07-01-2018 в 10:06:

Цитата:
Crystallize писал:
Yo Den ну я для этого беру yaw и прибавляю к нему абсолютный угол с устройства ввода, 180 в твоём случае. Могу дать сорцы HL2d, вроде были у меня.

это в плеер.цпп?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Crystallize 07-01-2018 в 11:24:

Yo Den нет, input.cpp или input32.cpp, там есть всякие процедуры типа IN_mousemove, или лучше CL_createmove.
Или вообще, любое место откуда можно вызвать GetViewAngles/SetViewangles. Конкретно в твоём случае можно предложить что-то типа
viewangles[1]+=180*CL_KeyState (&in_back);
И дальше привести к представлению -180/180.


Отправлено JPEG 07-01-2018 в 13:26:

Цитата:
Crystallize писал:
нет, input.cpp или input32.cpp, там есть всякие процедуры типа IN_mousemove, или лучше CL_createmove.
Или вообще, любое место откуда можно вызвать GetViewAngles/SetViewangles. Конкретно в твоём случае можно предложить что-то типа
viewangles[1]+=180*CL_KeyState (&in_back);
И дальше привести к представлению -180/180.


о, спасибо, получилось. Осталось только с камерой в thirdperson что-то сделать, ибо она тоже поворачивается, а должна оставаться на месте

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено PLut 07-01-2018 в 16:12:

Как сделать отрисовку модельки поверх VGUI1 меню на HLSDK?

__________________
Base Defense on Steam, ModDB


Отправлено JPEG 07-01-2018 в 16:30:

Все отлично получилось) В общем, тупой вопрос:
У меня используется такая строчка

cam_ofs[ YAW ] = cam_idealyaw->value;

т.е. значение яв берётся из cam_idealyaw, который в коде, а не который консольная переменная. Как сделать, чтобы юзалась консольная переменная? В рилтайме, чтоб можно было менять в игре

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено a1batross 07-01-2018 в 16:39:

Но ведь ты уже юзаешь квар cam_idealyaw. Судя по тому, что это указатель он получен от движка, в значтт уже зарегистрирован.


Отправлено JPEG 07-01-2018 в 16:40:

Цитата:
a1batross писал:
Но ведь ты уже юзаешь квар cam_idealyaw. Судя по тому, что это указатель он получен от движка, в значтт уже зарегистрирован.

хм, ну ок, значит, где-то захардкодил

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено a1batross 07-01-2018 в 16:41:

PLut, AFAIK, они рисуются в разном порядке. Сначала 3д, потом 2д. Самый последний из 2д -- вгуи. Хотя ты можешь переоппеделить отрисовку, вызовами GL настроить отрисовку 3D , нарисовать модельку и вернуть всё на место.


Отправлено Ku2zoff 08-01-2018 в 02:51:

Цитата:
a1batross писал:
Сначала 3д, потом 2д. Самый последний из 2д -- вгуи. Хотя ты можешь переоппеделить отрисовку, вызовами GL

Зачем мутить этот бред? Проще нарисовать модель в отдельном вьюпорте, тогда она будет вообще поверх всего. Может быть я конечно не прав, и вгуй перекроет модель даже в этом случае, проверить сейчас не могу. Тогда надо рисовать вгуй не одной панелью, а четырьмя с пустым пространством посередине. И там рисовать модель.


Отправлено JPEG 08-01-2018 в 10:10:

Понимаю, что старая тема, но всё же http://half-life.ru/forum/showthread.php?threadid=7380 адекватно ли она работает в мультиплеере? Меня зацепила тем, что мп в разы быстрее грузится

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Smykov 08-01-2018 в 20:01:

UTIL_MakeVectors. По какому алгоритму рассчитываются вектора v_forward,
v_right, v_up? Никак в интернете понятный алгоритм не могу найти. И можно ли на двумерной плоскости использовать вектор подобный v_forward? Например, имеется точка на плоскости, и в зависимости от угла направления, нужно получить такой вектор, который можно будет умножить на определённое число (допустим, для создания ещё одного вектора, находящегося на каком-либо расстоянии).
Что-то наподобие: gpGlobals->v_forward*8192.


Отправлено FreeSlave 09-01-2018 в 00:55:

semerjon, где ж ты искал? По запросу angles to direction vector первая ссылка на stack overflow. https://stackoverflow.com/questions...ectional-vector

В HL немного по-другому из-за отличий в системах координат. Конкретную реализацию можешь найти в ксаше.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Crystallize 09-01-2018 в 17:20:

Цитата:
XaeroX писал:
Не кадр, а снапшот! Снапшоты не каждый кадр с сервера приходят. И между кадрами нужно всё это дело как-то интерполировать.

Цитата:
Дядя Миша писал:
Интерполянт

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


Отправлено Luciferchik 09-01-2018 в 17:49:

Цитата:
Ku2zoff писал:
Luciferchik Только учти, что физический размер энтить при этом не меняется.

Это плохо, что не меняется ибо для некоторых моделей нужно чтоб и bbox тоже менялся

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 09-01-2018 в 19:49:

Цитата:
Ku2zoff писал:
Зачем мутить этот бред? Проще нарисовать модель в отдельном вьюпорте, тогда она будет вообще поверх всего. Может быть я конечно не прав, и вгуй перекроет модель даже в этом случае, проверить сейчас не могу. Тогда надо рисовать вгуй не одной панелью, а четырьмя с пустым пространством посередине. И там рисовать модель.

Вгуй в халфе (именно в халфе), он понад усем, зараза такая.

Добавлено 09-01-2018 в 22:49:

Цитата:
semerjon писал:
По какому алгоритму рассчитываются вектора v_forward,
v_right, v_up?

А что конкретно непонятно?

Цитата:
Crystallize писал:
ну я посмотрел, оригины для игрока у всех троих всегда одинаковые

у игрока интерполяция поломана. Думаешь чего их так на поездах колбасит в мультиплеере.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 09-01-2018 в 20:52:

чот туплю дико, где хранится урон мультиплеерных пушек? Для сингла скилл.цфг это понятно

Добавлено 09-01-2018 в 23:52:

хотя лучше бы даже было б сделать, чтобы оружия в мп считывали данные из скилл, но хз как

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено FreeSlave 09-01-2018 в 21:05:

Yo Den, урон пушек в мультиплеере хардкодится в CHalfLifeMultiplay. Смотри в метод RefreshSkillData.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 09-01-2018 в 21:07:

CHalfLifeMultiplay::RefreshSkillData
там всё

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 09-01-2018 в 21:42:

о, точно, благодарю. Удалил нафиг всё это, чтоб мп брал значения из конфига

// override some values for multiplay.
// suitcharger
gSkillData.suitchargerCapacity = 30;
// Crowbar whack
gSkillData.plrDmgCrowbar = 25;
// Glock Round
gSkillData.plrDmg9MM = 12;
// 357 Round
gSkillData.plrDmg357 = 40;
// MP5 Round
gSkillData.plrDmgMP5 = 12;
// M203 grenade
gSkillData.plrDmgM203Grenade = 100;
// Shotgun buckshot
gSkillData.plrDmgBuckshot = 20;// fewer pellets in deathmatch
// Crossbow
gSkillData.plrDmgCrossbowClient = 20;
// RPG
gSkillData.plrDmgRPG = 120;
// Egon
gSkillData.plrDmgEgonWide = 20;
gSkillData.plrDmgEgonNarrow = 10;
// Hand Grendade
gSkillData.plrDmgHandGrenade = 100;
// Satchel Charge
gSkillData.plrDmgSatchel = 120;
// Tripmine
gSkillData.plrDmgTripmine = 150;
// hornet
gSkillData.plrDmgHornet = 10;

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено a1batross 09-01-2018 в 22:43:

Crystallize

Цитата:
оригины для игрока у всех троих всегда одинаковые


Просто открой мультиплеер. И смотри для всех игроков, кроме тебя.


Отправлено Crystallize 10-01-2018 в 01:46:

Цитата:
Дядя Миша писал:
у игрока интерполяция поломана. Думаешь чего их так на поездах колбасит в мультиплеере.

Цитата:
a1batross писал:
Просто открой мультиплеер. И смотри для всех игроков, кроме тебя.

А, мультиплеер... Ну тогда до лучших времён, это для меня илитарно.


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


Отправлено ~ X ~ 10-01-2018 в 08:49:

Цитата:
Yo Den писал:
о, точно, благодарю. Удалил нафиг всё это, чтоб мп брал значения из конфига

// override some values for multiplay.
// suitcharger
gSkillData.suitchargerCapacity = 30;
// Crowbar whack

ОМГ!!!!!! Вот это ностальгическая блевотина!! %))))))))) Я тоже первым делом это убрал. Году так в 2001ом.
А потом вообще переделал.


UTIL_MakeVectors() или MAKE_VECTORS() лучше не использовать, а написать свой аналог, если не хочешь словить SQB внутри.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 10-01-2018 в 14:35:

Цитата:
Crystallize писал:
Разве в разве касательная не должна быть горизонтальной в данном случае?

А сегодня не все могут смотреть в завтрашний день

Цитата:
~ X ~ писал:
лучше не использовать, а написать свой аналог, если не хочешь словить SQB внутри.

в MakeVectors нет SQB, баг в UTIL_VecToAngles

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 10-01-2018 в 15:20:

Цитата:
Дядя Миша писал:
в MakeVectors нет SQB, баг в UTIL_VecToAngles

Ну иди исправь это в статье тогда.


Отправлено Дядя Миша 10-01-2018 в 20:15:

Цитата:
Crystallize писал:
Ну иди исправь это в статье тогда.

Исправить что?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 11-01-2018 в 19:18:

Что-то не могу найти в коде, где рисуется 640_pain.spr. Хочу его по центру экрана влепить. В плеер.цпп что-то есть про дамагу, но хз, где оно

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено FreeSlave 11-01-2018 в 19:27:

Yo Den, это на клиенте в health.cpp

__________________
I'm on github
I'm on opendesktop.org


Отправлено JPEG 11-01-2018 в 21:14:

Цитата:
FreeSlave писал:
это на клиенте в health.cpp

спасибо, всё получилось)
Переделал в такой вариант, теперь всегда рисуется один спрайт и в одном положении.

x = ScreenWidth/2 - SPR_Width(m_hSprite, 3)/2;
y = ScreenHeight/2 - SPR_Height(m_hSprite,3);
SPR_DrawAdditive(3, x, y, NULL);

Как сделать, чтобы x и y были рандомизированными, чтобы спрайт всегда в разных позициях рисовался? Желательно даже, чтобы движок выбирал из заранее готовых позиций, типа кейсов

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Crystallize 12-01-2018 в 02:01:

Цитата:
Дядя Миша писал:
Исправить что?

Объяснение откуда на самом деле идёт баг.


Отправлено Дядя Миша 12-01-2018 в 07:19:

Crystallize ты точно мою статью читал? Или только думаешь что читал?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 13-01-2018 в 11:29:

Кстати, а кто какой версией фотожопа пользуется? И какая самая нормальная и чтобы плагины для .DDS на ней работали? Я с тех пор как поменял винду скачал какую-то пртативную версию, но она галимая.


Отправлено ncuxonaT 13-01-2018 в 12:29:

Chyvachok CS6


Отправлено Sigurth 13-01-2018 в 13:26:

Chyvachok У меня CS3 портативная. Но она не сохраняет никакие мои настройки, после перезапуска все сбрасывается. Вообще я искал такую, чтобы быстрее грузилась и не висла. Эта грузится не очень быстро на моем компе. Хотя мне вполне хватает и этого, чтобы иногда мазать кровью текстуры или чего еще с ними сделать. А про плагины не знаю ничего.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Дядя Миша 13-01-2018 в 14:00:

Цитата:
Chyvachok писал:
скачал какую-то пртативную версию, но она галимая.

противная версия оказалось галимой? Ничего удивительного!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 13-01-2018 в 16:04:

Цитата:
Sigurth писал:
Chyvachok У меня CS3 портативная. Но она не сохраняет никакие мои настройки, после перезапуска все сбрасывается. Вообще я искал такую, чтобы быстрее грузилась и не висла. Эта грузится не очень быстро на моем компе. Хотя мне вполне хватает и этого, чтобы иногда мазать кровью текстуры или чего еще с ними сделать. А про плагины не знаю ничего.

да скачай с рутрекера нормальную версию

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено thambs 14-01-2018 в 00:54:

Chyvachok
Мне для рисования/редактирования текстур вполне хватает самого обычного гимпа последней версии. Фотожоп всё таки это сильно из пушки по воробьям.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено ~ X ~ 14-01-2018 в 08:06:

thambs в гимпе есть векторы?
У каждого своя техника рисования.
Когда ты в растре делаешь 99% - это одно, а когда там шейпы с динамическими эффектвми - другое.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено AntiPlayer 14-01-2018 в 08:48:

thambs
Я вот наслушался таких советов, а потом файл .ico не мог в нем отредактировать и сохранить так, чтобы он не превратил фон с прозрачностью в чёрное говно. Точнее я бы мог потратить ещё пять-десять минут времени. Но для такой примитивной операции это идиотизм. Отличный пример интерфейсной и эргономической бездарности. За следующие три минуты скачался б-гмерзкий paint.net и сделал все что надо в 2 клика.
А какую альтернативу найти для Linux, которым мне приходится пользоваться 40% времени, очень интересно.

__________________
I tell you to enjoy life


Отправлено Crystallize 14-01-2018 в 11:00:

Цитата:
Дядя Миша писал:
Crystallize ты точно мою статью читал? Или только думаешь что читал?

Очень странно, я был уверен что раньше там была UTIL_MakeVectors.


Отправлено Дядя Миша 14-01-2018 в 14:07:

Crystallize если бы читал мои статьи, а не "был уверен", то заметил бы, что MakeVectors там тоже упоминается.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 14-01-2018 в 14:20:

Дядя Миша я читал их все.


Отправлено Luciferchik 16-01-2018 в 16:23:

Что-то в последние время приглянулся пунч из паранои интересно было его в мультиплеере использовать ток он серверный и будет естественно все рывками хотелось спросить совета какие заглушки нужно поместить на клиенте или часть кода перенести?
Да, и еще кто нибудь думал накодить двери аля-Фолаут или как в Сайлен-Хил?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено PLut 16-01-2018 в 16:28:

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

__________________
Base Defense on Steam, ModDB


Отправлено Luciferchik 16-01-2018 в 16:49:

PLut: Я как бы уже перенес его на чистую халву но когда играешь в мультиплеере оно все дергается и нет никакой плавности.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено PLut 16-01-2018 в 17:04:

Luciferchik Я про клиент говорил. В Бейс Дефенсе тот самый панч из хл2, клиентский, причем.

__________________
Base Defense on Steam, ModDB


Отправлено Luciferchik 16-01-2018 в 17:09:

PLut: Хм... То есть лучше взять исходники из хл2 и оттуда его стащить?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено PLut 17-01-2018 в 10:43:

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

__________________
Base Defense on Steam, ModDB


Отправлено Luciferchik 17-01-2018 в 11:44:

PLut: Кажись я тебя понял нужно просто с сервера скопировать нужные функции на клиент, а можешь дать хоть какие-то ключевые слова чтоб упростить поиск?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Crystallize 17-01-2018 в 12:15:

А зачем в ксаше сделано так что pev->angles теперь просто посредник, а реальное вращение идёт через SetLocalAngles?


Отправлено PLut 17-01-2018 в 12:35:

Luciferchik Я нашел свой пост с первого же поискового запроса, взяв случайное слово из того кода, например, "spring".

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 17-01-2018 в 14:16:

Цитата:
Crystallize писал:
А зачем в ксаше сделано так что pev->angles теперь просто посредник, а реальное вращение идёт через SetLocalAngles?

Потому что мовевитч

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 17-01-2018 в 14:44:

Интересно кто-то разбирается в коде StudioMdl? Мне лично не хватает возможности в $origin крутить модель по всем координатам, pitch, yaw, roll, во всех StudioMdl можно крутить только горизонтально, то есть по yaw если вписать в оригин 4 число, часто модели из других игр бывают повернуты то боком, то верхом и довольно геморно тупо все анимации крутить как надо если их много вручную в 3д редакторе, а так можно было бы все решить одной строчкой, я пытался взять код StudioMdlиз исходников XashXT, и самому это сделать, добавил везде по аналогии к zrotation xrotation и yrotation, но застрял на Grab_Animation, оно теперь вращает модель как попало, даже если я для этих координат не вписал никаких значений, в общем сам я никак не справлюсь:

C++ Source Code:
1
void Grab_Animation( s_animation_t *panim)
2
{
3
  vec3_t pos;
4
  vec3_t rot;
5
  char cmd[1024];
6
  int index;
7
  int	t = -99999999;
8
  float cx, sx, cy, sy, cz, sz;
9
  int start = 99999;
10
  int end = 0;
11
 
12
  for (index = 0; index < panim->numbones; index++)
13
  {
14
    panim->pos[index] = kalloc( MAXSTUDIOANIMATIONS, sizeof( vec3_t ) );
15
    panim->rot[index] = kalloc( MAXSTUDIOANIMATIONS, sizeof( vec3_t ) );
16
  }
17
 
18
  //добавил по аналогии с zrotation хотя незнаю как оно толком работать должно
19
  cx = cos( xrotation );
20
  sx = sin( xrotation );
21
 
22
  cy = cos( yrotation );
23
  sy = sin( yrotation );
24
 
25
  cz = cos( zrotation );
26
  sz = sin( zrotation );
27
 
28
  while (fgets( line, sizeof( line ), input ) != NULL)
29
  {
30
    linecount++;
31
    if (sscanf( line, "%d %f %f %f %f %f %f", &index, &pos[0], &pos[1], &pos[2], &rot[0], &rot[1], &rot[2] ) == 7)
32
    {
33
      if (t >= panim->startframe && t <= panim->endframe)
34
      {
35
        if (panim->node[index].parent == -1) {
36
          adjust_vertex( pos );
37
          panim->pos[index][t][0] = cz * pos[0] - sz * pos[1];
38
          panim->pos[index][t][1] = sz * pos[0] + cz * pos[1];
39
          panim->pos[index][t][2] = pos[2];
40
          // rotate model
41
          //rot[0]			+= xrotation; //эти 2 мои добавки если раскоментировать, то оно вращает тогда модель как попало, без них оригин работает как обычно
42
          //rot[1]			+= yrotation;
43
          rot[2]			+= zrotation;
44
        }
45
        else
46
        {
47
          VectorCopy( pos, panim->pos[index][t] );
48
        }
49
        if (t > end)
50
          end = t;
51
        if (t < start)
52
          start = t;
53
 
54
        if (panim->node[index].mirrored)
55
          VectorScale( panim->pos[index][t], -1.0, panim->pos[index][t] );
56
 
57
        scale_vertex( panim->pos[index][t] );
58
 
59
        clip_rotations( rot );
60
 
61
        VectorCopy( rot, panim->rot[index][t] );
62
      }
63
    }
64
    else if (sscanf( line, "%s %d", cmd, &index ))
65
    {
66
      if (strcmp( cmd, "time" ) == 0)
67
      {
68
        t = index;
69
      }
70
      else if (strcmp( cmd, "end") == 0)
71
      {
72
        panim->startframe = start;
73
        panim->endframe = end;
74
        return;
75
      }
76
      else
77
      {
78
        Error( "Error(%d) : %s", linecount, line );
79
      }
80
    }
81
    else
82
    {
83
      Error( "Error(%d) : %s", linecount, line );
84
    }
85
  }
86
  Error( "unexpected EOF: %s\n", panim->name );
87
}


В общем приложил измененный код в аттач, может кто подскажет, остальной лежит в исходниках КсашХТ, во всех студиомдл есть еще одна проблема которую бы не мешало бы исправить, $scale не влияет на размер хитбоксов и позицию аттачементов.


Отправлено Дядя Миша 17-01-2018 в 14:50:

Уже давно есть обновлённый продвинутый studiomdl где все эти проблемы решены. И скейл влияет на хитбоксы и аттачменты.
Верхушка задаётся командой $upaxis и там соответственно x\-x\y\-y\z\-z.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 17-01-2018 в 15:23:

Дядя Миша это конечно круто, но где его можно найти?


Отправлено Ghoul [BB] 17-01-2018 в 15:51:

Цитата:
Дядя Миша писал:
Уже давно есть обновлённый продвинутый studiomdl г


А там решена проблема с $origin модели, о которой я писал ранее?
(Когда X Y Z в редакторе != этим же значениям в модели)

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Luciferchik 17-01-2018 в 15:55:

PLut: Оно как бы работает но не так как надо ибо я использую конфиг из паранои и панч при падении из высоты, а твой панч на него никак не влияет.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Chyvachok 17-01-2018 в 15:59:

Все равно оригин где можно сразу по всем 3 осям вращать было бы удобнее в разы. А вообще не ясно зачем вульва сделав вращение по одной оси, не стали делать для остальных двух.


Отправлено PLut 17-01-2018 в 16:22:

Luciferchik Мой панч работает так, как надо. С чего клиентскому панчу влиять на серверный? Ты вообще в курсе, что клиентский панч и тот, что в pm_shared - это два разных панча? Хочешь, чтобы везде был клиентский - создавай мессагу и отправляй на клиент.

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 17-01-2018 в 17:53:

Тут старые версии, вообщем.
https://cs-mapping.com.ua/forum/showthread.php?t=38472
Но да, надо бы уже структурировать это дело.

Добавлено 17-01-2018 в 20:53:

Ghoul [BB] проблема решена, но апдейт пока не выкладывал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 18-01-2018 в 02:26:

Цитата:
Дядя Миша писал:
Потому что мовевитч

А отдельная структура под него - чтобы не запутаться?


Отправлено Дядя Миша 18-01-2018 в 14:42:

Crystallize какая отдельная структура?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ghoul [BB] 18-01-2018 в 18:39:

Дядя Миша

Что, до первой звезды нельзя?
Ну, тогда ждём-с....

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Дядя Миша 18-01-2018 в 18:52:

Ghoul [BB] у меня в подписи ссылка, теперь всё там.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 25-01-2018 в 04:31:

Ок, в каком-нибудь спирите я на клиенте писал
cl_entity_t *viewentity = gEngfuncs.GetEntityByIndex( gHUD.viewentityIndex );
После чего мог работать с содержимым viewentity.
Как это делается на клиенте в ксаше?


Отправлено a1batross 25-01-2018 в 05:37:

Crystallize Зачем так делать, если в самом клиентском интерфейсе есть функция GetViewModel. Вы его читали хоть?


Отправлено Crystallize 25-01-2018 в 06:19:

a1batross ну судя по названию она возвращает что-то типа индекса модельки оружия в руках.
Что такое "читать" интерфейс? Я не помню чтобы у ксаша был гайд по кодингу.


Отправлено Chyvachok 25-01-2018 в 12:46:

Кто в маппинге разбирается, а как можно оставить от одной карты только браши, а от другой, от декомпила по быстрому перекинуть все энтити? У меня есть сорцы карт от ХЛ Сорса что Джек открывает, я бы хотел бы хотя бы попробовать одну карту скомпилить под халву чтобы она просто работала, перед тем как пытаться что-то туда свое добавить.


Отправлено JPEG 25-01-2018 в 12:54:

Цитата:
Chyvachok писал:
Кто в маппинге разбирается, а как можно оставить от одной карты только браши, а от другой, от декомпила по быстрому перекинуть все энтити? У меня есть сорцы карт от ХЛ Сорса что Джек открывает, я бы хотел бы хотя бы попробовать одну карту скомпилить под халву чтобы она просто работала, перед тем как пытаться что-то туда свое добавить.

не гарантирую, но попробуй открыть одну карту map - entity report - выдели все - go to - delete. На второй карте можно тоже самое сделать, только вместо удаления скопировать энтити и перенести в другую карту. Ну либо через блокнот попробуй

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Cybermax 25-01-2018 в 13:14:

Цитата:
Chyvachok писал:
от декомпила по быстрому перекинуть все энтити?

В редакторе же можно выделить все енити и скопипастить в другую карту.


Отправлено a1batross 25-01-2018 в 14:03:

Crystallize

Цитата:
она возвращает что-то типа индекса модельки

Цитата:
GetEntity

Цитата:
GetModel

Цитата:
возвращаемый тип cl_entity_t*


Ну да. Индекс. Угу. Индекс.

Цитата:
Что такое "читать" интерфейс?


Открываешь cdll_int.h и смотришь. Если ты не понимаешь что там написано сходу, то втыкай или смотри остальной код, пытайся с ним играться. Дойдёт рано или поздно.

Цитата:
>Я не помню чтобы у ксаша был гайд по кодингу.


А зачем? O_o


Отправлено Chyvachok 25-01-2018 в 14:22:

Цитата:
Cybermax писал:
На второй карте можно тоже самое сделать, только вместо удаления скопировать энтити и перенести в другую карту.


Тут оно копируется не на том месте, мне бы как-то все скопировать с координатами как есть, вариант с блокнотом хороший, но мне интересно можно ли в джеке это как-то сделать.

Добавлено 25-01-2018 в 16:22:

Я нашел уже, специальная вставка это называется.


Отправлено nemyax 25-01-2018 в 19:47:

Цитата:
a1batross писал:
Ну да. Индекс. Угу. Индекс.

Ну если считать память массивом чяров, то чем не индекс =)


Отправлено a1batross 25-01-2018 в 20:02:

nemyax уот только демагогию не надо тут. На такие случаи есть всем известный термин -- указатель. Вот он и получает указатель на клиентскую энтитю.


Отправлено ~ X ~ 26-01-2018 в 09:07:

Цитата:
a1batross писал:
Если ты не понимаешь что там написано сходу, то втыкай или смотри остальной код, пытайся с ним играться.

не все тут, дарагой, студенты с вагоном свободного времени, понимаешь?
Я тоже был такой погромист как ты, а потом получил диплом в руки.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 26-01-2018 в 16:18:

~ X ~

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 26-01-2018 в 17:54:

Цитата:
a1batross писал:
Ну да. Индекс. Угу. Индекс.

Сделал через GetViewModel, но оказалось оно не обновляет углы для триггер_камеры, а только для той что от первого лица.

Добавлено 27-01-2018 в 00:54:

А понятно, там была специальная мессага camdata которую ДМ выпилил. Ну что ж.


Отправлено Crystallize 29-01-2018 в 03:32:

Почему в хл если закрывающаяся дверь коснется тебя самым краешком то ты прилипаешь к ней до того момента пока она не остановится?


Отправлено Crystallize 30-01-2018 в 02:25:

Как активировать какой-то код один раз при старте карты? В XashXT я как-то не нашёл той самой postActivate system. Вообще идеальна была бы некая обёртка типа if { } которой можно было бы обернуть код в произвольном месте, заставив его выполняться одноразово. Я даже пробовал ставить условие на нулевую величину frametime чтобы поймать момент отрисовки самого первого кадра, но безуспешно.


Отправлено Sigurth 30-01-2018 в 04:07:

Цитата:
Crystallize писал:
Как активировать какой-то код один раз при старте карты?

Можешь в сорцах первой паранойи глянуть CBasePlayer::SendInitMessages() и CBaseEntity::SendInitMessage()

__________________
Никогда не поздно сделать мод под хл1


Отправлено ~ X ~ 30-01-2018 в 08:19:

Crystallize ServerActivate() глобально и Entitty::Activate() соответственно. Это если не хочется в Spawn().

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 30-01-2018 в 09:31:

Цитата:
Crystallize писал:
Я даже пробовал ставить условие на нулевую величину frametime

frametime никогда не бывает равным нулю в StartFrame. Но если хочешь - обнуляй g_ulFrameCount в ServerActivate.

Добавлено 30-01-2018 в 12:31:

А. Обманул. На паузе он равен нулю )

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 30-01-2018 в 09:43:


frametime - это время между кадрами (1/FPS)
наверное он хотел сравнить gpGlobals->time == 0, но он == 0 еще когда мир не рисуется и это бесполезно. И вообще сравнивать флоуты нельзя.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 30-01-2018 в 09:49:

Цитата:
~ X ~ писал:
И вообще сравнивать флоуты нельзя.

Серьёзно? А вот так можно?
C++ Source Code:
float f1 = 1.0f;
float f2 = 1.0f;
assert( f1 == f2 );

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 30-01-2018 в 10:27:

Цитата:
~ X ~ писал:
наверное он хотел сравнить gpGlobals->time == 0

gpGlobals->time всегда стартует с одной секунды.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 30-01-2018 в 11:05:

XaeroX https://randomascii.wordpress.com/2...s-2012-edition/

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 30-01-2018 в 13:46:

~ X ~
Ты на вопрос ответь.
Можно писать так, как я написал, или нет?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ~ X ~ 30-01-2018 в 14:22:

XaeroX а ты сам не знаешь? 0_0

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 30-01-2018 в 15:06:

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

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 30-01-2018 в 16:08:

XaeroX им память в Москве стирают. Он не помнит что писал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 30-01-2018 в 17:55:

XaeroX
Ну в общем случае ты бы не стал их сравнивать, верно?


Отправлено XaeroX 30-01-2018 в 18:05:

nemyax
Я написал вполне конкретный случай.
И прекрасно знаю, в каких случаях флоаты сравнивать можно, а в каких нельзя. Но Мастер-то наш написал, что их "вообще" сравнивать нельзя. И мне стало страшно.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ~ X ~ 30-01-2018 в 18:10:

XaeroX я не напишу лучше, в каких случаях можно приравнивать флоуты, чем написал автор статьи, на которую я сослался. Я счел это лучшим возможным ответом. Если тебе охота по природе своей докопаться до слова "вообще", то я забыл поставить запятую.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 30-01-2018 в 18:14:

~ X ~
Я не принимаю ответ в виде ссылки. С таким же успехом я могу давать в ответ на любой вопрос ссылку https://www.wikipedia.org/

Полагаю, собеседования ты проходил так:
- Расскажите про сложность алгоритмов.
- (Достаёт Кормена и бухает на стол) Я не расскажу об этом лучше, чем Кормен.
- Поздравляем, вы приняты!

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ~ X ~ 30-01-2018 в 19:23:

XaeroX а мне-то что с того, что ты не принимаешь? Я по UDP передаю.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Crystallize 31-01-2018 в 01:20:

XaeroX эпсилоны в компиляторах разве не потому придуманы что "флоаты нельзя сравнивать" напрямую, только вычитать?


Отправлено Дядя Миша 31-01-2018 в 14:54:

Crystallize эпсилоны не только в компиляторах

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 03-02-2018 в 01:19:

Друзья, у меня возник неожиданный вопрос по поводу звука в играх.
Звуки же обычно хранятся сжатыми в огг или мп3, а вот в какой момент они разжимаются? Непосредственно во время проигрывания или предварительно при загрузке?


Отправлено JPEG 03-02-2018 в 02:25:

Цитата:
ncuxonaT писал:
Друзья, у меня возник неожиданный вопрос по поводу звука в играх.
Звуки же обычно хранятся сжатыми в огг или мп3, а вот в какой момент они разжимаются? Непосредственно во время проигрывания или предварительно при загрузке?

может ошибаюсь, но mp3 и ogg это ж не архивы, они сжимаются с потерями и типа их не нужно разжимать. Прекешируются видимо во время загрузки

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 03-02-2018 в 03:25:

Цитата:
ncuxonaT писал:
в какой момент они разжимаются

Они не сжаты, а перекодированы со срезом частот, недоступных человеческому уху. Почитай про декодеры на педивикии, например. Ничего разжимать не нужно, нужен только соотв. кодек в системе или в движке, чтобы воспроизвести файл. А вообще, обычно звуковые файлы кэшируются в оперативную память на этапе загрузки уровня, и читаются оттуда в процессе игры. Чтобы наглядно уловить разницу, попробуй загрузить винчестер множеством операций чтения/записи, и параллельно поиграть в кс: кз. Заранее прекэшенные звуки будут играться без задержки, а вот чаттер ботов может вызывать микрофризы при подгрузке файлов налету. Там, ЕМНИП, более 600 файлов, и все они, естественно, в звуковой кэш халфы не влезут.


Отправлено Дядя Миша 03-02-2018 в 06:08:

ncuxonaT используются оба варианта

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 03-02-2018 в 08:19:

Ku2zoff сжатие с потерями, кагбэ. В звуковой буфер всё пишется уже разжатое и в сыром виде. Когда игра декодирует огг/мрз - это ей решать. Но, как говорится, 7 раз воспроизведи - 1 раз разожми. )

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено ncuxonaT 03-02-2018 в 20:16:

Спасибо всем за ответы!
Полагаю, оптимальный подход - проигрываемые однократно звуки декодировать на ходу, многократно - декодировать заранее и хранить в памяти, верно?


Отправлено Дядя Миша 03-02-2018 в 20:53:

Встречный вопрос, а как ты определишь какие звуки должны проиграться однократно, а какие нет?
Помоему логичнее исходить из размеров распакованного mp3. Если это музыка, она вполне может занять 50-60 мегабайт в распакованном виде.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 03-02-2018 в 21:14:

Дядя Миша взрывы-выстрелы-шаги - многократно. Какие-то сюжетные фразы или музыка без репита - однократно.


Отправлено Дядя Миша 03-02-2018 в 21:54:

Ну вот допустим у тебя S_LoadSound. Про звук известно только его имя. Как ты угадаешь что будет использоваться часто, а что не очень? Подобные допущения это признак очень хреновой архитектуры в первую очередь.

Добавлено 04-02-2018 в 00:54:

Можно реализовать аналитически, пост-фактум. В структурке звука завести счётчик вызовов. И если он превысит скажем 10 проигрываний - распаковать в wav. Впрочем это всё излишнее усложнение.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 04-02-2018 в 01:34:

Дядя Миша да, ты прав


Отправлено Ku2zoff 12-02-2018 в 22:57:

Есть у кого карта-пример по использованию выключаемых светотекстур для спирита? С исходниками. Я уже всё перепробовал, без лампочки функ_валлы не хотят переключаться. Хотя весь необходимый код из спирита взят.


Отправлено XaeroX 12-02-2018 в 23:19:

По мне, так все звуки надо декодировать при загрузке, кроме музыки. Ну и в OI, емнип, ещё звуки диалогов не декодировались.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Smykov 25-02-2018 в 17:47:

Никак не могу сделать свой MESSAGE. Игра крашится ещё на строке MESSAGE_BEGIN

C++ Source Code:
1
MESSAGE_BEGIN(MSG_BROADCAST, SVC_TEMPENTITY);
2
WRITE_BYTE(TE_LINE);
3
WRITE_COORD(vecSrc.x);
4
WRITE_COORD(vecSrc.y);
5
WRITE_COORD(vecSrc.z);
6
WRITE_COORD(vecLineEnd.x);
7
WRITE_COORD(vecLineEnd.y);
8
WRITE_COORD(vecLineEnd.z);
9
WRITE_SHORT(10);
10
WRITE_BYTE(255);
11
WRITE_BYTE(255);
12
WRITE_BYTE(255);
13
MESSAGE_END();


Отправлено Дядя Миша 25-02-2018 в 19:03:

Smykov SVC_TEMPENTITY это не твой месседж.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 26-02-2018 в 21:37:

Дядя Миша извиняюсь, не так выразился. мне просто нужно было нарисовать линию. Вроде, тут всё очевидно. В файле const.h указано, что и в каком порядке писать. Но у меня не получается. Игра крашится. в проекте hl не нашел применения TE_LINE, и нашёл вот такой пример: http://amx-x.ru/viewtopic.php?p=222112 . Тоже самое.

Добавлено 27-02-2018 в 00:37:

Ещё пара вопросов.
1) Попробую объяснить на примере gauss'а. При выстреле, на серверной и клиентской DLL рассчитываются точки, в которые попали лучи. Но на клиенте они используются для функций R_BeamEntPoint и R_BeamPoints, а на сервере для вызовов TakeDamage сущностей если в них попал луч. Вопрос касается клиентской части. Получается клиент обрабатывает не только свои выстрелы, но и остальных игроков с сервера (я попробовал изменить клиентку и зашел на HL-сервер). А что если всё это делать на серверной части через сообщения? Является ли это плохим стилем? Я попробовал использовать TE_BEAMENTPOINT, и тоже самое вроде получилось.
2) В этом сообщении нам нужно указать индекс сущности, от которой исходит луч. m_pPlayer->entindex() | 0x1000 (взял из ev_hldm.cpp, строка: 928). Могли бы пожалуйста уточнить, для чего тут нужно прибавлять 4096?


Отправлено Ku2zoff 27-02-2018 в 02:42:

Smykov касательно оружия лучше использовать эвенты, а не мессаги. Потому что они работают и с клиентскими пушками тоже. Если конечно у тебя спирит, где клиентские пушки вырезаны, тогда и мессагами можно, т.к. пушки тчинкают только на сервере, и пользы от эвентов много не будет.


Отправлено Дядя Миша 27-02-2018 в 17:05:

Цитата:
Smykov писал:
В файле const.h указано, что и в каком порядке писать. Но у меня не получается.

Естественно не получается, там процентов на 30 брехня написана.

Цитата:
Smykov писал:
Получается клиент обрабатывает не только свои выстрелы, но и остальных игроков с сервера (я попробовал изменить клиентку и зашел на HL-сервер).

Не совсем так. Фишка эвентов в том, что клиент может их как принимать с сервера, так и воспроизводить локально (для локального игрока). Это часть системы предиктинга оружия.

Цитата:
Smykov писал:
Могли бы пожалуйста уточнить, для чего тут нужно прибавлять 4096?

Это так номер аттачмента кодируется, в верхние биты.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 28-02-2018 в 18:33:

Smykov вальвовская система "будет так же потому что код такой же" мне тоже не понравилась. Как минимум - потому что содержала мало того что старый гауссобаг, так еще и иногда расходилась с сервером. Лучше пусть отсает и лагает тогда уж. Я вернул у себя мессаги с лучами на сервере и не парюсь.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено FreeSlave 13-03-2018 в 20:57:

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

__________________
I'm on github
I'm on opendesktop.org


Отправлено Luciferchik 16-03-2018 в 09:08:

Назрел такой вопрос возможно сделать нпс из ботов используя их анимации, а их ИИ от обычных нпс хл?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено ~ X ~ 18-03-2018 в 08:27:

Luciferchik недостаточно ИИ-инфы в моделях игроков - как минимум. Вообще вопрос поставлен некорректно - "боты без ИИ" - это игроки. )

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Luciferchik 18-03-2018 в 13:59:

~ X ~ писал:
недостаточно ИИ-инфы в моделях игроков - как минимум.
То есть как-бы можно но очень муторное это дело из-за того что ИИ нужно дописывать или вообще переписать.

"боты без ИИ" - это игроки
Ну с этим я согласен

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 18-03-2018 в 14:50:

Цитата:
Luciferchik писал:
То есть как-бы можно но очень муторное это дело из-за того что ИИ нужно дописывать или вообще переписать.

Разведи авторов свенкоопа на частичные сорцы. Они сделали независимые движения и действия монстрам. Этого более чем достаточно для сингла и даже коопа.


Отправлено ~ X ~ 18-03-2018 в 18:11:

Перевожу: они могут одновременно бегать и атаковать.

Цитата:
Luciferchik писал:
То есть как-бы можно но очень муторное это дело из-за того что ИИ нужно дописывать или вообще переписать.

У монстров ИИ сильно завязан на HandleAnimEvents(), например. У игроков, ясен пень, в моделях нет кастомных евентов. Ну и да, надо писать кастомные шедюли и прочие страшные структуры. А если учитывать, что в ХЛ СДК ООП весьма недоделанное, гемор будет приличный. Даже мне только недвно удалось "спаять" все классы монстров чтобы не было копипасты и TakeDamage() (например) был один на всех и всё. Кстати, надо попробовать заспаунить игрока как энтитю

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 18-03-2018 в 18:54:

Цитата:
~ X ~ писал:
У монстров ИИ сильно завязан на HandleAnimEvents(), например

Тежолое наследие первокваки

Цитата:
~ X ~ писал:
Кстати, надо попробовать заспаунить игрока как энтитю

Игрок и есть энтитя.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 19-03-2018 в 06:53:

Цитата:
Дядя Миша писал:
Игрок и есть энтитя.


Как то странно он обсчитывается, помнится очень давно хотел задать его для env_beam, в итоге луч цеплялся только за энтитию на спавне, а не за игрока. Впринципе всё логично, но тогда я сильно растроился.


Отправлено Дядя Миша 19-03-2018 в 09:42:

Цитата:
FiEctro писал:
в итоге луч цеплялся только за энтитию на спавне, а не за игрока

Не за энтитю на спавне, а за начальное местоположение игрока. Надо было активировать луч с задержкой после старта карты, тогда бы всё получилось.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено fl0wer 23-03-2018 в 04:46:

Есть ли такая возможность без особого вмешательство в код (костылями) сделать чтобы игрок видел приаттаченую к нему энтити?
Знаю, что по дефолту клиент убирает видимость таких моделей.
Возможно как-то повесить пустышку_энтити на игрока, а на эту пустышку_энтити уже мою энтити, которую бы видел игрок?


Отправлено Chyvachok 23-03-2018 в 13:51:

Мой нубский вопрос по коду НПС, вот допустим я сделал убиваемым гмана, и добавил анимации смерти от модели игрока, и подправил их, чтобы там чумодан не залазил в землю, но как его гада замочить до конца? Чтобы он на картах типа c1a1b если в него выстрелить не уходил с обидкой, будучи убитым (видно что анимация смерти только начала проигрываться, но он все равно уходит), и чтобы он не мог трындеть? На карте с5а1 в конце самой игры если его замочить он все равно продолжает свой монолог.


Отправлено FreeSlave 23-03-2018 в 16:06:

Chyvachok, чтоб он перестал говорить, нужно вызвать SentenceStop() аналогично тому, как он вызывается у TalkMonster в Killed.
Не умирает на месте возможно из-за того, что находится в скрипте.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Chyvachok 23-03-2018 в 16:43:

FreeSlave заскриптованные НПС не убиваются вообще, как раненый охранник в уровне где надо гарга под струю заманить, чтобы поезд поехал, а тут дело в том что джимен убивается все таки, видно анимацию смерти и его можно разорвать, но эта смерть ни на что не влияет, т.к. он в некоторых местах все равно уходит вместо того чтобы лежать трупом.


Отправлено Ku2zoff 24-03-2018 в 02:48:

Chyvachok это надо переделывать скрипты на картах. Там по-любому стоит галочка override AI, и параметр interruptabe равен 0.


Отправлено fl0wer 24-03-2018 в 10:57:

Как заставить игрока видеть его aiment энтити?


Отправлено Chyvachok 24-03-2018 в 11:51:

Ku2zoff а как тогда сделать чтобы он был все равно убиваемый не смотря на скриптовую сценку? А то на одних картах его можно мочкануть, на других уходит.

Кстати я ему куски даже запилил: https://imgur.com/a/Q9L1m
Ты вроде говорил что у тебя есть модели мясной нарезки с НПС, интересно бы глянуть, мож какие модели по лучше есть, а то я всем НПС решил свои куски поделать, как раз в Брутал ХЛ полно мяса было.


Отправлено nekonomicon 24-03-2018 в 14:01:

Цитата:
fl0wer писал:
Как заставить игрока видеть его aiment энтити?

Кто мешает изменить viewmodel или установить вид от третьего лица по умолчанию?


Отправлено fl0wer 24-03-2018 в 18:34:

Цитата:
nekonomicon писал:
Кто мешает изменить viewmodel или установить вид от третьего лица по умолчанию?

Хочу поставить пустышку на viewmodel. И чтобы менять боди\скины уже на самой энтити, которую будет видеть игрок как вьювмодель)). На вьювмодели это нельзя сделать чтобы корректно работали боди на клиенте.


Отправлено Ku2zoff 24-03-2018 в 19:36:

Цитата:
fl0wer писал:
На вьювмодели это нельзя сделать чтобы корректно работали боди на клиенте.

Это ты Дяде Мише скажи с его Xash Weapon System (R). Которая древняя, и по которой тутор есть на этом форуме. И таки да, боди можно спокойно менять, передавая их в кач-ве аргумента функции SendWeaponAnim. А для клиентских пушек ещё и передавать в эвентах, во.
Цитата:
nekonomicon писал:
а как тогда сделать чтобы он был все равно убиваемый не смотря на скриптовую сценку?

Цитата:
Ku2zoff писал:
надо переделывать скрипты на картах

Рипент в руки, и редактировать ключи и флаги scripted_sequence'ов. Если неохота - студию в руки, и искать все условия в коде, где используются эти ключи и флаги. Ну и при необходимости добавлять там грязные хаки с использованием if (FClassnameIs(pEntity->pev, "monster_gman")).


Отправлено fl0wer 24-03-2018 в 20:18:

У меня нет возможности редактировать клиент. Нужен какой-то хак. Может быть поиграться как-то с AddToFullPack, CheckVisibility?


Отправлено Chyvachok 25-03-2018 в 12:40:

Вопрос у меня есть по минигану из TFC, сделал его на основе кода из ХЛВЕ, огромное спасибо Гулю за то что он его выложил, работает, с альтернативной атакой в виде раскрутки стволов, но одна фигня есть с анимацией стрельбы-раскуртки и звуков, так оно нормально работает, но анимация и звук не меняется если раскрутить стволы альт огнем, и зажать вторую кнопку мыши, оружие будет стрелять, но звука и анимация будет от просто врощения стволов, так и наоборот, если зажать обычную стрельбу, и перейти на раскрутку, отпустив первую кнопку мыши и нажав вторую остаеться анимация и звуки стрельбы, в общем видео с проблемой: https://youtu.be/8FTrgIwgtzI

Я знаю из-за чего оно происходит, что в ХЛВЕ, что в плагине для метамода который добавляет миниган из TFC анимация и звук проигрываються постоянно, как у обычного оружия, а у меня что анимация что звук проигрываться как у Эгона циклично, что анимация что звук, и функция их проигрывания вызывается один раз с помощью m_flShockTime, проблема в том что я не могу придумать как мне сделать чтобы при переходе из PrimaryAttack в SecondaryAttack и наоборот заходить в этот участок кода чтобы поменять звук с анимацией, по этому решил спросить здесь, код в аттаче. Я помню когда-то давно когда пытался сделать эту пушку тоже не смог побороть эту проблему.


Отправлено nekonomicon 25-03-2018 в 19:21:

Chyvachok, посмотрел, пока особо не вникал. Есть декомпил такого пулемета из They Hunger, там правда нет анимации раскрутки, но может чем-нибудь поможет.

https://github.com/nekonomicon/hlsd..._hldm.cpp#L1440

https://github.com/nekonomicon/hlsd...er/chaingun.cpp


Отправлено Chyvachok 25-03-2018 в 21:26:

nekonomicon спасибо за код, правда сам миниган нормально работает, затык был именно с раскруткой, вернее переходом мезду стрельбой и раскруткой, и я вроде как разобрался. И кстати проверил как в TFC он работает, там оказывается раскрутки в виде альтернативной атаки нет, она там использовалась когда у игрока патронов не осталось, выложил новый код в аттаче, вроде все работает, но хотелось чтобы кто-то по опытнее глянул на код, не сильно он коряво написан, а то я больше копипастер чем кодер.


Отправлено ~ X ~ 26-03-2018 в 09:59:

Цитата:
fl0wer писал:
вьювмодели это нельзя сделать чтобы корректно работали боди на клиенте.

Почему-то я это сделал. Внезапно. И бади, и группы, и скины. В XDM даже нет хаков с моделями радио для satchel.

Цитата:
Ku2zoff писал:
Рипент в руки, и редактировать ключи и флаги scripted_sequence'ов. Если неохота - студию в руки, и искать все условия в коде, где используются эти ключи и флаги. Ну и при необходимости добавлять там грязные хаки с использованием if (FClassnameIs(pEntity->pev, "monster_gman")).

Я приеду и как следует дам тебе по рукам за такие лаурисоветы. Спирита начитался, поди?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 26-03-2018 в 16:14:

Цитата:
~ X ~ писал:
Внезапно. И бади, и группы, и скины.

А предиктинг?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Eternal12 28-03-2018 в 12:30:

Подскажите пожалуйста как закрепить HUD weapon list выбор оружия так что бы он висел постоянно.


Отправлено Chyvachok 29-03-2018 в 11:56:

Вопрос насчет TriApi, допустим у меня есть эффект дымка от стен CSmokePuff из паранои, я хочу как-то переделать его чтобы он рисовал круги при попадании на стены, я пытаюсь в общем повторить эффект бластера из GunMan Chronicles, там при попадании в стену помимо спрайта попадания еще рисуются "кольца" на стене, я вот пытаюсь эти кольца как-то воссоздать. В общем как мне сделать чтобы спрайт не "смотрел" на игрока, а от стены? Я не нашел как это сделать. И как можно сделать чтобы можно было указать свой спрайт? А то у меня с этим тоже проблемы возникли. Вот код этого эффекта:

code:
//test blaster_effect CBlasterHit::CBlasterHit( vec3_t origin, vec3_t normal, float life, float alpha, float puffspeed, float puffsize, float maxofs, float r, float g, float b) { vec3_t up, right; VectorClear(right); VectorClear(up); MakeUpRight(normal, up, right); m_fAlpha = alpha; m_fLife = life; m_fr = r; m_fg = g; m_fb = b; spr = SPR_Load("sprites/blaster_puff.spr"); // gEngfuncs.Con_Printf("normal: %f, %f, %f\n", normal[0], normal[1], normal[2]); // gEngfuncs.Con_Printf("up vec: %f, %f, %f\n", up[0], up[1], up[2]); // gEngfuncs.Con_Printf("right vec: %f, %f, %f\n", right[0], right[1], right[2]); VectorCopy(origin, puff_origin); puff_size = puffsize; VectorClear(puff_velocity); VectorMA(puff_velocity, puffspeed, normal, puff_velocity); VectorMA(puff_velocity, gEngfuncs.pfnRandomFloat(-maxofs, maxofs), right, puff_velocity); VectorMA(puff_velocity, gEngfuncs.pfnRandomFloat(-maxofs, maxofs), up, puff_velocity); // gEngfuncs.Con_Printf("creating puff\n"); } int CBlasterHit::Draw(float time, float frametime) { float frac = (time - birthTime) / m_fLife; if (frac > 1) return 1; // delete object // HL_HSPRITE spr = SPR_Load("sprites/blasterpuff.spr"); // HL_HSPRITE spr2 = SPR_Load("sprites/blasterpoof.spr"); if (!spr) { gEngfuncs.Con_Printf("error: cant load sprite sprites/blasterpuff.spr\n"); return 1; } CalcViewMatrix(); struct model_s *pModel = (struct model_s *)gEngfuncs.GetSpritePointer( spr ); int frame = (int)(pModel->numframes * frac); gEngfuncs.pTriAPI->RenderMode(kRenderTransAdd); gEngfuncs.pTriAPI->SpriteTexture( pModel, frame ); gEngfuncs.pTriAPI->Color4f( m_fr, m_fg, m_fb, m_fAlpha ); gEngfuncs.pTriAPI->CullFace( TRI_NONE ); gEngfuncs.pTriAPI->Begin( TRI_QUADS ); float size = puff_size * frac; VectorMA(puff_origin, frametime, puff_velocity, puff_origin); g_viewMatrix[0][3] = puff_origin[0]; // write origin to matrix g_viewMatrix[1][3] = puff_origin[1]; g_viewMatrix[2][3] = puff_origin[2]; gEngfuncs.pTriAPI->TexCoord2f( 0, 0 ); SetPoint(0, size ,size, g_viewMatrix); gEngfuncs.pTriAPI->TexCoord2f( 0, 1 ); SetPoint(0, size ,-size, g_viewMatrix); gEngfuncs.pTriAPI->TexCoord2f( 1, 1 ); SetPoint(0, -size ,-size, g_viewMatrix); gEngfuncs.pTriAPI->TexCoord2f( 1, 0 ); SetPoint(0, -size ,size, g_viewMatrix); gEngfuncs.pTriAPI->End(); gEngfuncs.pTriAPI->RenderMode(kRenderNormal); return 0; } //.h файл: class CBlasterHit : public CObject { public: // construction CBlasterHit( vec3_t origin, vec3_t normal, float life, float alpha, float puffspeed, float puffsize, float maxofs, float r=1.0, float g=1.0, float b=1.0 ); ~CBlasterHit() {gEngfuncs.Con_Printf("deleting puff\n");}; int Draw( float time, float frametime ); HL_HSPRITE spr; vec3_t puff_origin; vec3_t puff_velocity; float puff_size; float m_fAlpha; float m_fLife; float m_fr, m_fg, m_fb; };


И вот что я пытаюсь сделать: https://imgur.com/a/DkmCW


Отправлено FiEctro 29-03-2018 в 12:22:

>> как мне сделать чтобы спрайт не "смотрел" на игрока, а от стены?

Насколько я помню в БСП для каждой поверхности записана нормаль, собственно по ней и надо ориентировать твой спрайт


Отправлено Chyvachok 29-03-2018 в 12:33:

FiEctro я имел ввиду отображение спрайта, можно ли его в коде указать, спрайты эффектов сами по себе всегда на игрока смотрят.


Отправлено a1batross 29-03-2018 в 13:16:

Chyvachok перекомпилять сам спрайт. Там есть опция ориентации.


Отправлено Дядя Миша 29-03-2018 в 13:58:

Если спрайт рисуется через триапи эти настройки не учитываются

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 29-03-2018 в 15:14:

Дядя Миша а как тогда убрать это чтобы он не смотрел на игрока всегда?


Отправлено Ku2zoff 29-03-2018 в 15:19:

Chyvachok есть 2D триапи (рисуется всегда повёрнутым к игроку, например спрайты над бошками тиммейтов в DoD) и есть 3D триапи (огонёк зажигалки в Инвазионе). Вот, используй 3D-вариант. Он, кстати, и в софтваре тоже работает.
gEngfuncs.pTriAPI->TexCoord2f это для 2D, используй gEngfuncs.pTriAPI->Vertex3f для 3D координат.


Отправлено Chyvachok 29-03-2018 в 16:56:

Ku2zoff спасибо за подсказку, посмотрел в коде инвазиона, что-то там скопировал, и каким-то чудом вроде стало работать как надо, хотя код с этими gEngfuncs.pTriAPI там был очень похож, что вышло: https://imgur.com/a/ICAiS

Вот кстати код, интересно, насколько он нормальный? Может какие моменты можно улучшить?

C++ Source Code:
1
class CBlasterRing : public CObject
2
{
3
public:
4
  // construction
5
  CBlasterRing( vec3_t origin, vec3_t normal, float life, float alpha, float size, char model [64], float r=1.0, float g=1.0, float b=1.0 );
6
  ~CBlasterRing() {gEngfuncs.Con_Printf("deleting puff\n");};
7
  int Draw( float time, float frametime );
8
 
9
  HL_HSPRITE spr;
10
 
11
  vec3_t	RingOrigin;
12
  vec3_t	RingNormal;
13
  float	RingSize;
14
 
15
  float m_fAlpha;
16
  float m_fLife;
17
 
18
  float m_fr, m_fg, m_fb;
19
};
20
 
21
CBlasterRing::CBlasterRing( vec3_t origin, vec3_t normal, float life, float alpha, float size, char model [64], float r, float g, float b)
22
{
23
  vec3_t up, right;
24
  VectorClear(right);
25
  VectorClear(up);
26
  MakeUpRight(normal, up, right);
27
  m_fAlpha = alpha;
28
  m_fLife = life;
29
  m_fr = r; m_fg = g; m_fb = b;
30
 
31
  spr = SPR_Load(model);
32
 
33
  VectorCopy((origin + normal * 1), RingOrigin);
34
  VectorCopy(normal, RingNormal);
35
  RingSize = size;
36
}
37
 
38
int CBlasterRing::Draw(float time, float frametime)
39
{
40
  float frac = (time - birthTime) / m_fLife;
41
  if (frac > 1)
42
    return 1; // delete object
43
 
44
  if (!spr)
45
  {
46
    gEngfuncs.Con_Printf("error: cant load sprite \n");
47
    return 1;
48
  }
49
 
50
  CalcViewMatrix();
51
 
52
  float size = RingSize * frac;
53
 
54
  vec3_t forward, right, up, vertex;
55
  MakeUpRight(RingNormal, up, right);
56
 
57
  struct model_s *pModel = (struct model_s *)gEngfuncs.GetSpritePointer( spr );
58
  gEngfuncs.pTriAPI->RenderMode(kRenderTransAdd);
59
  gEngfuncs.pTriAPI->SpriteTexture( pModel, 0 );
60
  float alpha = m_fAlpha - frac;
61
  gEngfuncs.pTriAPI->Color4f( m_fr, m_fg, m_fb, alpha );
62
  gEngfuncs.pTriAPI->CullFace( TRI_NONE );
63
 
64
  gEngfuncs.pTriAPI->Begin( TRI_QUADS );
65
 
66
  gEngfuncs.pTriAPI->TexCoord2f( 0, 0 );
67
  vertex = RingOrigin - ( up + right ) * size;
68
  gEngfuncs.pTriAPI->Vertex3f( vertex.x, vertex.y, vertex.z );
69
 
70
  gEngfuncs.pTriAPI->TexCoord2f( 1, 0 );
71
  vertex = RingOrigin + ( right - up ) * size;
72
  gEngfuncs.pTriAPI->Vertex3f( vertex.x, vertex.y, vertex.z );
73
 
74
  gEngfuncs.pTriAPI->TexCoord2f( 1, 1 );
75
  vertex = RingOrigin + ( right + up ) * size;
76
  gEngfuncs.pTriAPI->Vertex3f( vertex.x, vertex.y, vertex.z );
77
 
78
  gEngfuncs.pTriAPI->TexCoord2f( 0, 1 );
79
  vertex = RingOrigin + ( up - right ) * size;
80
  gEngfuncs.pTriAPI->Vertex3f( vertex.x, vertex.y, vertex.z );
81
 
82
 
83
  gEngfuncs.pTriAPI->End();
84
  gEngfuncs.pTriAPI->RenderMode(kRenderNormal);
85
 
86
  return 0;
87
}


Отправлено Дядя Миша 29-03-2018 в 17:53:

Цитата:
Chyvachok писал:
как тогда убрать это чтобы он не смотрел на игрока всегда?

ДА НЕ КАК!!!!!111

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 30-03-2018 в 16:18:

Вопрос по векторам и углам, а как развернуть объект по tr.vecPlaneNormal?
Допустим я хочу чтобы обьект который липнет к стене еще рандомно разворачивался относительно этой стены, я то я заюзал StickyGibсы, и в глаза бросается что они одинаково к поверхности клеються.


Отправлено ~ X ~ 30-03-2018 в 17:57:

Chyvachok CTripmineGrenade...
Хотя, если честно, AlignToFloor() у меня до сих пор в TODO.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Chyvachok 30-03-2018 в 18:14:

~ X ~ ну они и так к стене разворачиваются на подобии трипмины, мина она всегда прямо лепиться, не боком там или еще как-то, я имел ввиду их еще для рандома покрутить относительно стены, чтобы одинаковость формы моделей не так в глаза бросалась, но я вот не знаю как бы именно покрутить относительно этой tr.vecPlaneNormal, а не мира.


Отправлено Дядя Миша 30-03-2018 в 18:48:

Цитата:
Chyvachok писал:
но я вот не знаю как бы именно покрутить относительно этой tr.vecPlaneNormal, а не мира.

UTIL_VecToAngles

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 30-03-2018 в 20:02:

Посмотрел у стрелы арбалета, оказываеться добавить pev->angles.z = RANDOM_LONG(0,360); было достаточно, я думал что оно крутить будет относительно мира, а стены. Заодно попробовал ретекстурить эти stickygib-ы: https://imgur.com/a/PXTCT


Отправлено Garux 31-03-2018 в 19:46:

Chyvachok, крутота! кишки можно по стенам размазывать


Отправлено Eternal12 02-04-2018 в 13:52:

1>c:\users\виталя\desktop\hl_code_vc_2008 - копия\src_dll\cl_dll\vgui_hud.h(33) : error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>c:\users\виталя\desktop\hl_code_vc_2008 - копия\src_dll\cl_dll\vgui_hud.h(33) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\виталя\desktop\hl_code_vc_2008 - копия\src_dll\cl_dll\vgui_hud.h(33) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\виталя\desktop\hl_code_vc_2008 - копия\src_dll\cl_dll\vgui_hud.h(37) : error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>c:\users\виталя\desktop\hl_code_vc_2008 - копия\src_dll\cl_dll\vgui_hud.h(37) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\виталя\desktop\hl_code_vc_2008 - копия\src_dll\cl_dll\vgui_hud.h(37) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию

Пробывал в int перевести ещё больше ошибок выдаёт и ругается. Помогите.

Добавлено 02-04-2018 в 17:44:

CImageLabel *m_pMedkitsIcon;
и
CImageLabel *m_pUsageIcon;

На них ругается

Добавлено 02-04-2018 в 17:52:

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


Отправлено Ku2zoff 02-04-2018 в 14:40:

Eternal12 версия студии какая?

Цитата:
Eternal12 писал:
CImageLabel *m_pMedkitsIcon;
и
CImageLabel *m_pUsageIcon;

Это ты из паранойи поди утащил в чистый хлсдк. Ну так объяви эти классы в vgui_teamfortressviewport.h хотя бы. Или подключи хедеры (h файлы), где эти классы объявлены, в cpp файл, ПЕРЕД файлом vgui_hud.h.


Отправлено ~ X ~ 03-04-2018 в 09:49:

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

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Eternal12 03-04-2018 в 14:37:

Цитата:
Ku2zoff писал:
Eternal12 версия студии какая?

Это ты из паранойи поди утащил в чистый хлсдк. Ну так объяви эти классы в vgui_teamfortressviewport.h хотя бы. Или подключи хедеры (h файлы), где эти классы объявлены, в cpp файл, ПЕРЕД файлом vgui_hud.h.


Добавлено вчера в 17:52:

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

Добавлено 03-04-2018 в 17:37:

Ребята такой вопрос. Вот вырвал код приспособил его к своему исходнику, скомпилировал удачно. Но при загрузки карты игра зависает. Как узнать в чём причина может быть. Какие способы есть?


Отправлено Дядя Миша 03-04-2018 в 18:32:

Цитата:
Eternal12 писал:
Как узнать в чём причина может быть.

Причина в том, что ты
Цитата:
Eternal12 писал:
вырвал код приспособил его к своему исходнику, скомпилировал удачно

Всё просто

Добавлено 03-04-2018 в 21:32:

Цитата:
~ X ~ писал:
Когда запилите прилипание всякого дерьма к игрокам, монстрам, поездам и всему остальному - позовите

Кто хотел давно уже запилили

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Eternal12 03-04-2018 в 23:13:

Цитата:
Дядя Миша писал:
Причина в том, что ты

Всё просто

Добавлено 03-04-2018 в 21:32:


Кто хотел давно уже запилили

Это понятно что причина в моих действиях, отследить бы точно в каких моментах бы. Эх ладно дальше буду перебирать и думать. Мб додумаюсь.


Отправлено ~ X ~ 04-04-2018 в 11:46:

Цитата:
Дядя Миша писал:
Кто хотел давно уже запилили

покажи что-ли

Цитата:
Eternal12 писал:
Но при загрузки карты игра зависает. Как узнать в чём причина может быть. Какие способы есть?

"При загрузкЕ". Наставь алерты везде где можно или пройди дебаггером через step over. В 90% случаев нажиманием на "паузу" в студии всё равно попадешь в рандомный дизасм движка.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Eternal12 05-04-2018 в 11:44:

Цитата:
~ X ~ писал:

"При загрузкЕ". Наставь алерты везде где можно или пройди дебаггером через step over. В 90% случаев нажиманием на "паузу" в студии всё равно попадешь в рандомный дизасм движка.


Спасибо


Отправлено Дядя Миша 05-04-2018 в 14:37:

Эх, ну какие тут могут быть способы? Отключай обратно и убедись что ничего не зависает, а потом еще раз проверь чотытам наподключал.
Наверное ж забыл чёт.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 11-04-2018 в 08:51:

А какая прога для создания спрайтов именно работает? Есть у кого желательно с примером батника и qc файла? А то этот Sprite Explorer удобен чтобы посмотреть спрайты, но процесс создания их там багнутый, он выдает ошибку при попытке сделать спрайт.

И второй вопрос больше у Ku2zoff-у, а как оружию загрузить анимацию не всей модели, а определенным костям? К примеру для того же акимбо оружия, чтобы стрельба правого пистолета не обрывала анимацию левого.


Отправлено ~ X ~ 11-04-2018 в 10:50:

Chyvachok bmp2spr же. Не нужно qc-файлов. Всё через параметры/батник.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 11-04-2018 в 11:45:

Цитата:
Chyvachok писал:
И второй вопрос больше у Ku2zoff-у

StudioMergeBones, ЕМНИП. На манер гейтсеквенций у игрока. Я бы делал так. Лучше, конечно готовую модель иметь. Со всеми нужными анимациями.


Отправлено Дядя Миша 11-04-2018 в 15:00:

Цитата:
Chyvachok писал:
И второй вопрос больше у Ku2zoff-у, а как оружию загрузить анимацию не всей модели, а определенным костям? К примеру для того же акимбо оружия, чтобы стрельба правого пистолета не обрывала анимацию левого.

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 11-04-2018 в 16:08:

Цитата:
Дядя Миша писал:
Во первых это поможет избавится от дублирования текстур рук, во вторых - увеличить вариативность комбинаций для разных костюмов. В модельке с оружием будет меш оружия и кости рук со всеми необходимыми анимациями. А в руках анимаций не будет, а только дефолтная поза.

Дошли таки до идеи, которую я озвучил (и даже нарисовал) на хлру 15 лет назад Way to go! Ждем вашу БСО

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 11-04-2018 в 16:27:

Цитата:
Дядя Миша писал:
Вот например в будущей системе оружия для второй паранои

А сорцы будут, чтобы можно было что-то серьёзное добавлять, а не клонировать скриптовые пушки и монстров, как в СЦАЛКЕРЕ?


Отправлено Дядя Миша 11-04-2018 в 17:56:

Цитата:
~ X ~ писал:
Дошли таки до идеи, которую я озвучил (и даже нарисовал) на хлру 15 лет назад

Ты не мог это озвучить 15 лет вам же память еженедельно стирают.

Ku2zoff наврядли

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 11-04-2018 в 19:18:

Цитата:
Дядя Миша писал:
наврядли

Вот в этом у нас и кроется главная проблема. Дашь сорцы всем - растащят в свои моды. Не дашь сорцы - недовольны. Дашь сорцы тому, у кого годный мод делается со своими собственными уровнями - он только в маппенк умеет и говно всякое ляпает в коде. Дашь сорцы тому, кто хоть как-то умеет в кодинг - этот никакого мода не выпускает, т.к. не умеет в маппенк. Вот на выходе мы и имеем корявые Порнонойи 2 с хорошей кодовой базой, говёнными картами, стрёмным геймплеем и долбо... сюжетом. Парадокс в том, что у буржуев строго наоборот: у них и карты ништяк, и модельки все свои, защищённые копиразмом, и звуки, и текстуры кавайные. Сюжет даже иногда норм (кроме Сру от Страха и AOM от тех же невменяемых авторов). А код - гавно с порчями памяти, вылетами и вообще, со всякими иными гадостями. В чём причина-то?


Отправлено Дядя Миша 11-04-2018 в 20:09:

Ku2zoff ну почиму жы. Вот взять Arcane Dimensions. Sock это маппер, однакож на квейк си написал всю кодобазу для своего мода. Так что всякое бывает.

Добавлено 11-04-2018 в 23:09:

У него кстати код на Квейк Си в разы сложнее и интереснее чем XDM

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 14-04-2018 в 08:24:

Пара вопросов по кодингу, на сервере там где урон я часто заметил хрени типа ClearMultiDamage и ApplyMultiDamage что они делают и для чего они?

И второй вопрос насчет трасс на клиенте, я там целую кучу комманд заметил типа

C++ Source Code:
1
gEngfuncs.pEventAPI->EV_SetUpPlayerPrediction( false, true );
2
// Store off the old count
3
gEngfuncs.pEventAPI->EV_PushPMStates();
4
// Now add in all of the players.
5
gEngfuncs.pEventAPI->EV_SetSolidPlayers ( idx - 1 );
6
gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );
7
gEngfuncs.pEventAPI->EV_PlayerTrace( vecSrc, vecEnd, PM_STUDIO_BOX, -1, &tr );
8
 
9
gEngfuncs.pEventAPI->EV_PopPMStates();


Интересно зачем так много комманд чтобы провести трассу на клиенте, а не одна какая-то как на сервере типа UTIL_TraceLine? И как ее правильно вызывать в эвенте для эффекта попадания снаряда, а не оружия игрока? А то тут смущяет меня EV_PlayerTrace и прочие команды с Player, оружие как бы принадлежит игроку, а снаряд может быть и монстра. Звук и эффекты для снарядов я всунул в один эвент для новых снарядов, осталось туда декали и прочие эффекты кинуть, но там трассы нет.

И насчет векторов что делают AngleVectors, и VectorMA?


Отправлено Luciferchik 14-04-2018 в 12:02:

Есть такой вопрос, как сделать чтоб игрок не был зависим от камеры в 3-ем виде то есть когда двигаешь мышкой крутилась только камера но никак не модель игрока, а игрок спокойно клавишами "wasd" крутился вокруг себя

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено a1batross 14-04-2018 в 13:02:

Luciferchik можно устанавливать viewangles только в refdef и не вызывать SetViewAngles. Я так чинил крутящихся трупов в мультиплеере.
Chyvachok *MultiDamage нужен для объединения дамага. Удобно для дробовика.

Больше функций для трейса нужно потому что в eventapi отдельно функция для выбора номера хулла и установки твёрдых игроков. Последнее вообще модифицирует стейты предиктинга, поэтому нужен вот этот Push/Pop, на случай если в данный момент выполняется предиктинг. Оружий, например.

AngleVectors -- преобразование угла в FRU векторы.
VectorMA(a,b,c,d) -- умножить c на b и сложить с a. Результат в d.


Отправлено Дядя Миша 14-04-2018 в 13:29:

Push\Pop актуален для трассы, вызываемой из эвентов оружия. В других местах он не нужен.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 14-04-2018 в 13:40:

объясните пожалуйста, как использовать элементы vgui Bitmap и Image? как загрузить для них изображение? я только про загрузку tga файла знаю (из тутора BUzer'а, кажется только про tga там и было описано).


Отправлено Smykov 15-04-2018 в 07:05:

Спустя время, понял что нужно перефразировать вопрос. Помимо tga-изображений, на vgui-панелях можем ли мы рисовать изображения других форматов?


Отправлено ~ X ~ 15-04-2018 в 08:23:

Smykov можешь, если напишешь свой загрузчик картинок в массив данных. Это будет не очень красиво архитектурно, но что поделать

Цитата:
Chyvachok писал:
И насчет векторов что делают AngleVectors, и VectorMA?

AngleVectors - перевод из углов (полярные координаты, практически) в направления (декартовы координаты - origin, position, etc.).

VectorMA и прочее гуано из матлиба - это, по большому счету, макросы для часто используемых мат.операций.

А MultiDamage вообще что-то полезное делает? Он, типа, должен экономить трафик, но по сути - TraceAttack() вызывается для каждой пули и трафика всё равно много.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено a1batross 15-04-2018 в 12:09:

Smykov а в чём проблема просто использовать TGA?
~ X ~ я думаю, что это скорее из-за производительности. Он насколько я знаю ещё из кваки пришёл. Может я ошибаюсь.


Отправлено XaeroX 15-04-2018 в 12:12:

Цитата:
~ X ~ писал:
но по сути - TraceAttack() вызывается для каждой пули

А для шотгана?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 15-04-2018 в 15:00:

Бгы. Я тут подумал, что если бы драбавик стрелял под водой, то от каждой дробинки бы шёл свой баблтрейл.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 15-04-2018 в 16:00:

Цитата:
XaeroX писал:
А для шотгана?

Щас глянул код FireBulletsPlayer, так там в цыкле вызывается TraceAttack для каждой пульки, вотЪ. Но вызов ApplyMultiDamage в конце, после цыкла есть. Хитрая оптимизация? Расскажите, что оно делает. Получается, что подсчитывает общий урон, и наносит его сразу, а не в несколько этапов. Опять же, непонятно, дробовик ведь наносит разный урон, в зависимости от кол-ва попавших в тушку противника пулек.

Добавлено 15-04-2018 в 23:00:

Цитата:
Дядя Миша писал:
если бы драбавик стрелял под водой

То, что в хл глок стреляет под водой, вообще как-то дико. Но для геймплея полезно. Я бы, на месте валвэ добавил в арсенал огнестрел, который и в реале может стрелять под водой. И отдельные патроны для него.


Отправлено ~ X ~ 15-04-2018 в 16:11:

Ku2zoff TraceAttack() с кровищей вызывается на каждую дробинку, а в конце ApplyMultiDamage() вызывает Entity->TakeDamage(). Типа, это что-то должно облегчить. Хотя health всё равно пошлется не ранее следующего кадра. С другой стороны - между дробинками кто-то может помереть. Не знаю, насколько это важно. Может, какую-нибудь крысу одна дробинка убьет, а еще три разнесут на куски. Имхо, здесь особо экономить не на чем.

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

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 15-04-2018 в 16:20:

Ku2zoff ~ X ~
Я вам порой поражаюсь...
Неужели у вас есть столько свободного времени, чтобы философствовать, вместо того, чтобы внимательно посмотреть в код TakeDamage (ну вот хотя бы CBaseMonster::TakeDamage) и осознать, что если вызывать её несколько раз с маленьким flDamage или один раз с кумулятивным - будет разный эффект? Ну ладно Мастер, он уже давно поехал на сортировке строчек в дельта.лст и во всём видит исключительно посылку данных по сети, но Ku2zoff-то монстрами занимался и профдеформацию вроде бы не словил.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 15-04-2018 в 16:23:

Цитата:
~ X ~ писал:
а чем лучге заменить вторичную атаку?

Ну сделай удар прикладом например. Народ во второй параное такую фишку реализовывал на чисто скриптовых оружиях, чему я в своё время немало удивился.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 15-04-2018 в 17:08:

Цитата:
Дядя Миша писал:
Народ во второй параное такую фишку реализовывал на чисто скриптовых оружиях

Анимация тоже скриптами создавалась?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 15-04-2018 в 17:24:

Цитата:
~ X ~ писал:
а чем лучге заменить вторичную атаку?

Удар прикладом, как в DoD. Там ещё спрайт красивый есть. (В аттаче. pix.academ.info обнаглел и теперь требует регистрацию.)


Отправлено Chyvachok 15-04-2018 в 18:15:

Цитата:
~ X ~ писал:
Кстати, вот мой нубский вопрос: шотган, стреляющий двумя патронами - это нонсенс т.к. не двустволка, а чем лучге заменить вторичную атаку?


Что Spas-12 на основе которого замоделили шотган в ХЛ-ХЛ2, что M3 Super 90, (первый дробовик), из контры имеют помимо помпового и полуавтоматический огонь в реале, как идея можно сделать переключение этих режимов, типа помповый более точный, а такой более скорострельный. Кстати солдаты в ХЛ с дробовиков с него довольно скорострельно стреляют, и нету звуки помпы, так что можно предположить что они так и стреляют. Анимация только не очень подходить будет, если не ошибаюсь в полуавтоматическом режиме помпа не движется и по идее в конце перезарядки затвор надо дергать.

Кстати у тебя в моде есть чемган из GunMan Chronicles, если интересно, у меня есть акимбо модели для чемгана и бластера оттуда которые я делал одним извартским методом в FragMotion для своего мода, и анимацией перезарядки, которые я переделал с анимации idlerestless у бластера, увы полностью свои я не умею делать никак, и самим моделям заделал удаленные части от 1 лица, могу залить если надо: https://imgur.com/a/TqWDp


Отправлено Дядя Миша 15-04-2018 в 18:25:

Цитата:
XaeroX писал:
Анимация тоже скриптами создавалась?

Там же акты есть, привязывали melee-анимацию ко вторичной аттаке.

Добавлено 15-04-2018 в 21:25:

Цитата:
Ku2zoff писал:
pix.academ.info обнаглел и теперь требует регистрацию

Я вам еще в 2006-м говорил - какое мы по сути имеем право захламлять локальный сервер академгородка своими говнокартинками? Правильно, никакого. Но вы настолько привыкли, что теперь на полном серъезе полагаете что это они обнаглели.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 15-04-2018 в 18:42:

Цитата:
Ku2zoff писал:
pix.academ.info обнаглел и теперь требует регистрацию.


Мне для заливки скринов нравиться сайт imgur.com, не надо регистрации и можно пачку изображений залить.


Отправлено Cybermax 15-04-2018 в 22:01:

Цитата:
~ X ~ писал:
Кстати, вот мой нубский вопрос: шотган, стреляющий двумя патронами - это нонсенс т.к. не двустволка, а чем лучге заменить вторичную атаку?

Прицеливанием, но не уверен, как это будет выглядеть на практике.


Отправлено PLut 16-04-2018 в 07:28:

Chyvachok В /угадай в каком моде для халфы/ так и есть. Я, кстати, слышал мнение, что не делают сразу два режима дробовика в играх, чтобы избежать работ с их балансировкой.

P.S. Не уверен, что в реале точность зависит от режима стрельбы, я полагаю, что это исключительно мой fiction.

~ X ~ Делай режимы pump и automatic.

__________________
Base Defense on Steam, ModDB


Отправлено ~ X ~ 16-04-2018 в 08:10:

XaeroX у меня это дерьмо уже переписано, я по памяти вспоминаю что там в ХЛ СДК

Цитата:
Дядя Миша писал:
удар прикладом

Цитата:
Ku2zoff писал:
Удар прикладом

онемации завезёте?

Цитата:
PLut писал:
Делай режимы pump и automatic.

вот это как-то поинтереснее, имхо.
Видел как мужик с двумя шотганами на ютубе при помощи отдачи плыл на лодке. no pumping!

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено JPEG 16-04-2018 в 08:55:

Цитата:
~ X ~ писал:
вот это как-то поинтереснее, имхо.
Видел как мужик с двумя шотганами на ютубе при помощи отдачи плыл на лодке. no pumping!

мне гугл только это выдал https://youtu.be/-G5nDYLMtFM

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено XaeroX 16-04-2018 в 09:15:

Цитата:
~ X ~ писал:
у меня это дерьмо уже переписано

Если у тебя это переписано - значит, ты сломал халфовский ИИ. Поздравляю.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Cybermax 16-04-2018 в 10:01:

1. Переключение режимов стрельбы у того оружия, у которого это предусмотренно.
2. Переключение на гранатамет.
3. Прицеливание. Кстати анимацию прицеливания легче всего сделать с помощью p2mv и блокнота.


Отправлено XaeroX 16-04-2018 в 10:11:

"Анимацию" прицеливания надо делать кодом, как в фольвраме.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Chyvachok 16-04-2018 в 10:22:

Цитата:
Cybermax писал:
3. Прицеливание. Кстати анимацию прицеливания легче всего сделать с помощью p2mv и блокнота.


С прицеливанием в халве может возникнуть проблема что модель залазит в камеру, особенно если модель оружия от 1 лица приблизительно такого же масштаба как и модели на земле, и ее всю увеличивать в размерах придется, по этому я скептически отношусь к иронсайту в ХЛ.

Кстати автор этого мода ( http://www.moddb.com/mods/brutal-half-life ) у меня спрашивал как исправить это залезание от 1 лица в коде для пушек в прицеливании, я ему посоветовал просто увеличить модель в 2 раза, но вообще лично для себя интересно, это как-то правиться, "размер" камеры вообще в моде, или это в движке зашито? Когда модель в экран начинает залезать? С моделями от 1 лица ладно, их можно попробовать увеличить в полтора или 2 раза, но я слышал некоторые чтобы сделать уровни больше уменьшали все где-то в 4 раза, вообще кто-то сталкивался с тем что камера тогда сквозь стены начинает смотреть?


Отправлено PLut 16-04-2018 в 11:29:

Chyvachok Абсолютно не понял о чем ты, я делал в хл iron sight, который читал позиции из текстовых файликов, у меня нормально всё было.

__________________
Base Defense on Steam, ModDB


Отправлено Chyvachok 16-04-2018 в 11:59:

PLut я имел ввиду проблемы такого рода: https://imgur.com/a/diQVg


Отправлено BALISTA 16-04-2018 в 12:06:

Chyvachok в сталкере насколько я помню, просто увеличивался fov чтобы скрыть эти косяки


Отправлено PLut 16-04-2018 в 12:16:

Chyvachok Отдалить модель, а анимации стрельбы менять надо на простой толчок назад. Анимации, где пушку подкидывает от выстрела не годятся под iron sight, да и выглядят при нём убого.

Вот старый видос с тем самым прицеливанием.



P.S. Думал в нём есть анимации выстрелов, но их нет, что тупо.

__________________
Base Defense on Steam, ModDB


Отправлено Cybermax 16-04-2018 в 13:02:

Цитата:
XaeroX писал:
"Анимацию" прицеливания надо делать кодом, как в фольвраме.

Кодом можно, просто никогда не задумывался об этом.

Цитата:
Chyvachok писал:
С прицеливанием в халве может возникнуть проблема что модель залазит в камеру

Цитата:
Chyvachok писал:
у меня спрашивал как исправить это залезание от 1 лица в коде для пушек в прицеливании, я ему посоветовал просто увеличить модель в 2 раза

Нужно делать scale 2.5. Я могу представить прицеливание в модах с реальным оружием, но не могу представить в стандартном ХЛ или ХДМ.
Могу дать пошаговую инструкцию как делать прицеливание для моделей. Получается на троечку, но для всяких "кс сборок"норм.
А воообще списко фич, которые бы запилить в ХЛ мод в 2018.
1. Наклоны в стороны.
2. Прицеливание
3. Переключение на гранатамет.
4. Смена режима стрель
5. Ползание.
Цитата:
PLut писал:
Вот старый видос с тем самым прицеливанием.

Звук оптический линцы для дробовика с мущкой выглядит забавно.

Пример АК-105 которому сделал прицеливание.
http://rgho.st/6SfvYm5Ds


Отправлено ~ X ~ 16-04-2018 в 14:02:

Цитата:
XaeroX писал:
ты сломал халфовский ИИ. Поздравляю.

Сказал "а", говори и "б". Поясняй, что ты имел в виду.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 16-04-2018 в 16:30:

Цитата:
XaeroX писал:
Если у тебя это переписано - значит, ты сломал халфовский ИИ. Поздравляю.

У него в XDM почти всё сломано, но он об этом пока не догадывается

Добавлено 16-04-2018 в 19:30:

Цитата:
Chyvachok писал:
я имел ввиду проблемы такого рода: https://imgur.com/a/diQVg

Z_NEAR в движке захардкоден. Надо просто анимацию делать аккуратнее. Не только на позицию двигать, но еще и чуть-чуть вперёд. Другого пути всё равно нет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 16-04-2018 в 18:11:

Цитата:
~ X ~ писал:
Поясняй, что ты имел в виду.

Ну вот, скажем, в зависимости от размера дамаги выставляются флаги bits_COND_LIGHT_DAMAGE и bits_COND_HEAVY_DAMAGE. Они могут по-разному обрабатываться в ИИ. Если ты не объединишь несколько дамаг в один общий вызов TakeDamage, bits_COND_HEAVY_DAMAGE может не установиться. И не прервутся некоторые шедули, типа slReload.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено FreeSlave 16-04-2018 в 18:13:

Оба флага (bits_COND_LIGHT_DAMAGE и bits_COND_HEAVY_DAMAGE) почти везде в hlsdk используются вместе через побитовое "или" - т.е. всё равно, какой из них выставлен. Отдельная проверка light damage во всем hlsdk лишь в одном месте - чтобы проиграть small flinch activity. Ну и heavy damage в перезарядке, да.
Хотя ещё есть heavy damage для прерывания атак монстров. Так что да, всё-таки важная штука.

__________________
I'm on github
I'm on opendesktop.org


Отправлено ~ X ~ 19-04-2018 в 10:17:

Не, это у меня не вырезано. И кандишены кое-где поправлены. Так что, всё норм. Аккумулирование дмг я оставил. "Ломается ИИ" - это довольно громко сказано. Я бы это назвал "Вероятность что монстру не вызовется хэви дамаж от выстрела шотганом", что, в общем-то, не фатально.

Цитата:
Дядя Миша писал:
У него в XDM почти всё сломано, но он об этом пока не догадывается

Так давно рассказал бы, если там баги есть. А то молчишь будто тебя заблокировали )

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 19-04-2018 в 13:37:

Цитата:
~ X ~ писал:
Так давно рассказал бы, если там баги есть.


Так я уже рассказывал и не раз. А ты обижался на это. Теперь не рассказываю.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 20-04-2018 в 19:36:

Я в V_CalcThirdPersonRefdef отправляю некоторое значение углов в pparams->viewangle и pparams->cl_viewangle. Отдельно, их связь я отключил. И если сразу же запросить значение player->curstate.angles, оно будет другим, например yaw будет отставать на 3.06 градуса, примерно соответствующее одному кадру запаздывания. Эти курстейты, реальные углы игрока, обновляются на кадр позже чтоли? Это исправляется как-то?


Отправлено Дядя Миша 20-04-2018 в 20:17:

Цитата:
Crystallize писал:
Эти курстейты, реальные углы игрока, обновляются на кадр позже чтоли?

клиент отстаёт на 1 кадр от сервера, как же иначе-то?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 21-04-2018 в 06:59:

Дядя Миша То же самое было при серверной камере почему-то, но там был поменьше рассинхрон, в педелах полуградуса.


Отправлено Crystallize 21-04-2018 в 14:34:

Тогда я пытаюсь переждать этот 1 кадр, т.е. скажем в конце функции сохранить значения которые были высчитаны в одном и том же кадре что и эти cl_viewangles, и потом прочитать и применить их в следующем кадре, когда углы игрока перейдут на сервер и станут актуальны.

Как удостовериться что 1 кадр прошёл? Я так понимаю, что выполнение функции V_CalcThirdPersonRefdef заново эквивалентно новому кадру, но я у неё в самом начале проверяю значения cl_viewangles и curstate.angles, и у них всё ещё есть разница на ту же величину.


Отправлено Smykov 21-04-2018 в 15:31:

Хочу сделать vgui-класс, выводящий текст на родительской Panel (это только лишь в данный момент хочется чтобы только лишь выводил).

Текст располагается относительно своей позиции, делая отступ в зависимости от textLocation.

Как сейчас я понимаю принцип работы панелей:
1) Создали мы экземпляр класса, унаследованного от Panel;
2) Задали родителя, который вызывает paint'ы дочерних элементов;
3) Вот тут уже под вопросом. Внутри paint'а самого экземпяра система координат либо относительная (К примеру, drawSetTextPos(0, 0) ==getPos(varX, varY), то есть положение экземпляра на родителе), либо абсолютная (drawSetTextPos(varX, varY)==getPos(varX, varY), может мутно, но надеюсь, вы меня поняли :-) )
В итоге, отрисовка только фона, притом, что в конструкторе задал false. текста нету.

C++ Source Code:
1
using namespace vgui;
2
 
3
class CLinkLabel : public Panel {
4
public:
5
  CLinkLabel() {
6
    setPaintBackgroundEnabled(false);
7
    m_textLocation=Location::l_left;
8
  }
9
  CLinkLabel(const char* text) : m_linkValue(text) { CLinkLabel(); }
10
  CLinkLabel(const String& str) : m_linkValue(str) { CLinkLabel(); }
11
 
12
  enum Location { l_left=0, l_right=1, l_center=2 };
13
 
14
  void setText(const char* text) {
15
    m_linkValue=text;
16
  }
17
  void setTextLocationOnPos(CLinkLabel::Location argLocation) {
18
    m_textLocation=argLocation;
19
  }
20
private:
21
  void paint() {
22
    const char* text=m_linkValue.getChars();
23
    int textLength=m_linkValue.getCount();
24
 
25
    CSchemeManager *pSchemes=gViewPort->GetSchemeManager();
26
    SchemeHandle_t hTitleFontScheme=pSchemes->getSchemeHandle("Briefing Text");
27
    Font* pFont=pSchemes->getFont(hTitleFontScheme);
28
 
29
    drawSetTextFont(pFont);
30
    drawSetTextColor(64, 128, 228, 0);
31
 
32
    int x, y, wide, tall;
33
    getPos(x, y);
34
    pFont->getTextSize(text, wide, tall);
35
 
36
    switch(m_textLocation) {
37
    case l_left:
38
        break;
39
    case l_right:
40
        x-=wide;
41
      break;
42
    case l_center:
43
        x-=wide/2;
44
    }
45
 
46
    drawSetTextPos(x, y);
47
 
48
    drawPrintText(text, textLength);
49
  }
50
private:
51
  String m_linkValue;
52
  Location m_textLocation;
53
 
54
  //Font* m_pFont;
55
};


C++ Source Code:
1
// Где-то в конструкторе родителя
2
// CLinkLabel* m_pLinkLabel; // объявление в заголовочном файле
3
 
4
m_pLinkLabel=new CLinkLabel("SampleText1 it's ROAR");
5
m_pLinkLabel->setParent(this);
6
m_pLinkLabel->setPos(325, 250);
7
m_pLinkLabel->setSize(300, 60);


Размеры элементы задал на всякий крайний, вдруг он внутри самого себя отрисовку делает, то есть drawSetTextPos(0, 0)==m_pLinkLabel->setPos(325, 250).


Отправлено ~ X ~ 23-04-2018 в 08:38:

Меня малость напрягает
void setText(const char* text) {
m_linkValue=text;
}

к моменту вызова paint() указатель точно валидный? дебаггером смотрел?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Smykov 23-04-2018 в 19:07:

~ X ~ там конструкторы есть, которые инициализируют m_linkValue.
Сейчас уже кое-что прояснилось, система координат относительная, а проблема была в том, что у объекта не было size'а, он отрисовывался, но не было места куда выводить.
Другая проблема.

Создаём объект

C++ Source Code:
1
m_pLinkLabel=new CLinkLabel("SampleText1 it's ROAR");
2
m_pLinkLabel->setParent(this);
3
m_pLinkLabel->setPos(15, 60);
4
m_pLinkLabel->setSize(300, 150);


Стандартное значение m_textLocaition равно l_left, то есть текст "не съезжает" никуда.

Функция paint, у которой для теста мы зададим x и y координаты текста.
C++ Source Code:
1
const char* text=m_linkValue.getChars();
2
int textLength=m_linkValue.getCount();
3
 
4
CSchemeManager *pSchemes=gViewPort->GetSchemeManager();
5
SchemeHandle_t hTitleFontScheme=pSchemes->getSchemeHandle("Briefing Text");
6
Font* pFont=pSchemes->getFont(hTitleFontScheme);
7
 
8
drawSetTextFont(pFont);
9
drawSetTextColor(64, 128, 228, 0);
10
 
11
int x=0, y=0, wide, tall;
12
pFont->getTextSize(text, wide, tall);
13
 
14
switch(m_textLocation) {
15
case l_left:
16
    break;
17
case l_right:
18
    x-=wide;
19
  break;
20
case l_center:
21
    x-=wide/2;
22
}
23
 
24
drawSetTextPos(x, y);
25
drawPrintText(text, textLength);


Я приведу несколько примеров, изменяя x. Всё это на Xash3D

1) x=0 y=0


2) x=-10 y=0


3) x=-11 y=0
Вроде всё нормас, на один пиксель сместились


4) x=-12 y=0
И ещё на один пиксель, и аж на два символа сместились


Вот всё это к чему, и опять таки повторюсь. Может я неправильно расставляю позиции, или ещё что делаю не так?
Просто у меня догадок особо не стало, когда этот же код на GoldSrc (SDK 2005 с этого сайта вроде бы) скопировал, и там нормально работает, по крайней мере без всяких этих тестов, уже текст нормально позиционируется.

GoldSrc. Зададим уже сразу l_center
x=getPosX(/*функция для наглядности*/)-wide/2; y=0


Думаю в подробностях объяснил свой вопрос, что посоветуете?


Отправлено Crystallize 24-04-2018 в 07:10:

А gaitsequence как-то влияет на viewangles и направление движения игрока как энтити или оно просто для красоты, для модельки? И есть ли в ХЛ какой-то ограничитель скорости поворота игрока? (при thirdperson)


Отправлено Дядя Миша 24-04-2018 в 08:00:

Crystallize только для модельки

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 24-04-2018 в 09:51:

VGUI - это местный ад для хл-моддеров. В него ссылают по плохим указателям... )
Я сам уже не помню, каким чудом что-то там сделал. Хотя, нет. Так и не сделал. Меню с игроками появляется не там где я изначально хотел

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Chyvachok 28-04-2018 в 10:09:

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

C++ Source Code:
1
float frac = (time - birthTime) / m_fLife;
2
if (frac > 1)
3
  return 1; // delete object
4
 
5
float size = PuffSize * frac;


А как правильно сделать наоборот, чтобы он заранее появлялся в своем полном размере, и уменьшался до нуля к frac 1? Я пробовал как-то так но мне что-то кажется что это не совсем корректно: size = PuffSize - (frac*PuffSize);


Отправлено XaeroX 28-04-2018 в 10:21:

frac = 1 - frac;
перед умножением

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Chyvachok 28-04-2018 в 11:19:

XaeroX спасибо, работает, я чуть по другому сделал: size = PuffSize * (1 - frac); по идее так тоже пойдет?


Отправлено XaeroX 28-04-2018 в 13:06:

Chyvachok да, конечно, это все то же самое. Вопрос вкуса.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Smykov 29-04-2018 в 14:54:

makevfont
1) можно ли с его помощью создать шрифт с Кириллицей? Если да, то подробнее пожалуйста.
2) Правильно ли я понимаю, в значении параметра font нужно указывать шрифт, который установлен в системе? то есть, есть у меня ttf Terminus, windows открывает его своим стандартным приложением просмотра шрифтов, в котором можно установить шрифт.


Отправлено Дядя Миша 29-04-2018 в 19:26:

Цитата:
Smykov писал:
можно ли с его помощью создать шрифт с Кириллицей? Если да, то подробнее пожалуйста.

makevfont или makefont? Если первое, то да, должен поидее. Если второе, то только ксашевская реализация.

Добавлено 29-04-2018 в 22:25:

Цитата:
Smykov писал:
Правильно ли я понимаю, в значении параметра font нужно указывать шрифт, который установлен в системе?

Правильно. Я так для римейка кваки делал шрифты.

Добавлено 29-04-2018 в 22:26:

ЗЫ. Имя шрифта нужно указывать именно так как он в системе отображается со всеми пробелами и заключать в кавычки.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 30-04-2018 в 08:02:

Дядя Миша всё понял спасибо.
Сразу назревает вопрос, что не так я делаю?
makevfont.exe -font "Times New Roman" -pointsize 16 "1024_MyFont.tga"
И на месте где должна быть кириллица "кракозябра"


Отправлено Дядя Миша 30-04-2018 в 08:33:

Надо его исправлять значит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 30-04-2018 в 10:09:

Не совсем понял, makevfont? Если вы про него, то может, чисто ради эксперимента, у вас на компьютере есть makevfont. Не зальёте ли его на файлообменник? буду признателен

Добавлено 30-04-2018 в 13:09:

Отмена с "заливом".
Нашёл интересный пост: https://hlfx.ru/forum/showthread.php?threadid=1827
Он меня натолкнул на решение проблемы со шрифтом TTF, установленным пользователем. Может кому пригодится.
Установил, скаченный из интернета, Terminus. До этого у меня проблем с ним не было, потому что в программах задавал путь к файлу ttf. А тут не получается -font "Terminus". Зашел в реестр (путь из того поста, только не в FontSubstitutes, а Fonts). И увидел там свой шрифт - Terminus (TTF) (там у всех шрифтов в конце дописывается "%пробел% (TrueType)"). В итоге font "Terminus (TTF)" прокатил. но кракозябры остались. Вот тут уже пошёл по совету автора поста - сделать RUSSIAN_CHARSET в функции CreateFont проекта makevfont. Только сегодня скачал full sdk, и увидел эти проекты. Единственное, что осталось "одолеть", это makefont, с первого раза не получилось сделать.


Отправлено Дядя Миша 30-04-2018 в 14:55:

У меня нет, в интернетах есть: https://github.com/Fograin/hl-subs-...ects/win-vs2010

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 30-04-2018 в 19:16:

Появилась надобность растянуть tga-изображение до границ экрана. В ХЛ1 я так понимаю с этим беда, по крайней мере я не нашёл простого решения типо BitmapTGA::setSize (он закрытый я знаю) и какого-нибудь setFitted(bool). Можно было бы в заранее заготовить несколько изображений разных разрешений, но это как-то не то. Вроде бы, я нашёл себе неплохую альтернативу использовать drawTexturedRect, но с этим, я так понял, тоже не всё просто. Допустим я смогу получить идентификатор текстуры (createNewTextureID в engine проекте Xash3D), drawSetTextureRGBA я так понял делает загрузку изображения в выделенную текстуру.
Расскажите, пожалуйста, не могу придумать как мне получить byte* rgba от изображения (tga или bmp не особо важно)? Тут ещё дело в том, что drawSetTextureRGBA вовсе принимает const char*. Вообщем, как получить мне rgba или как растянуть изображение?


Отправлено ncuxonaT 01-05-2018 в 22:44:

Пытаюсь завести свои OpenGL поделки на старом ноуте с Intel 4500MHD. Столкнулся с такой проблемой - ловлю сегфолт при вызове glGenFramebuffersEXT или glGenRenderbuffersEXT.
GL_EXT_FRAMEBUFFER_OBJECT поддерживается, адреса функций не нулевые и, в принципе, похожи на правду. Адрес glGenBuffers (которая работает) недалеко от них.
Подскажите, пожалуйста, в какую сторону копать?


Отправлено Дядя Миша 02-05-2018 в 07:43:

Цитата:
ncuxonaT писал:
Столкнулся с такой проблемой - ловлю сегфолт при вызове glGenFramebuffersEXT или glGenRenderbuffersEXT.

Убедись что адреса на функции реально получены. Интел он такой, на словах всё держит, а на деле половины функций не хватает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 02-05-2018 в 11:59:

Дядя Миша а как это сделать? Смотрю адреса, похоже же на правду?
Вот у обычного glGenFramebuffers адрес нулевой.


Отправлено Smykov 02-05-2018 в 16:04:

1) Имеется VGUI-панель. Можно ли к ней обратиться по срабатыванию триггера (допустим вызвать setVisible(true) и в gViewport обновление курсора сделать) по нажатию кнопки (не клавиши клавиатуры, а Use какого-нибудь триггера или CPushable)? Что-то не могу себе представить как с сервера обратиться к клиентской части.

2) На случай если первый вопрос можно реализовать. Что лучше наследовать CPushable или CBaseTrigger?
Как я себе представляю, триггер же может быть solid'ом, создаём область на карте, в которую игрок должен зайти и нажать кнопку действия (клавиша E - дефолт) и дальше начинает работать CBaseTrigger::Use (там разновидности есть, пока что в них не особо вник). И вот как бы из этой функции обратиться к VGUI?


Отправлено Дядя Миша 02-05-2018 в 16:20:

ncuxonaT на NULL проверить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 02-05-2018 в 20:11:

Дядя Миша то, что я на картинке показал, - это не то?

Добавлено 02-05-2018 в 23:11:

Это адреса, полученные через wglGetProcAddress


Отправлено ~ X ~ 02-05-2018 в 20:34:

Smykov всё это уже реализовано в XDM можно, конечно, реализовать. Запили какой-нибудь env_menu (лучше синхронизировать класснейм с чем-нибудь имеющимся в других играх, но вообще пофиг). У нго по Use() шлешь message Activator-у. Ну вот и весь сервер. А на карте уже вешай эту энтитю как таргет хоть триггера, хоть кнопки, хоть ученого.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 03-05-2018 в 07:47:

ncuxonaT они не равны нулю, ты же видишь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 03-05-2018 в 12:54:

Дядя Миша что делать в таком случае?


Отправлено Дядя Миша 03-05-2018 в 13:52:

Для начала, как я люблю определимся с терминами. Какой смысл ты вкладываешь в слово "сегфолт"? На винде его нет, следовательно ты под линуксом колдуешь? Адрес вылета какой? 0x000005 ?
Хотя если под линуксом я ничем не помогу.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 03-05-2018 в 17:16:

Цитата:
Дядя Миша писал:
На винде его нет

На винде тоже можно перехватить сигнал SIGSEGV.
Просто под виндой его чаще называют в терминологии SEH "access violation".

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ncuxonaT 03-05-2018 в 23:34:

Да-да, всё так.
Когда запускаю просто экзешник, то вылазит окно "Access violation. Press OK to ignore and risk data corruption. Press Abort to kill the program."
Когда запускаю из лазаруса с отладкой, то вылазит окно "Проект вызвал класс исключения 'External: SIGSEGV'."
Адрес вылета нигде не указывается.


Отправлено Дядя Миша 04-05-2018 в 08:26:

ncuxonaT пора переходить на Си, делфи не вариант вообще. Вон у Ксерокса спроси.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 04-05-2018 в 14:21:

Дядя Миша помогаешь ты так себе)
Паскаль меня устраивает, не вижу смысла переходить на что-то еще


Отправлено Дядя Миша 04-05-2018 в 15:13:

Дык я в делфях и не шарю. Как же я помогу?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 04-05-2018 в 15:57:

Дядя Миша ну так дело не в делфях, а в интеле. На сях так же сегфолт вылезал бы. Наверное.


Отправлено Дядя Миша 04-05-2018 в 17:45:

ncuxonaT ксашмод как раз использует FBO и параноя тоже использует. Запусти да погляди.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 04-05-2018 в 22:13:

Дядя Миша паранойя завелась с движковым рендером, который при этом выглядит странновато и лагает на лайтстилях в кадре. Движковый рендер использует фреймбуфер?
Ксашмод заработал нормально. В логе упоминается ARB_framebuffer failed, EXT_framebuffer enabled. О чем это говорит?


Отправлено Дядя Миша 05-05-2018 в 08:26:

Цитата:
ncuxonaT писал:
Движковый рендер использует фреймбуфер?

Цитата:
ncuxonaT писал:
В логе упоминается ARB_framebuffer failed, EXT_framebuffer enabled. О чем это говорит?

Сложно сказать, ксаш-мод и без фреймбуффера работает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 05-05-2018 в 21:48:

Дядя Миша как тогда проверить?


Отправлено Дядя Миша 06-05-2018 в 07:23:

Есть два варианта названия этих функций. Вторая с окончанием EXT.
Ты какую группу получаешь?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 06-05-2018 в 12:19:

Дядя Миша c EXT, конечно. У функций без EXT адреса нулевые.


Отправлено Дядя Миша 06-05-2018 в 14:34:

у EXT реализации некоторые функции отсутствуют.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 06-05-2018 в 14:56:

Дядя Миша ну если адрес функции получен, наверное, она присутствует? Как вообще может поддерживаться фреймбуфер без функции его создания.


Отправлено Дядя Миша 06-05-2018 в 18:16:

И вот мы снова вернулись к вопросу как я тебе помогу, если в делфях не шарю?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 06-05-2018 в 20:27:

Дядя Миша может, ты знаешь какие-то хитрости для интелов? Может, как-то по-особому нужно контекст создавать? Или без созданием фреймбуфера сделать какие-то приготовления?


Отправлено Дядя Миша 06-05-2018 в 21:30:

Покажи вызов. Ну типа
pglGenRenderbuffers( 1, &fbo->renderbuffer );
pglGenFramebuffers( 1, &fbo->framebuffer );
Так у тебя?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 06-05-2018 в 23:09:

Всё, разобрался, я шляпа, извините. К glGenFramebuffers EXT дописал, а к остальным забыл. На самом деле сегфолт вылезал на glBindFramebuffer. Отладчик почему-то не туда показывал.


Отправлено ncuxonaT 07-05-2018 в 21:00:

Дядя Миша паранойя же должна работать на opengl 2.0? Если мне память не изменяет, ты использовал в шейдерах flat, чтобы отключить интерполяцию, но flat появился начиная с третьей версии. Как ты решил этот момент для второй?


Отправлено Дядя Миша 07-05-2018 в 21:12:

Нет, минималка для паранои это GL 2.1. А от flat я избавился причём очень просто.
Было

C++ Source Code:
1
var_LightStyles[0] = clamp( int( attr_LightStyles.x ), 0, 255 );
2
var_LightStyles[1] = clamp( int( attr_LightStyles.y ), 0, 255 );
3
var_LightStyles[2] = clamp( int( attr_LightStyles.z ), 0, 255 );
4
var_LightStyles[3] = clamp( int( attr_LightStyles.w ), 0, 255 );

Стало
C++ Source Code:
1
style = attr_LightStyles[0];
2
if( style != 255 ) var_LightScale.x = u_LightStyleValues[int(style/4)][int(mod(style, 4 ))];
3
 
4
style = attr_LightStyles[1];
5
if( style != 255 ) var_LightScale.y = u_LightStyleValues[int(style/4)][int(mod(style, 4 ))];
6
 
7
style = attr_LightStyles[2];
8
if( style != 255 ) var_LightScale.z = u_LightStyleValues[int(style/4)][int(mod(style, 4 ))];
9
 
10
style = attr_LightStyles[3];
11
if( style != 255 ) var_LightScale.w = u_LightStyleValues[int(style/4)][int(mod(style, 4 ))];

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 08-05-2018 в 20:47:

Дядя Миша если честно, я не понял, как это помогло убрать интерполяцию.


Отправлено Chyvachok 09-05-2018 в 20:38:

Насчет бодигрупп, а как можно проверить какая сейчас у модели к примеру боди головы, если к примеру групп несколько? pev->body не совсем подходит для этого, т.к. когда когда боди головы выбрана одна, допустим солдат в берете, а боди оружия поменять на другое другое то pev->body тоже другой будет, а GetBodygroup чтот не дает результата, ну и как еще эти боди можно на клиенте проверять? Там вроде нету ни GetBodygroup ни SetBodygroup.


Отправлено ~ X ~ 10-05-2018 в 08:07:

Chyvachok у меня всё работает. (o_O) Проверь нумерации групп, юзай энумы.
Для бадей на клиенте надо портировать эти функции на клиент.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 10-05-2018 в 08:09:

Цитата:
ncuxonaT писал:
если честно, я не понял, как это помогло убрать интерполяцию.

я перестал передавать номера лайтстилей во фрагментный шейдер и посчитал лайтскейлы в вершинном. А сами лайтскейлы можно интерполировать и это ни на что не повлияет.

Цитата:
Chyvachok писал:
Насчет бодигрупп, а как можно проверить какая сейчас у модели к примеру боди головы, если к примеру групп несколько?

в P2MV номер боди показывается.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 10-05-2018 в 09:05:

Цитата:
Дядя Миша писал:
в P2MV номер боди показывается.


Я так делал для солдат, но это напряжно было, это целую кучу pev->body для одной головы и разного оружия надо писать, не говоря о том если солдатам еще дать голов или оружия.

И еще вопрос, а как заставить трассу игнорировать определенную энтитю? К примеру снаряд? Надо для фигни что снаряды в прицел поворачивает.

~ X ~ Насчет РендерСистем из ХДМ, если я допустим хочу сделать эффект чтобы на манер дымка из паранои на основе которого я сделал у себя эффект попадания в стену отлетал от стены с нулевого размера и к концу жизни увеличивался до указаного? Просто я не совсем понял как эта ScaleDelta там работает. Ну и наоборот, допустим эффект появлялся в указаном размере, и уменьшался к концу своей жизни, чтобы сделать след в стиле авроры, чтобы снаряд в полете оставлял за собой след из спрайтов, короче говоря как у меня на видео но запилить это в ХДМ, правда след плохо видно из-за ФПС: https://www.youtube.com/watch?v=LSWKnvA3CG4


Отправлено Crystallize 12-05-2018 в 11:15:

Цитата:
Дядя Миша писал:
клиент отстаёт на 1 кадр от сервера, как же иначе-то?


C++ Source Code:
VectorCopy ( pparams->simorg, v_sim_org );//player origin
VectorAngles ( player->curstate.origin, pparams->cl_viewangles );
pparams->vieworg[2]=999;
pparams->viewangles[0]= 90;// top-down

А для модов типа Quake Rally, как я понимаю, фундаментально необходимо нечто сглаживающее отставание сервера? Иначе они будут просто не туда рулить, как игрок у меня. Вот я открываю сорцы Q3Rally, и сразу вижу какой-то PredictedPlayerState.
C++ Source Code:
1
if (!cg_cameraMode.integer) {
2
  CG_Trace( &trace, cg.refdef.vieworg, mins, maxs, view, cg.predictedPlayerState.clientNum, MASK_SOLID );
3
 
4
  if ( trace.fraction != 1.0 ) {
5
    VectorCopy( trace.endpos, view );
6
    view[2] += (1.0 - trace.fraction) * 32;
7
    // try another trace to this position, because a tunnel may have the ceiling
8
    // close enogh that this is poking out
9
 
10
    CG_Trace( &trace, cg.refdef.vieworg, mins, maxs, view, cg.predictedPlayerState.clientNum, MASK_SOLID );
11
    VectorCopy( trace.endpos, view );
12
  }
13
}
14
 


Отправлено Дядя Миша 12-05-2018 в 12:33:

Посмотрел я этот ку3 ралли 2015. Какая же лютая хрень

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 12-05-2018 в 13:05:

Дядя Миша Ну к сожалению от Quake Rally и HLRally сорцов нет, а других подобных модов я не знаю.


Отправлено Crystallize 15-05-2018 в 10:04:

Погодите, так а клиент же не только новый cl_viewangles генерирует и посылает на сервер, он же одновременно с ним ещё и оригин новый вычисляет и тоже посылает его в паре с вьюанглесами? Или нет?


Отправлено Crystallize 27-05-2018 в 21:18:

Такой ещё вопрос, в Унреале современном (и возможно в Юнити) там же тоже архитектура клиент-сервер. И что, там тоже есть отставание вьюанглесов такое же?


Отправлено Smykov 28-05-2018 в 13:13:

Не могу понять, как правильно сделать подобную вещь.
Есть объекты от которых нужно хоть какие-то провода протянуть.



Сделал браш 0.25x0.25, сделал несколько копий, использовал "Манипуляция вершинами" для перемещения и поворота вершин, вроде и всё. В окне "Проверить на ошибки" "Ошибок не найдено".

В логе компиляции ошибки на этапе выполнения csg
"Error: brush outside world" и т.д.

Возникло предположение, что это из-за размера браша, типо вещественное число может и 0.25, а вот целочисленное 0.
Несколько фрагментов из лога:
Error: Entity 0, Brush 307: outside world(+/-4096): (203,-10016,-11)-(235,10016,61)
Error: Entity 0, Brush 306: outside world(+/-4096): (204,-10016,-11)-(237,10016,61)
Error: Entity 0, Brush 308: outside world(+/-4096): (204,-10016,-14)-(236,10016,59)

Но, неужели, и вправду нельзя создавать объекты равным меньше единицы, при том что инструментарий позволяет это делать?


Отправлено XaeroX 28-05-2018 в 13:29:

Smykov
Какой редактор?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Smykov 28-05-2018 в 14:14:

XaeroX Jack - Steam
Тогда уж и компилятор уточню: ZHLT


Отправлено XaeroX 28-05-2018 в 17:39:

Smykov
Попробуй компилятор VHLT.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 28-05-2018 в 21:53:

Цитата:
Smykov писал:
Сделал браш 0.25x0.25

0.5 юнита - минимальная толщина браша. Если меньше, любые компиляторы будут ругаться (может, кроме Дядьмишиных, я не проверял).


Отправлено Smykov 28-05-2018 в 23:00:

Ku2zoff прав. Действительно на ZHLT получилось скомпилировать карту. Попробовал ещё и компиляторы из стимовского SDK, компиляция доходит до конца, но браш пропускает.
Спасибо!


Отправлено Smykov 30-05-2018 в 12:59:

Как изменить картинку в cached.wad? если что gcfscape и wally установлены

Добавлено 30-05-2018 в 15:59:

Посмотрел cached.wad от XashXT, и похоже необязательно создавать изображение 320x200.
Загрузил своё изображение через wally, не получилось его увидеть в игре.
Через GCFScape посмотрел свойства файлов, у моего изображения mipmaps - 4, у тех, которое до этого были, равны единице. Есть подозрения, что из-за этого.
Расскажите пожалуйста.


Отправлено Ku2zoff 30-05-2018 в 18:56:

Smykov вот инструкция: https://cs-mapping.com.ua/forum/sho...259&postcount=6
Этот вад нужно собирать с помощью qlumpy.

Добавлено 31-05-2018 в 01:56:

Товарищи, попутно спрошу у вас кое-что. Вот есть такая картиночка:

Смысл в том, что модели в hd паках для халфы имеют весьма ущербное разрешение текстур. ЕМНИП, то есть где-то на просторах всемирной паутины версии с текстурами хорошего разрешения. Я, кажется, когда-то давно находил, правда, только оружия. Мне бы монстров найти. Именно из hd паков, где полигонов 1500-2000. Модели от Ромки и прочие подобные sd и ud не надо, в них овердофига поли (3000 и выше). Качественные текстуры + среднеполигональная модель - в халфе это выглядит классно на фоне размытых текстур уровня. Подкиньте ссылки, если где-то такое встречали, плиз.


Отправлено Дядя Миша 30-05-2018 в 19:21:

Цитата:
Crystallize писал:
Погодите, так а клиент же не только новый cl_viewangles генерирует и посылает на сервер, он же одновременно с ним ещё и оригин новый вычисляет и тоже посылает его в паре с вьюанглесами? Или нет?

Оригин хранится только на сервере. Клиент посылает на сервер только пользовательские команды, вида "сдвинуться строго на север порядка 50 метров". Сервер, понятное дело, пропускает эту команду через код физики плеера и сдвигается с учётом влияния геометрии. Эти же команды проигрываются локально на клиенте, на том же самом коде физики плеера. То что получается на выходе - это предсказанный оригин игрока. Он считается валидным, до тех пор, пока не придёт реальный оригин с сервера. Но в большинстве случае они совпадают. Если не совпадают, то возникает ошибка предсказания и оригин плавно совмещается клиентский с серверным. Ну или не плавно, а как повизёт. Классический пример - бежишь-бежишь, а тебя раз и назад вернуло. Ну не дошли твои команды до сервера.
С углами немного по-другому. Если без предсказаного оригина играть хоть и некомфортно, но можно, то без предсказанных углов, это вообще мрак, можно ради интереса перестать учитывать cl_viewangles и брать углы из клиентдаты и посмотреть как это выглядит даже в сингле с лагом всего в 1 кадр. А в мультике совсем ужос. Поэтому углы предиктятся всегда, то игрок нашевелил на клиенте сразу же идёт в рендерер, а сервер просто ставится перед фактом, углы такие-то.

Цитата:
Crystallize писал:
в Унреале современном (и возможно в Юнити) там же тоже архитектура клиент-сервер. И что, там тоже есть отставание вьюанглесов такое же?

Клиент-сервер еще ни о чём не говорит. Сейчас уклон в сторону архитектуры, когда сервер является проксей, т.е. просто перенаправляет потоки комманд от одного игрока к другому, а клиент всё обсчитывает локально. С одной стороны это очень сильно упрощает архитектуру движка, т.к. нам уже не надо думать, как всё протолкнуть сквозь сеть, но с другой все игроки погружаются в тотальный мир иллюзий, где картина мира для каждого своя и не совпадает с соседями + постоянно накапливающася ошибка. Есть механизм совмещённый, когда у сервера есть общая картина происходящего, но он вмешивается примерно раз в минуту, рывком расставляя всех на свои места. Комфорта в игре, понятное дело не добавляет. Но при классической схеме сильно много игроков в мире не расположить, равно как и мир не сделать слишком большим. 32-64 игрока максимум. Хотя на мой взгляд при дефматче в квейк-стиле даже 16 игроков на сервере это шумиха, неразбериха и тотальное мясо.
Так что вышеописанная схема больше годится для всяких бродилок, где игроки часами шаблаются не встречая друг-друга, грабят корованы, лутят лут и варят зелье из грибов.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Smykov 30-05-2018 в 21:04:

Ku2zoff как всегда, большое спасибо. Правда CSM что-то у меня не грузится, даже с VPN не получилось, но через копию сайта посмотрел инструкцию.


Отправлено Luciferchik 07-06-2018 в 12:29:

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

C++ Source Code:
1
//=================================================
2
// LRC - env_particle, uses the aurora particle system
3
//=================================================
4
#define SF_PARTICLE_ON 1
5
 
6
class CParticle : public CPointEntity
7
{
8
public:
9
  void Spawn( void );
10
  //	void Activate( void );
11
  void Precache( void );
12
  //  void DesiredAction( void );
13
  void PostActivate( void );
14
  //	void EXPORT Think( void );
15
 
16
  void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
17
};
18
 
19
LINK_ENTITY_TO_CLASS( env_particle, CParticle );
20
 
21
extern int	gmsgParticle; // LRC
22
 
23
void CParticle::Spawn( void )
24
{
25
 
26
  pev->solid		= SOLID_NOT;
27
 
28
  pev->movetype		= MOVETYPE_NOCLIP;
29
 
30
  pev->renderfx       	= kRenderFxEntInPVS;
31
  pev->renderamt		= 128;
32
  pev->rendermode		= kRenderTransTexture;
33
 
34
  // 'body' determines whether the effect is active or not
35
  pev->body		= (pev->spawnflags & SF_PARTICLE_ON) != 0;
36
 
37
  Precache();
38
 
39
  UTIL_SetOrigin(pev, pev->origin);
40
  SET_MODEL(edict(), "sprites/null.spr");
41
 
42
}
43
 
44
 
45
void CParticle::Precache( void )
46
{
47
  PRECACHE_MODEL("sprites/null.spr");
48
}
49
/*
50
void CParticle::Activate( void )
51
{
52
	CPointEntity::Activate();
53
	UTIL_DesiredAction(this);
54
}
55
 
56
void CParticle::DesiredAction( void )
57
{
58
 
59
}
60
 
61
void CParticle::Think( void )
62
{
63
 
64
}
65
*/
66
void CParticle::PostActivate( void )
67
{
68
  MESSAGE_BEGIN( MSG_ALL, gmsgParticle );
69
  WRITE_ENTITY( entindex() );
70
  WRITE_STRING( STRING(pev->message) );
71
  MESSAGE_END();
72
}
73
 
74
void CParticle::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
75
{
76
  if ( ShouldToggle( useType, pev->body ) )
77
  {
78
    pev->body = !pev->body;
79
  }
80
}

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 07-06-2018 в 12:55:

Luciferchik для сингла как раз Дядь Мишина система норм. А вот для мульта рекомендую взять аналогичную из Паранойи: она срабатывает при коннекте игрока к серверу. Я с её помощью легко научил 3д небо работать для всех игроков.


Отправлено Luciferchik 07-06-2018 в 13:28:

Ku2zoff: Мне на данный момент и для сингла и нужно только вот захожу в игру стартую карту коробку с этими партиклями и сразу халва умирает и приходится закрывать через диспетчер

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 07-06-2018 в 16:56:

Luciferchik хм, хм. А ты точно из правильного места вызываешь виртуальную (для всех классов) функцию PostActivate? Халфа обычно крэшится, если мессагу послать на клиент до вызова LinkUserMessages. А просто по активации во время игры (use, например, если мессагу посылать из него) работает? Если нет, то копай в другом месте. Если да, то смотри, чтобы сначала вызывалась функция LinkUserMessages, а потом уже посылались любые мессаги.

Добавлено 07-06-2018 в 23:56:

Покажи функцию, откуда вызывается PostActivate, например.


Отправлено Luciferchik 07-06-2018 в 17:05:

Цитата:
Ku2zoff писал:
Покажи функцию, откуда вызывается PostActivate, например.

Ну, я сделал все как по тутору ДМ или это не то?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 07-06-2018 в 17:13:

Luciferchik я ж пишу, ты из use попробуй мессагу послать. Активируй партиклю по кнопке. Если вылет - ковыряй клиентскую часть и регистрацию мессаги на сервере. Если нет - возьми из паранойи SendInitMessages и SendInitMessage соответственно. Оно работает 100%. У Дяди Миши там всё завязано на одного игрока, один раз при запуске карты. Возможно, где-то есть мелкий косячок, который ты пропустил.


Отправлено Дядя Миша 07-06-2018 в 17:17:

Luciferchik из нового ксаш-мода возмьми реализацию StartMessage.
Она еще проще и работает в мультиплеере.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 07-06-2018 в 19:25:

Ku2zoff:Хорошо, тогда сейчас иду пробовать все это, спасибо за подсказки.
Дядя Миша:Как раз хотел пойти и скачать еще ксаш и там полазить

Добавлено 07-06-2018 в 22:25:

Что-то ни в какую они работать не хотят зараза и через юз и через StartMessage притом если в спирите это проделать то все норм работает, а вот в хл фиго, что за строчка на клиенте спрятана же для меня секрет

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Luciferchik 09-06-2018 в 08:06:

Заметил интересный баг с fmod-овским плеером когда переходишь с карты на карту музыка продолжает дальше играть и когда загружаешь новые сейвы музыка и дальше играет хоть и на карте нет энтити отвечающей за него, так почему так происходит и как убрать такую досаду можно?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 09-06-2018 в 08:39:

Luciferchik Если ты под ксаш делаешь, выкинь этот fmod совсем.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 09-06-2018 в 09:03:

Цитата:
Дядя Миша писал:
Luciferchik Если ты под ксаш делаешь, выкинь этот fmod совсем.
Нет, не под ксаш но есть такая возможность, что некоторые наработки могут на него переехать но это зависит уже от количества этих наработок так, что ксаш пока далеко от меня

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 09-06-2018 в 12:27:

Цитата:
Luciferchik писал:
когда переходишь с карты на карту музыка продолжает дальше играть

Ну в халфе это нормальное поведение тащем-то. В стим-версии плеер сломан, при переходах музыка глохнет, если gamedir != valve. Фмод глушить в таком случае надо принудительно, отправляя мессагу с пустым именем mp3-шки, или отправляя какой-нибудь null.mp3
Цитата:
Luciferchik писал:
когда загружаешь новые сейвы музыка и дальше играет хоть и на карте нет энтити отвечающей за него

Нужно сделать клиентский сейв для фмода. Смотри тему и стучи в личку тов. Sigurth, чтоб он сделал тутор. А по тутору уже сможешь сделать кастомное сохранение для фмода. Ну или подождать, когда это сделаю я...


Отправлено Luciferchik 09-06-2018 в 12:50:

Цитата:
Ku2zoff писал:
Ну или подождать, когда это сделаю я...

Могу в принципе и подождать мне спешить некуда, а вот что можешь еще по партиклях сказать, прост я делал такую вот штуку с ними брал свою длл клиента и запускал с длл сервера спирита и в такой связки они работали нормально

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 09-06-2018 в 12:50:

Цитата:
Luciferchik писал:
хоть и на карте нет энтити отвечающей за него

Энтитя не отвечает за музыку, энтитя просто посылает команду мп3 плееру.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 09-06-2018 в 13:31:

Цитата:
Дядя Миша писал:
Энтитя не отвечает за музыку, энтитя просто посылает команду мп3 плееру.
Ну да это верно, жаль что этот плеер с большими костылями в хл в других играх которых я его замечал он там выполнен на ура

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Crystallize 10-06-2018 в 06:46:

Я пока вплотную не изучал это всё, а тема вперед убегает и контекст теряется, поэтому я спрошу сейчас, но вопросы будут тупые.

Цитата:
Дядя Миша писал:
Сервер, понятное дело, пропускает эту команду через код физики плеера и сдвигается с учётом влияния геометрии. Эти же команды проигрываются локально на клиенте, на том же самом коде физики плеера. То что получается на выходе - это предсказанный оригин игрока.

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

Цитата:
Дядя Миша писал:
можно ради интереса перестать учитывать cl_viewangles и брать углы из клиентдаты и посмотреть как это выглядит даже в сингле с лагом всего в 1 кадр.

А вот это уже интересно, я как минимум пойму откуда у меня баг лезет. "Учитывать cl_viewangles" имеется в виду учитывать на сервере? Они же с клиента сразу отсылаются туда.
"брать углы из клиентдаты" это в смысле из структуры local_state на клиенте? Сервер туда клиентдату отсылает.


Отправлено Дядя Миша 10-06-2018 в 07:52:

Цитата:
Crystallize писал:
Но он же ничего не знает про лифты и прочее. В таких случаях его поправляют ошибкой предиктинга?

Про лифты он не знает только в халфовской реализации, например. В сорсе и ку3 он про лифты в курсе. Как поправляют? Да просто вычитают разность между позицией предикта и тем что вернул сервер и эту разницу плавно добавляют между серверными кадрами.

Цитата:
Crystallize писал:
"Учитывать cl_viewangles" имеется в виду учитывать на сервере?

это только на уровне движка можно сделать

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 10-06-2018 в 14:10:

Цитата:
Luciferchik писал:
Могу в принципе и подождать мне спешить некуда

Да спроси ты Сигурта, пусть тутор по клиентскому сейву выложит. А позицию трека можно узнавать и указывать через FSOUND_Stream_GetPosition и FSOUND_Stream_SetPosition соответственно. Я уже научил плеер делать это консольными командами. Осталось только сохранять в сейв и загружать из него саму позицию.

Добавлено 10-06-2018 в 21:10:

Цитата:
Luciferchik писал:
запускал с длл сервера спирита и в такой связки они работали нормально

Ну значит косяк у тебя на сервере.


Отправлено Smykov 11-06-2018 в 16:13:

Вопрос о том, что было до VGUI?
Заметил закомментированный код некоторых панелей в hud.h, основанных на CHudBase. И заинтересовало, а рабочие ли они когда-то были, и как они отрисовывались вообще (вот взять scoreboard, также ли равномерно)?
Вообщем, если и тут у кого-нибудь есть познания, могли бы что-нибудь рассказать про это?


Отправлено Ku2zoff 11-06-2018 в 16:25:

Цитата:
Smykov писал:
также ли равномерно

Нет. Запусти мультиплеер опфора в стиме с разными разрешениями, и увидишь, что scoreboard масштабируется так же, как и hud. На высоких разрешениях невозможно читать ники игроков из-за мелкого шрифта. А на низких всё размазано и занимает почти весь экран.

Добавлено 11-06-2018 в 23:25:

Если хочешь альтернативу, рисуй спрайты через TriApi. Там масштабирование грамотнее сделано. Нужны лишь поправки на разное соотношение сторон.


Отправлено Smykov 11-06-2018 в 16:57:

Ku2zoff не-не, VGUI мне достаточно. Мне тут просто для кое-чего нужно рассказать причины создания VGUI. И на основании того закомментированного кода сделал вывод, что весь графический интерфейс рисовался в качестве HUD, но его недостаточно для создания "сложных" элементов. Решил здесь на этот счёт задать вопрос, чтобы по-меньше отсебятины было.


Отправлено Ku2zoff 11-06-2018 в 17:06:

Цитата:
Smykov писал:
но его недостаточно для создания "сложных" элементов.

Всего там достаточно. Первое, худ не может в полноцветные картинки высокого разрешения, второе, в нём нет перехвата инпута мыши и клавиатуры как во вгуи. Искаропки, конечно. Клавиатурный ввод со спрайтовыми меню сделать не проблема. А вот мышиный курсор - хз.


Отправлено Дядя Миша 11-06-2018 в 19:52:

vgui_emulatemouse 1

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 13-06-2018 в 17:11:

Ну вот, доделал кроссплатформенный фмод для новой халфы (на основе кода из спирита 1.9 и XDM). Списался с Сигуртом, думаю, скоро вывалю вам небольшой тутор по музыкальному плееру с сохраняемой позицией. Для ксаша неактуально конечно, но для модов к халфе на спирите (совместимость со спиритом возможна) и вообще всяких, где есть фмод - актуально. Я бы вот в инвазионе плеер обновил. А то ни громкости, ни паузы, нифига.


Отправлено ~ X ~ 14-06-2018 в 07:41:

Ku2zoff а ничего что в XDM он уже есть?
Кстати, как ты его заставил быть кроссплатформенным? Мне утверждают, что под подлинуксом фмод так и не заводится. Но на всякий случай я честно впилил fmod.so.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 14-06-2018 в 08:53:

Цитата:
~ X ~ писал:
Мне утверждают, что под подлинуксом фмод так и не заводится.

Врут. Заводится. libfmod.so грузится и работает, вот. Debian 9.
Цитата:
~ X ~ писал:
а ничего что в XDM он уже есть?

Мне не хотелось тащить такой тяжеленный плеер, где много букаф кода ради нечастого воспроизведения MP3-шек по триггеру, как в обычной халфе. Вот и взял ксашевский, там всё необходимое есть. А плейлисты, расширенное управление - не нужно. Инициализатор и хеадеры утащил из XDM, т.к. кроссплатформа. Самому мне не удалось получить функции fmodlib.so с помощью dlsym, упорно не находит, как я не пытался. Уже даже в доки по кроссплатформенной разработке полез, но так и не понял, в чём причина. Если вдруг кто подскажет, избавлюсь от фмодовских хеадеров, и весь плеер будет в одном файле, как в спирите 1.9.


Отправлено ~ X ~ 14-06-2018 в 09:43:

Какая версия фмода? Та, что в XDM или что-то еще нашёл?

А проблему долгой инициализации/подвисаний не решил? Я вроде запилил асинхронную загрузку, но фмоду от этого легче не стало.

Цитата:
Ku2zoff писал:
Если вдруг кто подскажет, избавлюсь от фмодовских хеадеров, и весь плеер будет в одном файле, как в спирите 1.9.

Может, ты еще windows.h перепишешь? /сарказм
Не рекомендую ходить по пути обгрызвния стандартных/готовых/чужих хедеров - заработаешь себе и другим боли. И категорически не рекомендую что-то тянуть из спирита. Это вообще ад.

А недоумение моё было лишь по тому поводу, что писать тутор по тому, что уже есть и можно скопипастить, не особо целесообразно.

Вот бы ещё фымод под АРМом работал - тогда вообще шик.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 14-06-2018 в 09:55:

~ X ~ твой плеер умеет играть с того места где игрок сейв сделал а потом загрузился? Надо сделать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 14-06-2018 в 10:03:

Цитата:
~ X ~ писал:
Я вроде запилил асинхронную загрузку

Как говорил Шерлок Холмс - "а вот с этого момента прошу рассказывать максимально подробно". Что за асинхронная загрузка?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 14-06-2018 в 10:05:

XaeroX это когда на DM_Tropics модельки появляются из воздуха прямо под носом у изумлъоннава игрока.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 14-06-2018 в 10:19:

А, асинхронная загрузка моделек.
Я подумал, что речь об асинхронной загрузке музыки для фмода.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 14-06-2018 в 10:34:

Цитата:
~ X ~ писал:
Какая версия фмода? Та, что в XDM или что-то еще нашёл?

Да, та самая. Дллка версии 3.75, сошка вроде бы тоже, т.к. в Init плеера в худе стоит проверка на версию.
Цитата:
~ X ~ писал:
А проблему долгой инициализации/подвисаний не решил?

Долгой инициализации чего? Фмода? Долгой это как? Мод стартует как обычно, без заметных задержек. MP3 запускаю пока только консольной командой, т.е. игра в этот момент на паузе. Сделаю триггер - проверю в процессе игры.
Цитата:
~ X ~ писал:
Не рекомендую ходить по пути обгрызвния стандартных/готовых/чужих хедеров - заработаешь себе и другим боли.

Хм, вот в спирите 1.9 вполне себе рабочий фмод с огрызками из фмодовских хедеров.
Цитата:
~ X ~ писал:
И категорически не рекомендую что-то тянуть из спирита. Это вообще ад.

Как будто я первый раз что-то оттуда тяну При должном старании и внимательности, на сегодняшний день я могу скопипастить оттуда даже мовевитч. Только это мне не надо. По крайней мере пока.
Цитата:
~ X ~ писал:
писать тутор по тому, что уже есть и можно скопипастить, не особо целесообразно.

Это не ради самого плеера, а ради небольшого дополнения - сохранения/загрузки позиции трека, и продолжения воспроизведения после загрузки.
В идеале можно было бы вообще выкинуть фмод, и использовать код для работы с MP3 из ксаш-движка. Но фмод умеет во много форматов, были бы кодеки.


Отправлено Дядя Миша 14-06-2018 в 10:53:

Цитата:
Ku2zoff писал:
При должном старании и внимательности, на сегодняшний день я могу скопипастить оттуда даже мовевитч.

А парент-систему из ксаш-мода смогёшь?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 14-06-2018 в 11:34:

Дядя Миша дык она под голдсорсом наверное не заработает. Возможно смогу, а смысл?


Отправлено Ku2zoff 15-06-2018 в 17:05:

Вот, очередной нупский вопрос от меня. Почему болты арбалета под водой по вертикали очень сильно косят при выстреле, если стреляешь не строго вниз или вверх? То есть отклоняются ниже или выше от точки прицеливания? Как это победить, чтобы они летели и на воздухе, и в воде чётко в прицел? Ну и при погружении болта из воздуха в воду то же самое.


Отправлено Chyvachok 15-06-2018 в 17:36:

Ku2zoff со снарядами в воде вроде еще фигня что они немного изменяют траекторию когда входят-выходят с воды насколько я помню.


Отправлено Ku2zoff 15-06-2018 в 18:38:

Проблему с изменением траектории при выстреле из-под воды я решил. А вот с погружением снаряда в воду не решил. Из-под воды стреляет норм, а при попадании из воздуха в воду изменяет траекторию. Наверное, придётся "убивать" снаряд при попадании в воду. Всё равно это у меня лазерный луч пушки инженера в TFC. Пусть через воду не стреляет. У этого оружия по моей задумке весьма узкая область применения, типа разрушения металлических объектов (всякие замки, решётки и прочее, что пули не берут). Урон для мяса огромный, дерево поджигает, металл плавит. Патронов мало, чтобы игрок берёг их именно для металла, т.к. мясо можно пострелять обычными пулями, дерево можно поджечь огнемётом, а вот металл либо взрывать, либо лазер.


Отправлено Sigurth 16-06-2018 в 07:13:

Ku2zoff Если судить по коду из Ксаша и по простым наблюдениям, то при попадании ентити в воду, ее скорость по оси Z просто делится пополам.

C++ Source Code:
// just crossed into water
SV_StartSound( ent, CHAN_AUTO, "player/pl_wade1.wav", 1.0f, ATTN_NORM, 0, 100 );
ent->v.velocity[2] *= 0.5;

Можно попробовать делать проверку на пересечение энтити с водой на сервере и умножать обратно на 2. И после чего задать уже свой вариант изменение скорости при попадания в воду. Должно получиться.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Chyvachok 16-06-2018 в 07:46:

Цитата:
Ku2zoff писал:
Всё равно это у меня лазерный луч пушки инженера в TFC. Пусть через воду не стреляет. У этого оружия по моей задумке весьма узкая область применения, типа разрушения металлических объектов (всякие замки, решётки и прочее, что пули не берут). Урон для мяса огромный, дерево поджигает, металл плавит. Патронов мало, чтобы игрок берёг их именно для металла, т.к. мясо можно пострелять обычными пулями, дерево можно поджечь огнемётом, а вот металл либо взрывать, либо лазер.


Неплохая идея сделать чтобы пули и прочее наносили разный урон бреакаблям, а то меня в ХЛ всегда веселило что башню танка можно вскрыть ломом, хотя впринципе это не сложно запилить. Кстати интересно как вообще дела с твоим модом со этими разными наработками? Звучит довольно интересно, особенно учитывая твои фичи вроде ползания и гейтсеквенций для монстров.


Отправлено Дядя Миша 16-06-2018 в 08:26:

Надо делать корочи кастомную физику и там корректно скорость снижать, а не вот эту вот вот эту русофобию.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 16-06-2018 в 11:02:

Дядя Миша ясно понятно, что кастомная физика поможет. Если без неё то, как Sigurth предложил, склонировать из движка SV_CheckWaterTransition, засунуть в тчинк, и там доумножать обратно вертикальную компоненту pev->velocity на 2.
Кстати, а вот в TFC гвоздям и этому самому инженеровскому лазеру пофиг на воду. Специально проверил. Что за фокус такой?


Отправлено Дядя Миша 16-06-2018 в 12:40:

Ku2zoff может у них моветип ноклип стоит?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено domded 16-06-2018 в 12:44:

Ета, вапрос по ксашхт. Я сам не компилил ещё со светом, но набудущее, шоб прикинуть, скока работы придётса делать. Может ли хт корректно общитывать свет от лайтов для красоты теней, отбрасивыемых енв_моделями? И есть ли поддержка блокровки света ентими енв-моделями, как обышными бращоми?


Отправлено Дядя Миша 16-06-2018 в 12:50:

domded тебя на CSM забанили? Всё может. И красивое освещение от статичных моделей и тени отбрасывает и так далее.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено domded 16-06-2018 в 13:03:

Спасибо за ответ!
Меня не забанили, роскомнадзор похоже блочит. Не могу на сайт войти, пишет соединение сброшено.


Отправлено Дядя Миша 16-06-2018 в 13:40:

domded у них там были какие-то проблемы во второй тест камере, но похоже что всё уже в полном порядке. Просили тебе передать, чтобы ты влез в скафандр и дул прямо туда.

https://cs-mapping.com.ua/forum/showthread.php?t=38929

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 16-06-2018 в 16:05:

Цитата:
Дядя Миша писал:
может у них моветип ноклип стоит?

Так при моветип_ноклип энтити не коллайдят ни с чем.
Тут вот какое дело. Нас жестоко нае обманули, короче, расходимся. Т.к. сорцев TFC нету, понять поведение гвоздей и инженерного лазера в TFC нет возможности. Но есть сорцы DMC. Я на 100% уверен, что код гвоздей там идентичен TFC-шному, как код гвоздей обычной TF идентичен коду гвоздей первокваки. Я запустил TFC, проверил поведение гвоздей - пофиг на воду. Запустил DMC - там тоже пофиг. Взял сорцы DMC и раскомментил там вот такую строку:
C++ Source Code:
//Arent we doing this client side?
//UTIL_GunshotDecalTrace( &tr, DECAL_GUNSHOT1 + RANDOM_LONG( 0, 4 ) );

Гвозди в DMC невидимые. Да, да. Серверные гвозди не шлются клиентам для экономии трафика. Зато есть эвент, который рисует гвозди (и декали с партиклями от них) на клиенте. В ev_hldm.cpp, ага. Так вот. Когда я вернул рисование серверных декалей, то обнаружил, что серверные гвозди попадают совсем не туда (и урон наносят не туда), куда клиентские, если они прошли через воду на пути к цели. На клиентские-то вода не действует. И в TFC, конечно, аналогично. А я несколько раз много лет назад замечал, что в TFC/DMC странно проблематично убить вражыну из гвоздомёта, когда он под водой. Теперь всё сходится. Вальвовцам за такое надо по рукам надавать.
Так что, граждане форумчане, не все сетевые оптимизации одинаково полезны.

Добавлено 16-06-2018 в 23:05:

Цитата:
Chyvachok писал:
Неплохая идея сделать чтобы пули и прочее наносили разный урон бреакаблям, а то меня в ХЛ всегда веселило что башню танка можно вскрыть ломом, хотя впринципе это не сложно запилить.

Конечно не сложно. Я вот, например, запретил ножу ломать металл и дерево. А монтировке оставил это возможность. Дело в том, что у меня по задумке несколько классов игроков с разным вооружением. И каждый в прохождении делает то, что может.
Цитата:
Chyvachok писал:
Кстати интересно как вообще дела с твоим модом со этими разными наработками? Звучит довольно интересно, особенно учитывая твои фичи вроде ползания и гейтсеквенций для монстров.

У меня не готово ни одной полноценной карты пока ещё. Всё наброски. И некоторые вещи я до сих пор не сделал. Сейчас я уже доделал лазерный пистолет, и возьмусь за огнемёт. Из интересного оружия больше ничего нет (всё неинтересное, типа пулемёта, снайперки и всяких ножей с гаечными ключами давно написано), кроме огнетушителя. Но его сделаю на основе огнемёта. Выпущу сначала маленький наборчик из 3-4 карт для одного игрока, посмотрим, понравится ли вам. Если понравится, буду пилить дальше.


Отправлено Дядя Миша 16-06-2018 в 19:24:

Цитата:
Ku2zoff писал:
Так при моветип_ноклип энтити не коллайдят ни с чем.

Да им и не надо коллайдить. Они знают свой хитпоинт и летят прям туда.

Цитата:
Ku2zoff писал:
Гвозди в DMC невидимые. Да, да. Серверные гвозди не шлются клиентам для экономии трафика.

Поздравляю, вот ты и открыл для себя параметрические энтити.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 22-06-2018 в 12:30:

Решил, скопипасть Бузерову спрайтовою траву в обычну хл, перенес я её корочи и столкнулся с проблемой что она использует одну чисто параноевску фишку "R_LightPoint" вроде так называется и она отвечает за освещения этой травы хотелось бы узнать как отвязать от этой штуки и сделать нормальное освещения. Смотрел код Ксаша там ведь похожая травка вот там написано что нужно через лайтмапу ей делать как-то освещения.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 22-06-2018 в 13:20:

В TriAPI функция LightAtPoint делает как раз то что тебе надо.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 22-06-2018 в 13:40:

Цитата:
Дядя Миша писал:
В TriAPI функция LightAtPoint делает как раз то что тебе надо.

То есть её можно из ксаша взять вписать в хл и вместо этой строчки
R_LightPoint (s->pos, s->lightcolor);

написать такую

gEngfuncs.pTriAPI->LightAtPoint(s->pos, s->lightcolor);
или это не то?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 22-06-2018 в 16:15:

Luciferchik ну да. Или взять HL SDK 2.4, там она уже прописана.

Добавлено 22-06-2018 в 19:15:

https://github.com/ValveSoftware/ha...n/triangleapi.h

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nekonomicon 22-06-2018 в 16:16:

Цитата:
~ X ~ писал:
Ku2zoff а ничего что в XDM он уже есть?
Кстати, как ты его заставил быть кроссплатформенным? Мне утверждают, что под подлинуксом фмод так и не заводится. Но на всякий случай я честно впилил fmod.so.

Он не opensource и под *BSD готовых сборок нет(хотя есть почему-то под Solaris!)
На одноплатниках на arm тоже использовать нельзя.
Под android его можно использовать и даже есть готовые биндинги для java.
На самом деле есть опенсорсный cAudio, который можно использовать, как альтернативу.


Отправлено Luciferchik 22-06-2018 в 16:49:

Дядя Миша Ничего не изменилось она как рисовалась в черном цвете как с этой строчкой так и без неё может здесь есть ещё что-то мне не ясное

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 22-06-2018 в 17:16:

C++ Source Code:
gEngfuncs.pTriAPI->Color4f( s->lightcolor[0], s->lightcolor[1], s->lightcolor[2], alpha );

А LightAtPoint возвращает значения в диапазоне 0-255. Чтож вы такие беспомощные-то...

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 22-06-2018 в 17:49:

Цитата:
Дядя Миша писал:
А LightAtPoint возвращает значения в диапазоне 0-255.

Приведи кусочок кода нужного немного, пожалуйста
Цитата:
Чтож вы такие беспомощные-то...

Сори, просто иногда могу сразу понять, а иногда начинаю сильно тупить

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 22-06-2018 в 17:55:

Цитата:
Luciferchik писал:
Приведи кусочок кода нужного немного, пожалуйста

какого еще кода? Ты не знаешь как диапазоны ремапить?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 22-06-2018 в 18:13:

Цитата:
Дядя Миша писал:
какого еще кода? Ты не знаешь как диапазоны ремапить?

Это что-то типа этого
g->color[0] = min((lightcolor[0] >> 7), 255 ); или там где задаешь одно значения и потом им оперируешь, прости я уже давно не открывал с++ и много чего забыл так как изучал в любительской форме этот язык

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 22-06-2018 в 19:19:

Причём тут язык, это чисто математическая операция. Вот у тебя число в диапазоне 0 - 255. Что нужно сделать чтобы привести его к диапазону 0-1?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 22-06-2018 в 20:08:

Цитата:
Дядя Миша писал:
Причём тут язык, это чисто математическая операция. Вот у тебя число в диапазоне 0 - 255. Что нужно сделать чтобы привести его к диапазону 0-1?
Ничего в голову не приходит как деления 1\255

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 22-06-2018 в 21:39:

Luciferchik ну вот. Сам знаешь - сам спрашиваешь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 27-06-2018 в 21:44:

C++ Source Code:
void		( *R_UserTracerParticle )		( float * org, float * vel, float life, int colorIndex, float length, unsigned char deathcontext, void ( *deathfunc)( struct particle_s *particle ) );
Все параметры понятны, кроме deathcontext. Что это? Для чего используется и какие может принимать значения?


Отправлено sas 06-07-2018 в 15:39:

Как хл считает боди для моделей?


Отправлено Ku2zoff 06-07-2018 в 20:40:

sas
void SetBodygroup( void *pmodel, entvars_t *pev, int iGroup, int iValue )
int GetBodygroup( void *pmodel, entvars_t *pev, int iGroup )
Ищи в сорцах халфы эти функции и смотри, по какой формуле боди находятся и назначаются соответственно.


Отправлено sas 13-07-2018 в 16:02:

Ku2zoff
Блин, а хл не может боди на вьюмоделях менять? Сколько я не пробовал, pev->body не работает, , все значения перебрал. В qc бодигруппы все расписаны, но все без толку.

code:
$body suit "glock_handsmesh" $bodygroup "glock" { studio "glock_ref" studio "glock_ref_unloaded" }

C++ Source Code:
1
void CGlock::PrimaryAttack( void )
2
{
3
  if ( !(m_pPlayer->m_afButtonPressed & IN_ATTACK) )
4
    return;
5
  if (m_iClip == 0)
6
  {
7
    pev->body = 1;
8
    ALERT(at_console, "unloaded\n");
9
  }
10
  GlockFire( 0.01, 0.1, TRUE );
11
}


Отправлено Ku2zoff 13-07-2018 в 16:49:

Цитата:
sas писал:
Блин, а хл не может боди на вьюмоделях менять?

Конечно может. Только боди надо слать на клиент как третий аргумент SendWeaponAnim:
C++ Source Code:
SendWeaponAnim( iAnim, UseDecrement() ? 1 : 0, bUseScope );

Вот тебе пример из python.cpp. Просто напросто можешь вставить pev->body во всех вызовах в третий аргумент, чтобы не сочинять новые условия. И не забудь передавать бодю в эвенте на клиент, если используешь эвенты.

Добавлено 13-07-2018 в 23:49:

З.Ы. чтобы было проще, можешь применить к своим исходникам тутор Xash Weapon System. Там достаточно просто указывать pev->body, и больше ничего менять не надо.


Отправлено ~ X ~ 15-07-2018 в 19:42:

HL не может. XDM может

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 17-07-2018 в 05:54:

Подскажите, плиз, как правильно записывать (а потом, соответственно, читать) строки из бинарного файла. Есть вот такой говнокод:

C++ Source Code:
1
const char *txt = GetSomeText();
2
size_t len = strlen(txt);
3
 
4
fwrite(&len, sizeof(len), 1, file);
5
fwrite((char *)txt, len, 1, file);
6
 
7
*****************************
8
size_t len;
9
fread(&len, sizeof(len), 1, file);
10
 
11
char *txt= new char[len];
12
fread(txt, len, 1, file);
13
UseSomeText(txt);
14
delete[]txt;

В самом бинарнике строка (путь к файлу в папке) соответствует записываемой. Но вот в функции UseSomeText почему-то нет. Файл не находится программой. МБ там какие-то непечатаемые символы есть?


Отправлено XaeroX 17-07-2018 в 07:24:

Ku2zoff
Не вижу fopen, ты файл точно переоткрываешь для чтения?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 17-07-2018 в 07:50:

XaeroX ну разумеется, это только огрызок кода. Из файла без проблем читается заголовок и всякие int-ы. А вот с char-ами проблема. ХЗ, возможно, просто не срабатывает gEngfuncs.COM_LoadFile по читаемому из файла пути. Халфа же.


Отправлено Sigurth 17-07-2018 в 08:34:

Ku2zoff Ты размер строки считаешь как strlen(text), прибавь к ней единицу, так как strlen не учитывает нуль терминатор. Возможно проблема в этом

__________________
Никогда не поздно сделать мод под хл1


Отправлено XaeroX 17-07-2018 в 10:49:

Лучше даже, наверное, так:
char *txt= new char[len+1]();
Чтобы текст был гарантированно нуль-терминированным.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 17-07-2018 в 13:38:

Вы только этот терминатор занулить не забудьте.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-07-2018 в 14:21:

Воткнул проверку с помощью strcmp, выяснил, что новая строка txt больше исходной, которая была записана в файл. Стал грешить на отсутствие нуль-терминатора, хотя дополнительную длину для него пробовал выделять. Погуглил и выяснил, что для записи и чтения строк правильнее использовать fputs/fgets, а не fwrite/fread, т.к. последние просто пишут символы по порядку, а не строку, и не пишут в файл терминатор. Проблема решена.

Добавлено 17-07-2018 в 21:21:

З.Ы. щас немного потестирую, и выложу тутор по сохраняемому фмоду.


Отправлено Дядя Миша 17-07-2018 в 15:59:

Ku2zoff я надеюсь ты записываешь позицию времени в файлик HL4, а читаешь на клиенте, иначе это ерунда, а не тутор. В противном случае можно вообще это время в квар записывать клиентский с флажком ARCHIVE.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 17-07-2018 в 16:28:

Цитата:
Дядя Миша писал:
Вы только этот терминатор занулить не забудьте.

new со скобочками же.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 17-07-2018 в 16:35:

XaeroX эти скобочки в шестёрке сработают?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-07-2018 в 17:18:

Цитата:
Дядя Миша писал:
я надеюсь ты записываешь позицию времени в файлик HL4, а читаешь на клиенте, иначе это ерунда, а не тутор.

Да, записываю в HL4, и читаю естественно на клиенте, чтобы для каждого уровня текущий трек и позиция сохранялись. Сигурт предположил, что можно бы писать в какой-нибудь файл .clsv, и грузить из него, чтобы не засирать зазря сейвбуффер и sav-файл. Но так как раз ерунда и получится, т.к. грузиться будет всегда один файл для каждой карты, независимо от названия сохранёнки. Тем более, что в дальнейшем я планирую ещё кое-что в этот файл сохранять. Хотя бы кастомные клиентские декали.
Осталось разобраться с автосейвами и замолканием музыки при смене уровней. Последнее, кстати, стандартное поведение фмода в спирите 1.9. Пробовал с помощью квара sv_newunit управлять этим - не работает. Наверное, надо просто отправлять на клиент мессагу с пустым именем MP3 файла, а не затыкать плеер насильно в функции VidInit.


Отправлено XaeroX 17-07-2018 в 17:31:

Дядя Миша
Должны, по идее.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 17-07-2018 в 17:54:

Цитата:
Ku2zoff писал:
Тем более, что в дальнейшем я планирую ещё кое-что в этот файл сохранять. Хотя бы кастомные клиентские декали.

правильно. Это хороший тутор получится.

Цитата:
Ku2zoff писал:
а не затыкать плеер насильно в функции VidInit.

VidInit в халфе вызывается одновременно с приходом на клиент svc_serverdata, вообще довольно странное место для VidInit.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-07-2018 в 18:52:

Я вот что подумал. Чтобы не писать сразу много нового кода, опробую это всё на инвазионе. Сорцы открыты, можно юзать. Почему инвазион? Меня всегда бесил в нём MP3-плеер, который не ставится на паузу, и у которого не регулируется громкость. А ещё декали не сохраняются, т.к. они нарисованы через TriAPI. Если не будет лениво, сделаю ещё сошки для linux и выложу на moddb. Отличная возможность всё проверить и попрактиковаться в кодинге.


Отправлено Дядя Миша 17-07-2018 в 18:59:

Ku2zoff лутьше напараное. Там тоже декали + fmod.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-07-2018 в 19:03:

Дядя Миша ну тоже вариант. Посмотрим. Вот избавить первую паранойю от хакнутой opengl32.dll, и сделать там мигающие лайтстили, это да. А не вот это всё.


Отправлено Дядя Миша 17-07-2018 в 19:08:

Ku2zoff скажу по секрету от этого говна даже вторая параноя не избавлена. Поленился я. Там смысл в чём - надо небо рисовать отдельным проходом, чтобы избавиться.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-07-2018 в 19:19:

Цитата:
Дядя Миша писал:
надо небо рисовать отдельным проходом, чтобы избавиться.

Как в спирите? Я уже и так его рисую отдельным проходом. Осталось OpenGL прикрутить, чтобы не юзать хак с кастомной текстурой неба и специальными компиляторами. Заодно прикручу тени и динамический свет. Больше ничего не надо. Разве что освещение воды починить, да увеличить разрешение текстур скайбокса.


Отправлено Дядя Миша 17-07-2018 в 20:42:

Цитата:
Ku2zoff писал:
Разве что освещение воды починить

*рж0т*
освещение воды даже я не могу починить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 19-07-2018 в 18:21:

Цитата:
Ku2zoff писал:
Я вот что подумал. Чтобы не писать сразу много нового кода, опробую это всё на инвазионе. Сорцы открыты, можно юзать. Почему инвазион? Меня всегда бесил в нём MP3-плеер,

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

PS: зачем вам вообще клиентский сейв для МРЗ? Разве так трудно в сообщении с сервера прислать позицию? :-/

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 19-07-2018 в 18:31:

Цитата:
~ X ~ писал:
зачем вам вообще клиентский сейв для МРЗ? Разве так трудно в сообщении с сервера прислать позицию? :-/

Из спортивного интереса. И, кстати, ты как позицию эту определять собрался на сервере? Трек ведь на клиенте фмодом играется. Конечно, можно прицепить фмод к серверу, но это тот ещё изврат.
Цитата:
~ X ~ писал:
следующий мод сделаю максимально говняным чтоб всем хотелось его исправить )

Что ты подразумеваешь под словом "говняный"? Постоянную игровую аудиторию, общее количество сыгравших за всё время, реиграбельность, или техническую часть? По первым трём пунктам, XDM, к боюсь, проигрывает инвазиону. А до того, что там накодено внутри большинству нет дела, если мод интересный. Ну захотелось мне кой-чего переделать в инвазионе, чтобы испытать эти клиентские сейвы. Некоторые вон вообще бесполезными делами, вроде ремодов и сборки редукс-паков занимаются.


Отправлено Дядя Миша 19-07-2018 в 18:32:

Цитата:
~ X ~ писал:
следующий мод сделаю максимально говняным чтоб всем хотелось его исправить )

Я вам уже десятки лет твержу, что лёгкий налёт незавершенности стимулирует всплеск творчества, но кто в наше время слушает дядю Мишу?

Цитата:
~ X ~ писал:
Разве так трудно в сообщении с сервера прислать позицию? :-/

А как ты на сервере получишь позицию, если музыка играет на клиенте?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 19-07-2018 в 18:37:

Цитата:
~ X ~ писал:
следующий мод сделаю максимально говняным чтоб всем хотелось его исправить )

Тут главное - не перестараться.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ~ X ~ 20-07-2018 в 08:45:

Цитата:
Ku2zoff писал:
Что ты подразумеваешь под словом "говняный"?

Сырцы ж, ё-моё. Читай, хоть, на что я тебе отвечаю.

Цитата:
Ku2zoff писал:
Трек ведь на клиенте фмодом играется. Конечно, можно прицепить фмод к серверу, но это тот ещё изврат.

Цитата:
Дядя Миша писал:
А как ты на сервере получишь позицию, если музыка играет на клиенте?

Ребят, вы чего? ) Раз это такая интрига, я даже не буду говорить "посмотрите исходники"

Цитата:
XaeroX писал:
Тут главное - не перестараться.

Судя по популярности сырцов кваки, хл, и... ещё некоторых движков, safety margin приличный

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 20-07-2018 в 08:48:

Цитата:
~ X ~ писал:
Раз это такая интрига, я даже не буду говорить "посмотрите исходники"

Ты точно понимаешь что такое клиент, а что сервер? Я просто помню, как ты регал квары на сервере и удивлялся, почему нелокальные игроки их не видят.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 20-07-2018 в 12:00:

По-моему, они на кубани на другом языке разговаривают... попробуем намекнуть что-ли.

Дядя Миша ты точно понимаешь, о чем говоришь? А то я помню твои выпады про сортировку строк в дельте, когда сам не знал, где их можно менять, а где - нет. А потом даже заметку написал "как сделать чтобы строки можно было менять, как в xdm"
/копипаста

Да ну нафиг. Ваша лень открыть сырцы - ваши проблемы.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 20-07-2018 в 12:57:

~ X ~ ну давай, просвети же нас, как считывать позицию музыки на сервере.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 20-07-2018 в 13:25:

~ X ~
У нас в Сибири тоже масковским языком не особо владеют, так что присоединяюсь к вопросу Дяди Миши.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 20-07-2018 в 16:59:

В спирите (1.7 и 1.9 точно, в более старых ХЗ) после чейнджлевела не пропадает из худа спрайт поезда, если игрок юзает этот поезд. Перерыл всю серверную дллку спирита, так и не нашёл это исправление. Обращения к m_iTrain в коде игрока идентичны с обычной халфой, но в халфе спрайт исчезает, и появляется снова только если прибавить или сбавить скорость. Подскажите, где собака зарыта спрятан фикс.


Отправлено Дядя Миша 20-07-2018 в 19:02:

Ku2zoff невнимательно смотрел. Там где в коде игрока Prcecahe
m_iTrain = TRAIN_NEW меняется на m_iTrain |= TRAIN_NEW
всё

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 20-07-2018 в 19:47:

Дядя Миша блин, точно. Это ж биты. Это вальва как обычно такой баг посадила по невнимательности. И до сих пор не исправила за 20 лет. Теперь я наконец понял, почему надо использовать SetBits, FBitSet и ClearBits, а не вот эту вот порнографию с математическими знаками.

Добавлено 21-07-2018 в 02:47:

Может быть есть где-нибудь у кого-то список таких вот маленьких досадных багов? Охота поисправлять. Не в каждых сорцах можно сориентироваться, т.к. иногда авторы не оставляют комментов. А самому искать какие-то конкретные места долго и тяжело. Ну и переигрывать в игру, чтобы что-то такое найти времени нет.
Пока что исправил самое очевидное: прицелы, фонарик, геймтитл, поезд. Непрекращающиеся звуки зарядников, когда здоровье и броня на максимуме, невозможность открыть func_door_rotating, если игрок движется не прямо на дверь, а стрейфится или пятится на неё.


Отправлено Дядя Миша 20-07-2018 в 20:29:

Цитата:
Ku2zoff писал:
Теперь я наконец понял, почему надо использовать SetBits, FBitSet и ClearBits, а не вот эту вот порнографию с математическими знаками.

Для красоты оформления восновном.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 23-07-2018 в 08:33:

Цитата:
Ku2zoff писал:
Может быть есть где-нибудь у кого-то список таких вот маленьких досадных багов?

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

>>Теперь я наконец понял, почему надо использовать SetBits,
я тоже этим пользуюсь, но считаю плохой практикой. )

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено FreeSlave 23-07-2018 в 14:13:

Ku2zoff, nekonomicon собирал фиксы из разных репозиториев и пушил в этот https://github.com/FWGS/hlsdk-xash3d
Смотреть примерно отсюда https://github.com/FWGS/hlsdk-xash3...1fb117e1058+174 и дальше по Newer.

Добавлено 23-07-2018 в 17:13:

Альтернативно можешь пуллреквесты глянуть https://github.com/FWGS/hlsdk-xash3...Apr+is%3Aclosed

__________________
I'm on github
I'm on opendesktop.org


Отправлено Cybermax 19-08-2018 в 07:11:

Можно ли сделать такой прицел не используя параноевский рендер?



Отправлено Ku2zoff 19-08-2018 в 08:28:

Cybermax можно. Само приближение надо рисовать отдельным проходом как inset view в режиме спектатора.
http://img.playground.ru/images/0/3/6-2.jpg
Прицел, короче, нужен примерно такой, с толстыми краями, чтобы спрятать под ним края вьюпорта. Ну это теория, я конечно не проверял. Но попробую сделать сам такое, идея интересная.


Отправлено Cybermax 19-08-2018 в 09:27:

Ku2zoff
Моделька для экспериментов.
http://rgho.st/6hs5MyDWf


Отправлено Chyvachok 19-08-2018 в 18:54:

Cybermax Это случаем не Red Orchestra? Мне там еще одна фишка нравиться, что прицел не закреплен по средине экрана как во всех играх, а немного двигается с мышкой, Free Aim вроде называется. Ее еще в моде для Half-Life 2 под названием SMOD можно включить опционально, она как по мне оружию более динамичное ощущение добавляет. Кстати там тоже есть пусть изначально не заюзаная возможность делать прицелы как на скрине где зум есть только в прицеле.

Кстати кто-то фиксил в халве эффект контузии из TFC? Я вроде видел его в разных модах, это когда у игрока камера вместе с оружием в разные стороны кружиться после взрыва гранаты шпиона, я заметил там оружие стреляет в противоположную сторону от которой оно смотрит во время действия эффекта.


Отправлено Ku2zoff 18-09-2018 в 15:37:

Сижу, изобретаю велосипед Подскажите в общих чертах, а лучше с примером, что нужно, чтобы нарисовать средствами OpenGL вместо фейса, покрашенного определённой текстурой, другую текстуру: экран монитора или телевизора. Откуда берётся текстура неважно, думаю, что я управлюсь сам с захватом вида из trigger_camer'ы. Меня интересует сама "рабочая" поверхность. Глядел старые ксаши и тринити. Если я всё правильно понял, там строится Vertex Array. Он же ускоряет процесс рендеринга по сравнению с рендерингом в текстуру?


Отправлено Дядя Миша 18-09-2018 в 17:38:

Ku2zoff не надо средствами OpenGL, движок сам всё нарисует. Просто подмени ему gl_texturenum на свою текстуру в которую отрендерил монитор. И дай флажок SURF_DRAWTILED, чёб лайтмапу не рисовало.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 18-09-2018 в 20:20:

Не выходит. Что-то я не так делаю.

C++ Source Code:
glBindTexture(GL_TEXTURE_2D, texture);
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, ScreenHeight, ScreenWidth, ScreenHeight, 0);

Это типа захватываем кадр в текстуру.
C++ Source Code:
for (int i = 0; i < mod->numtexinfo; i++)
{
  if (strstr(pTex[i].texture->name, "FIFTIES_MON1"))
    pTex[i].texture->gl_texturenum = texture;
}

А это типа подменяем gl_texturenum на наш индекс. Мне бы знать все нужные шаги, и откуда чего вызывать. А то в этих всех сорцах чорт ногу сломит, везде по-разному.


Отправлено Дядя Миша 18-09-2018 в 20:57:

Ku2zoff небось слишком рано ставишь номер, движок перезатирает.
Но я точно знаю что это работает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 19-09-2018 в 03:13:

Ku2zoff
Почему пятый аргумент у glCopyTexImage2D - ScreenHeight?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 19-09-2018 в 10:32:

Цитата:
Дядя Миша писал:
небось слишком рано ставишь номер

А в каком месте не рано ставить его? DrawNormal/TransparentTriangles не годится?
XaeroX это я косяк. Кажется, там 0 должен быть. Дома буду, посмотрю, как правильно координаты указывать.


Отправлено Дядя Миша 19-09-2018 в 17:36:

Ku2zoff ты сперва убедись что у тебя текстура корректно подменяется. Там не strstr нужен, а наверное stristr или stricmp.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 18-10-2018 в 06:57:

Остался у кого-нибудь старый Xash 0.39, который мод? Скиньте, плиз. Сорцы для ковыряния у меня есть, а сам архив с модом, со всеми его скриптовыми текстовиками и ресурсами, пропал вместе со сгоревшим жёстким диском где-то в 2010-м году.
И ещё, помнится, существовали сорцы этого мода за версией 0.45, там были добавлены порталы, помимо мониторов и зеркал. Может быть у кого-то тоже завалялись где-то в коллекции. У меня этот архив постигла та же судьба, что и предыдущий. Вместе с моей смищной озвучкой для халфы


Отправлено Дядя Миша 16-11-2018 в 21:45:

Ku2zoff на кой оно тебе?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-11-2018 в 09:44:

Дядя Миша я хочу проверить, мой ли косяк в мониторах (при копипасте), или на новом движке/с новыми драйверами и в оригинальном ксаш-моде будет такой же баг.


Отправлено Дядя Миша 17-11-2018 в 15:22:

Ku2zoff да ты на новых ксаш-модах провиряй.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-11-2018 в 16:54:

Дядя Миша они работают только с ксаш движком. Не годится такое.


Отправлено Дядя Миша 17-11-2018 в 18:05:

Ku2zoff ну тада страдай дальше

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 08-01-2019 в 14:34:

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

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 08-01-2019 в 15:35:

Luciferchik VHLT поддерживают текстуру env_sky или 3dsky, точно не помню, которая всё норм освещает, как обычное небо, но при этом прозрачная как null.


Отправлено Luciferchik 09-01-2019 в 19:31:

Цитата:
Ku2zoff писал:
Luciferchik VHLT поддерживают текстуру env_sky или 3dsky, точно не помню, которая всё норм освещает, как обычное небо, но при этом прозрачная как null.
Спасибо все работает с текстурой env_sky, я и позабыл об этой фиче, а ведь когда-то читал лог и там было написано такое

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено ~ X ~ 10-01-2019 в 11:12:

Раз уж об этом заговорили.
А как в спирите сделано разделение рендера энтить скайбокса и мира?
Сервер же шлёт всё подряд в пределах PVS. Получается, что энтити скайбокса надо помечать на отправку вне зависимости от PVS, а на клиенте полкадра рисовать только скайбоксовые энтити, а ещё полкадра - всё остальное КРОМЕ скайбоксовых энтить. Это вообще есть у кого-нибудь?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 10-01-2019 в 17:49:

Цитата:
~ X ~ писал:
Получается, что энтити скайбокса надо помечать на отправку вне зависимости от PVS

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

В спирите конечно я так сделать не мог, поступил по иному. Там небо шлёт лучи во все стороны, определяя размер небесного куба. Дальше из длины этих лучей вычисляется AABB, для которого вызывается UTIL_EntitiesInBox.
И все найденные энтити помечаются как видимые отовсюду.

Цитата:
~ X ~ писал:
а на клиенте полкадра рисовать только скайбоксовые энтити, а ещё полкадра - всё остальное КРОМЕ скайбоксовых энтить

Ну там через nextView оно рисуется. Доступа к очистки буффера кадра нет, поэтому приходится такое небо красить нуллом, иначе движок всё перезатрёт.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 11-01-2019 в 08:08:

Дядя Миша я тоже думал так на сервере сделать, но если небо не кубическое? фаил.
На клиенте - понятно, что через некствью. А как рисовать только боксовые энтити? Допустим, они помечаются каким-то флагом. Тогда надо рисовать только мир и их...

(интересуюсь, в основном, в теории)

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 11-01-2019 в 14:38:

Цитата:
~ X ~ писал:
но если небо не кубическое? фаил.

ну не то чтобы файл. Вероятно какая-то часть энтить не попадёт в PVS. Сложно сказать.

Цитата:
~ X ~ писал:
А как рисовать только боксовые энтити?

Ну ставишь оригин неба, он строит для каждого прохода клиентский PVS заново, рисует первый раз только то, что попало в обзор скайбокса. А во второй - то, что видит сам игрок. Вообщем специально ничего делать не надо.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 11-01-2019 в 15:02:

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

Кстати, нашёл у себя какие-то куски 3Д-неба. Когда-то хотел его пилить, получается

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Luciferchik 11-01-2019 в 16:05:

Есть ещё такой вопрос к тов.Кu2zoff остались ли у тебя нароботки по гейтсеквенциям к монстрам и будишь ли их оставлять в виде тутора на форуме?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 11-01-2019 в 16:44:

Luciferchik остались. Но в виде тутора оформлять ЭТО я не буду. Убого получилось, да и неграмотно сделано. Немного пореверсив свенкооп, я понял, что надо писать новый класс поверх CBaseMonster и работать с ним. Переписывать довольно приличные куски AI, особенно schedule.cpp, заводить дополнительные активности и прочее. Если не будет лень, я займусь этой задачей в этом году, и если всё получится, просто отдам код Дяде Мише, чтобы он добавил его в XashXT. Стыдно иметь в 2019 году рендерер на уровне, и даже превосходящий уровень сорса, а ИИ при этом едва ушедший от первой и второй кваки.


Отправлено Luciferchik 11-01-2019 в 18:21:

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

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 11-01-2019 в 18:29:

Цитата:
~ X ~ писал:
из скайбокса видно отрендеренный мир

да небо оно такое, любит просвечивать. В ксаш-моде я даже специальные проверки вводил, чтобы энтити не светились сквозь небо. Потому что виз это дело не всегда правильно считает. В ку2, ку3 там попроще. Нашёл арию скайбокса и всё остальное игноришь. Впрочем в ку3 скайбокс можно компилятором сделать. Он по сути что делает, берёт комнатку и увеличивает вокруг карты до нужного скейла. И теперь вокруг карты натурально гигантский скайбокс находится. В чём-то такой подход даже корректного многопроходного рендеринга - ведь такое небо отбрасывает тени на основной уровень. Скажем халфовская цитадель могла бы бросать тень на весь город. Хотя в хл2 это вроде как-то тожы разрулили.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 11-01-2019 в 18:51:

Цитата:
Ku2zoff писал:
а ИИ при этом едва ушедший от первой и второй кваки.

ну вот это ты полную ахинею сказал! если в монстрах закрыть баги, оставленные Краном, и сделать всё ООПным - вполне себе монстры.

Да и вообще вся эта заморочка по соотношению нужность/затратность стремится к нулю ибо в реале (не в кино) на ходу никто практически не стреляет.

Дядя Миша ну да, скайбокс - это хак - понятное дело. И туман в ХЛ это доказывает ) По мне - так самое лучшее решение - это гигантская модель. Да, на неё не навесишь ничего, но статика нормальная.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 11-01-2019 в 20:35:

Цитата:
~ X ~ писал:
ну вот это ты полную ахинею сказал! если в монстрах закрыть баги, оставленные Краном, и сделать всё ООПным - вполне себе монстры.

Да и вообще вся эта заморочка по соотношению нужность/затратность стремится к нулю ибо в реале (не в кино) на ходу никто практически не стреляет.

По дефолту монстры не ахти какие. При правильной настройке (ноды и прочее), особенно squadmonster'ы показывают себя очень даже ничего. Насчёт стрельбы на ходу, я вижу таким действиям как минимум три-четыре применения: отстреливаться, медленно отступая назад от напирающих врагов; бить в ближнем бою, зажимая противника в угол; кидать гранаты на бегу в дверь, стрейфясь мимо двери. А ещё можно грантам приделать перезарядку если не на бегу, то пешком. Вон, в сталкере НПС перезаряжаются на ходу до укрытия, если противник их засёк.


Отправлено XaeroX 11-01-2019 в 20:37:

В халфе монстры норм. Но некоторым и правда не помешает возможность стрелять на бегу. А именно солдатам и агрантам.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 11-01-2019 в 20:44:

Мне вот что интересно: в свенкоопе монстры сами по себе быстрее меняют активности и меньше тупят. Для сравнения, если вызывать барнику SCHED_TAKE_COVER_FROM_ENEMY, если зомби к нему подошёл ближе, чем на 256 юнитов, он убегает раз через раз, а то и ещё реже. Может просто затупить, и не двигаться, наполучать от зомби по морде и помереть. В свенкоопе же, барник сваливает от зомби всегда успешно, и таки в итоге отстреливает их, см. первую встречу с зомби после лифта.


Отправлено XaeroX 11-01-2019 в 20:45:

Цитата:
~ X ~ писал:
ибо в реале (не в кино) на ходу никто практически не стреляет.

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

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 11-01-2019 в 20:46:

Цитата:
XaeroX писал:
Но некоторым и правда не помешает возможность стрелять на бегу. А именно солдатам и агрантам.

Всех "человеков" нужно научить или пятиться или убегать от ближнебойных противников.


Отправлено XaeroX 11-01-2019 в 20:46:

Ku2zoff
Там в шедулях есть всякие TASK_WAIT, TASK_WAIT_RANDOM, возможно, их подкрутили. Но на самом деле это не всегда хорошая идея. Быстро реагирующие монстры могут стать проблемой для неопытного игрока. Кто смог с первого раза пройти Xaero на хардкоре или кошмаре, признайтесь?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 11-01-2019 в 21:08:

Цитата:
XaeroX писал:
Там в шедулях есть всякие TASK_WAIT, TASK_WAIT_RANDOM, возможно, их подкрутили.

Нет. Дядя Миша писал, что проблема кроется в интервалах между тчинками и переключении активностей. Во-первых, SetYawSpeed нужно вызывать уже после того, как у нас изменится значение m_Activity. А в хлсдк вызов стоит раньше. Во-вторых, фиксированный интервал в DispatchAnimEvents, из-за чего монстры иногда два раза подряд воспроизводят одну активность. Если сделать интервал таким, каким он высчитывается в StudioFrameAdvance, то монстры будут дёргаться и что-то там ещё будет, я забыл. Короче, надо копать сорс сдк на предмет идентичных функций, там ведь это исправлено.


Отправлено XaeroX 11-01-2019 в 21:13:

Цитата:
Ku2zoff писал:
Во-первых, SetYawSpeed нужно вызывать уже после того, как у нас изменится значение m_Activity.

Это старый баг халфы, который я обнаружил примерно год назад. А до меня его никто не замечал. Но на самом деле он ни на что не влияет. Ну вертятся монстры с чуть иной скоростью, делов-то.
Цитата:
Ku2zoff писал:
Во-вторых, фиксированный интервал в DispatchAnimEvents, из-за чего монстры иногда два раза подряд воспроизводят одну активность.

Это потому что у монстров фиксированный тчинк, 10 fps.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 11-01-2019 в 21:22:

Он и в сорсе фиксированный 0.1, а работает без глюков. Видимо, дело в функциях смены активностей. Там целая куча проверок стоит. Ну погляжу, выгадаю время.


Отправлено Дядя Миша 11-01-2019 в 21:23:

Цитата:
~ X ~ писал:
И туман в ХЛ это доказывает

што именно доказывает?

Цитата:
~ X ~ писал:
По мне - так самое лучшее решение - это гигантская модель

Та лишь бы красиво смотрелось, а там без разницы.

Добавлено 12-01-2019 в 00:23:

Цитата:
Ku2zoff писал:
Он и в сорсе фиксированный 0.1 с, а работает без глюков. Видимо, дело в функциях смены активностей

В сорсе DispatchAnimEvents починили.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 05-03-2019 в 20:26:

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

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Crystallize 07-03-2019 в 05:07:

Цитата:
Ku2zoff писал:
Дядя Миша они работают только с ксаш движком. Не годится такое.


Я версию 0.5 заливал на xash3d.ru и движок тоже.


Отправлено XaeroX 07-03-2019 в 05:45:

Crystallize
Я тебя очень прошу - не разговаривай с чужими постами старше пары недель. Люди обычно не помнят, что говорили/писали вчера, а ты тут такое устраиваешь.
Если есть что сказать нового - создай тему и предложи всем обсудить.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено JPEG 10-03-2019 в 15:03:

Друзья, а где в коде находится то, с какой скоростью player шевелит ногами в зависимости от текущей скорости его ходьбы и бега (какой-нить flInterval возможно)?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 10-03-2019 в 15:20:

Yo Den на клиенте StudioModelRenderer и там строчка

C++ Source Code:
m_pPlayerInfo->gaitframe += (m_flGaitMovement / pseqdesc->linearmovement[0]) * pseqdesc->numframes;

там _flGaitMovement это реальная скорость игрока.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 10-03-2019 в 16:36:

Цитата:
Дядя Миша писал:
Yo Den на клиенте StudioModelRenderer и там строчка
C++ Source Code:
m_pPlayerInfo->gaitframe += (m_flGaitMovement / pseqdesc->linearmovement[0]) * pseqdesc->numframes;

там _flGaitMovement это реальная скорость игрока.

ага, гляну, спасибо

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено JPEG 17-03-2019 в 23:57:

Вывожу спрайт взрыва:

MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_SPRITE );
WRITE_COORD( pev->origin.x );
WRITE_COORD( pev->origin.y );
WRITE_COORD( pev->origin.z + 47 );
WRITE_SHORT( g_sModelIndexFireball );
WRITE_BYTE( 5 ); //
WRITE_BYTE( 255 ); // brightness
MESSAGE_END();

пробовал с двумя спрайтами: additive с черной альфой в начале палитры и alphatest с синей альфой в конце палитры - результат минимально отличается: фона спрайта нет, что хорошо, но сам спрайт немного прозрачный (хотя стоит WRITE_BYTE( 255 )). Как сделать его непрозрачным? (через env_sprite спрайты отображаются корректно)

п.с. ксм у всех не пашет?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено FreeSlave 12-05-2019 в 14:57:

Есть проблема с momentary_door, которую можно наблюдать, например, на c2a3a - когда дверь начинает возвращаться назад (если игрок отпустил вентиль), поочередно запускается и останавливается звук движения двери. Это приводит к тому, что играется лишь первый сэмпл (ну или несколько первых), и всё это повторяется пока дверь не достигнет исходного положения.

При использовании вентиля игроком такого не происходит, видимо, потому что промежутки между PlayerUse короче, чем между началом и окончанием "локального" движения (т.е. место назначения успевает обновляться).
При самостоятельном же возвращении вентиля за время между его вызовами Use к двери это локальное движение успевает закончиться, соответственно вызывается LinearMoveDone и остановка звука.

Кто-нибудь разбирался как исправить этот баг (ничего при этом не сломав)?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 12-05-2019 в 15:39:

В ксаш-моде исправлено

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 12-05-2019 в 21:12:

Дядя Миша, спасибо. Остановка звука в отдельном тчинке зарешала.

__________________
I'm on github
I'm on opendesktop.org


Отправлено ~ X ~ 13-05-2019 в 09:44:

В XDM исправлено.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 13-05-2019 в 10:01:

~ X ~
Только что?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Crystallize 15-05-2019 в 12:47:

Вернулся на Спирит из-за его параметрических возможностей.
Не работало НИЧЕГО. Энтити не вращались через мультименеджер. Вектор указываешь-не вращаются, только если напрямую P Y R вобьёшь. Как-то раз у меня вроде получалось заставить их вращаться, с неудовлетворительным впрочем результатом, но потом я и это забыл.
Мучался как ни недели две. В общем пришлось качать всякие примеры, а на использование m_iszFacing их вообще нет даже из тех времён когда спирит был популярен. На ХЛРА вообще что-то для версии 1.0 или 1.1 лежит, из тех времён когда даже motion_manager ещё не придумали, а пользовались trigger_motion. Ну в общем скачал я опять ТЕА от безысходности, стал разбираться. Там оказывается есть простые карты где нет вот этой сотни логических кальк-энтитей названных типа nirealcamshorterpath для реализации стелса.
Что оказалось? Параметр noise, матьиво.
Такой неприметный, в фгдшке указан наравне со всеми, для него и дефолтное значение прописано, нигде не написано обратить на него особое внимание. НО ЕСЛИ ЕГО НЕ УКАЗАТЬ ТО НЕ БУДЕТ РАБОТАТЬ НИЧЕГО. Ну это я на Кварке просто. Как-то это связано с тем что noise посылается в CalcLocus_Ratio. Кстати если его нет, то в консоли ошибка, но не про noise а про CalcLocus_Ratio. И ты на неё смотришь и думаешь "хрень какая-то, у меня нет энтити calc_ratio. Наверное она как-то неправильно инициализировалась в коде".
Что интересно, отсутствие параметра message проходящего через CalcLocus_Velocity, Спириту никак не мешает и ошибок не генерирует.


Отправлено Дядя Миша 15-05-2019 в 13:03:

Цитата:
Crystallize писал:
Энтити не вращались через мультименеджер

С какого перепуга энтити должны вращаться через мульти_менеджер?
Ты наверное имел в виду motion_manager. Спирит-спиритом, но учти, в ксаше все эти прикрепления учитывают коллизии и блокируют другие энтити. А в спирите оно прёт ноклипом, такое в 2000-м году может представляло какой-то интерес, но не более.

Вообще эти кальки это какой-то бред больного наркомана, оно не нужно никак. Надо было просто сделать вменяемую парент-систему.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 15-05-2019 в 13:18:

Дядя Миша моушн, да.
Если бы оно пёрло ноклипом, то невозможно было бы сделать на Спирите тот самый T.E.A. Там у motion_manager есть кажется режим, и не один, который учитывает коллизии.
Паренты конечно хорошо иметь, но кальки позволяют измерять расстояние (хотя это появилось только в 1.8 а для предыдущих версий придётся кодить) и плавно менять скажем скорость вращения в зависимости от этого. В Ксаше я не представляю как это воспроизвести, а то так бы конечно.


Отправлено Дядя Миша 15-05-2019 в 15:19:

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

Добавлено 15-05-2019 в 18:19:

ЗЫ. Ты сейчас вступаешь на зыбкий путь доктора Тресни. Он мне тоже доказывал что сделает брашевый салют на локусах.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 15-05-2019 в 17:13:

Цитата:
Дядя Миша писал:
Что-то я не припомню чтобы там что-то учитывало коллизии.

3 из 5 режимов позиционирования их учитывают.
Цитата:
Дядя Миша писал:
Но на мой взгляд проще написать несколько строчек, чем городить эти бессмысленные системы.

Я с тобой совершенно согласен, я и сам недавно посмотрел на другана который работает на двухмерной Multimedia Fusion и как быстро после 4 месяцев скриптинга развивается его проект и загрустил. Захотелось плюнуть на всё и уйти на Leadwerks 2.X (2008-2012) и писать на Луа: AddForce(x,y,z) и джамппад готов, прелесть. На Голде меня держит в основном хлрад и ещё немного лёгкость набрасывания брашами тестовых карт и скорость запуска тулзов.
Цитата:
Дядя Миша писал:
Что ты там на этих калках делать собрался такого?

Да, я не разобрался и опять полез экспериментировать. Хотя я думаю никто особо не расскажет, тут только код изучать. https://youtu.be/wKdo5f5X_qc?t=47s
Я думаю при нажатии стрейфа мне нужно парентить "игрока" к камере и вместе поворачивать. Я думаю что motion_manager даст объекту скользить вдоль стенки или по наклонной поверхности, а ксашевская парент-система жёсткая и таких вольностей не позволяет. Хотя поднимаемые игроком пушабли как-то так себя и ведут.

Добавлено 16-05-2019 в 00:13:

Цитата:
Дядя Миша писал:
ЗЫ. Ты сейчас вступаешь на зыбкий путь доктора Тресни. Он мне тоже доказывал что сделает брашевый салют на локусах.

Он имел в виду именно использование ключа *locus?


Отправлено Дядя Миша 15-05-2019 в 17:40:

Цитата:
Crystallize писал:
AddForce(x,y,z) и джамппад готов, прелесть

Думаешь в халфе как-то иначе?

Цитата:
Crystallize писал:
Я думаю при нажатии стрейфа мне нужно парентить "игрока" к камере и вместе поворачивать.

Я думаю тебе надо подучить общепринятые термины штоли.

Цитата:
Crystallize писал:
Он имел в виду именно использование ключа *locus?

Можешь поискать эту тему про салют, она здесь на hlfx

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 15-05-2019 в 18:26:

Цитата:
Дядя Миша писал:
Думаешь в халфе как-то иначе?

Конечно. Берёшь отпуск, зовёшь тамаду, и начинаешь: лин энтити ту класс...


Отправлено Дядя Миша 15-05-2019 в 18:48:

Народ в последние годы так обленился, что даже скрипты писать не хочет - ассеты покупает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ghoul [BB] 15-05-2019 в 19:00:

Цитата:
Дядя Миша писал:
В ксаш-моде исправлено


Добавлено 15-05-2019 в 21:51:

Цитата:
~ X ~ писал:
В XDM исправлено.


Выбери меня, выбери меня

На лицо явная конкуренция двух талантливых авторов мощных платформ!!!

Добавлено 15-05-2019 в 21:58:

Цитата:
XaeroX писал:
В халфе монстры норм. Но некоторым и правда не помешает возможность стрелять на бегу. А именно солдатам и агрантам.

Что мешает зомби бить на ходу руками?
А контроллерам в полете выпускать заряды?
Или барни хуже грантов и не смогут стрелять из пистолетов на ходу?!
Вон, в Матрице, гляди какие трюки с оружиемпроделывали, и не только на ходу, но в прыжке, кверх ногами и с перекатом!!! Как говорится, жить захочешь - и на бегу постреляешь!!!

Добавлено 15-05-2019 в 22:00:

Цитата:
Ku2zoff писал:
Всех "человеков" нужно научить или пятиться или убегать от ближнебойных противников.

Тогда ближнебойные противники, останавливаясь в раздумье перед замахом, будут огребать, огребать, и огребать!!!

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Luciferchik 02-06-2019 в 09:29:

Данный вопрос больше относиться к тов. Матеру, так как только в его моде есть КоОп режим. Собственно и сам вопрос, какие подводные камни меня могут ждать при копипасте этого режима в мультиплеер обычной хл?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Crystallize 08-06-2019 в 18:50:

Когда в ХЛРАД не было домножения на рефлективность, а потом его добавили, то яркость лайтмапы же поменялась, так? Потому что текстура может быть чёрной и баунс домножится на коэффициент 0, или белой и тогда баунс домножится на 1. Т.е. баунсы на среднестатистической карте потемнели в два раза, и конечная лайтмапа тоже потемнела, пусть и не так сильно. Этот эффект как-то пытались скомпенсировать чтобы вернуться к тру-яркости? Потому что например когда обнаружился тот баг с удвоенной яркостью солнца, то его не оставили без внимания.


Отправлено Дядя Миша 08-06-2019 в 19:00:

Цитата:
Luciferchik писал:
Собственно и сам вопрос, какие подводные камни меня могут ждать при копипасте этого режима в мультиплеер обычной хл?

Ну вот скоипастишь и нам расскажешь. Будешь первым

Цитата:
Crystallize писал:
Когда в ХЛРАД не было домножения на рефлективность, а потом его добавили, то яркость лайтмапы же поменялась, так?

Поменялась. В p2rad я это скомпенсировал, в VHLT нет.
Гугли старые скрины на CSM в теме разработки, на 70-й штоли странице. Найдешь вообщем, там вся тема отличная, я сам её с удовольствием перечитываю.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 09-06-2019 в 09:50:

Цитата:
Дядя Миша писал:
Поменялась. В p2rad я это скомпенсировал, в VHLT нет.

Вот мне кажется что в Сорсе тоже нет.
Цитата:
Дядя Миша писал:
на 70-й штоли странице.

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

Добавлено 09-06-2019 в 16:32:

Цитата:
Дядя Миша писал:
Поменялась. В p2rad я это скомпенсировал, в VHLT нет.

Ты о фичах-то рассказывай, не стесняйся.

Добавлено 09-06-2019 в 16:50:

В теме "новые компиляторы Xash3D" сейчас всего 52 страницы.


Отправлено Дядя Миша 09-06-2019 в 10:24:

Цитата:
Crystallize писал:
В теме "новые компиляторы Xash3D" сейчас всего 52 страницы.

ну тада читай сначала. Я об этом тожы писал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 09-06-2019 в 13:17:

Дядя Миша Оно?


Отправлено Дядя Миша 09-06-2019 в 13:55:

Не совсем. Был еще пост со скриншотами. Ищи. Там на скринах комнатка из халфы, где мы берём костюм.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 14-06-2019 в 14:42:

Давно надо было спросить. А как сделана консервативная растеризация в хлраде и других компиляторах (в том числе для квейка и волатилы)? Я имею в виду, каким образом определяется, нужно ли закрашивать пиксель, который частично перекрыт треугольником, но центр его не лежит внутри этого треугольника.
https://i.imgur.com/qB7klmi.jpg
Вот для розовых пикселей всё понятно. По барицентрическим координатам центра пикселя, можно определить, что он лежит внутри треугольника. По ним же можно посчитать позицию в пространстве и всё что угодно для расчета освещения.
А как обстоит дело с оранжевыми пикселями? Принадлежность треугольнику можно определить по пересечению с ребрами, это понятно. А как посчитать позицию для расчета освещения? По барицентрическим координатам она будет снаружи треугольника, и, очевидно, освещение будет неверным. Брать точку на ребре треугольника тоже не годится, будут лики.


Отправлено Дядя Миша 14-06-2019 в 14:51:

ncuxonaT вообще-то рад предпочитает иметь дело с квадами. На треугольниках всё печально.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 14-06-2019 в 15:22:

Цитата:
ncuxonaT писал:
Брать точку на ребре треугольника тоже не годится, будут лики.

Да можно проецировать на ребро, какие там будут лики. В волатиле делается именно так. С двух сторон люксель спроецирован - и в итоге почти наверняка совпадёт на двух лайтмапах, а значит, будет сглаженный шов.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ncuxonaT 14-06-2019 в 16:25:

Дядя Миша с квадами такая же ситуация.
XaeroX лики будут в случае тонких стенок. Вот тут, например, крайний ряд будет пикселей будет засвечен, так как на ребро-то тень не падает.
https://i.imgur.com/AavQGdl.png


Отправлено XaeroX 14-06-2019 в 16:46:

ncuxonaT
Но в BSP, после вырезания внешних полигонов, такая ситуация невозможна, разве нет?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено ncuxonaT 14-06-2019 в 18:34:

XaeroX по-моему, как раз после вырезания внешних полигонов такая ситуация и получается


Отправлено ncuxonaT 14-06-2019 в 22:40:

Ради интереса проверил, как себя поведут в этой ситуации "большие" рендереры. Усложнил задачу, разбив нижнюю грань на треугольники и отделив один из этих треугольников на развертке.
https://i.imgur.com/UCsbXBx.png
Блендеровский сайклз вообще не рисует пиксели, не попавшие своим центром в треугольник. 3дмаксовский сканлайн рисует все пиксели, но даёт лики. 3дмаксовский менталрей рисует почти все пиксели, лики отсутствуют. Возникает вопрос, как они это сделали.


Отправлено Дядя Миша 15-06-2019 в 05:35:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 15-06-2019 в 14:17:

Дядя Миша не понимаю, что значит достраивать квад для триангла. Маленький треугольник с моей картинки как достроить до квада?


Отправлено Дядя Миша 15-06-2019 в 14:46:

ncuxonaT вписать его в ббокс, очевидно жеж.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 15-06-2019 в 15:31:

Дядя Миша в смысле взять ббокс треугольника и растянуть до краев пикселей, которых он касается?


Отправлено Дядя Миша 15-06-2019 в 15:46:

ncuxonaT в софтварном раде я не оперирую пикселями. Я вообще не углублялся как оно у тебя там устроено и вряд ли смогу что- то посоветовать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 15-06-2019 в 16:08:

Дядя Миша расскажи, чем ты оперируешь. В конце же текстура из пикселей получается.


Отправлено Дядя Миша 15-06-2019 в 16:50:

ncuxonaT у меня 2D массив, квадрат или прямоугольник. Как он получается я выше написал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PiMoNFeeD 23-06-2019 в 00:27:

Question

всем привет, поскольку я криворукий (зачёркнуто) ламер, пишу сюда
1) сделал новую пушку на hl sdk 2.3 с гитхаба на основе глока, есесна, почистив от глоковского мусора и т.п. (так же на основе мп5 пробовал, но проблемы абсолютно те же), в итоге у меня почему-то вспышка от выстрела не там, где надо, скрин прикрепил
я ваще хз, как с этим бороться, долго пытался и так и не понял, в чём дело

2) при доставании пушки мне надо, шоб максимальная скорость понижалась, добавил в deploy() вот такую строку:

C++ Source Code:
g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 240);

но чёт это ваще ничего не поменяло может ли это быть из-за того, что у меня стоит ограничение скорости игрока этой же функцией в spawn() функции в player.cpp?

3) если у пушки прописан новый тип патронов, который я сам добавил, то у неё не проигрывается анимация перезарядки, но сама перезарядка идёт
примечательно то, что если свапнуть пушку, то анимация таки проиграется, если же поставить, например, стандартные 9mm патроны, то тогда всё будет хорошо
каким образом тип патронов связан с анимацией viewmodelи и как это пофиксить?

если инфы мало (в чём я, почему-то, не сомневаюсь), и для поиска решения нужен экстрасенс, то я скину ещё инфы

и если что, не кидайтесь тапками, как-никак тема для нубских вопросов


Отправлено Дядя Миша 23-06-2019 в 06:02:

Открой модельку во вьювере и посмотри где у нее вспышка. Если надо - подвинь на нужное место.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PiMoNFeeD 23-06-2019 в 14:19:

Дядя Миша спасибо, не знал, что вспышка привязана к аттачменту
а не подскажешь, что может быть не так с перезарядкой, когда анимация не всегда проигрывается?
UPD: заметил, что если во время такой безанимационной перезарядки спавнуть оружие, то у оружие, на которое переключишься, не будет проигрываться draw анимация


Отправлено Дядя Миша 23-06-2019 в 15:38:

И игроку попробуй скорость так задавать: m_pPlayer->pev->maxspeed = 240;
насчёт оружия ничо не подскажу, 15 лет прошло.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PiMoNFeeD 24-06-2019 в 12:41:

Дядя Миша теперь выяснилось, что макс. скорость игрока после сейв-лоада сбрасывается на дефолтные 320, как можно это исправить? например, делать в сейв запись о макс. скорости и подгружать её при лоаде ¯\_(ツ)_/¯


Отправлено Crystallize 24-06-2019 в 12:53:

PiMoNFeeD макс скорость регулируется через консоль, так что по идее должна писаться в конфиг и храниться там не взирая ни на что.


Отправлено PiMoNFeeD 24-06-2019 в 13:45:

Crystallize я не консольной командой cl_forwardspeed или чем-то подобным меняю, а через

C++ Source Code:
m_pPlayer->pev->maxspeed

или
C++ Source Code:
g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 240);


Отправлено Дядя Миша 24-06-2019 в 15:39:

Ну да, она не записывается в сейв. Открой util.cpp найди там gEntvarsDescription и добавь maxspeed по аналогии.
Типа так DEFINE_ENTITY_FIELD( maxspeed, FIELD_FLOAT ),

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PiMoNFeeD 24-06-2019 в 18:04:

Дядя Миша так-то лучше, спасибо))


Отправлено PiMoNFeeD 02-07-2019 в 23:12:

Появилась нужна в проигрывании в определённый момент заранее отрендеренных катсцен, как это можно реализовать? Надо, шоб видеофайл проигрывался при срабатывании энтити, например
p.s. hl ведь .mov кушает, верно? а есть ли ограничения по разрешению?


Отправлено XaeroX 03-07-2019 в 07:41:

В чистой халфе нет проигрывателя видеофайлов. Есть только интро-ролик, и насколько мне известно, формат mov он не поддерживает, только различные кодеки формата avi.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Smykov 19-07-2019 в 00:13:

Вопрос по поводу BSP. Я пытаюсь понять как работает проверка столкновения c брашами карты. Допустим, я уже какую-то теорию почитал по этой теме.

Немного оффтопа:
В дальнейшем я приведу код с википедии по поиску столкновений и, возможно, может возникнуть вопрос:
Если я задаю вопрос на примере Half-Life, то зачем я привожу код не из HL (ну или не из Xash'а), а с вики? А что если в HL для поиска столкновений используется другой какой-нибудь подход?
Ну... Как это работает в Xash я ещё не вникал. И как бы я "не зарылся" в коде. А мне пока что нужно просто понять принцип того, как это работает в теории. И узнать информацию у людей, возможно, у меня получиться быстрее, чем пытаться "рыть" самому.

Пример поиска столкновений с вики:
«При поиске столкновений BSP-дерево используется для поиска плоскости, расположенной ближе всего к объекту. Чаще всего границы объекта задаются ограничивающей сферой (или окружностью) для упрощения вычислений. Выполняется обход BSP-дерева от корня до плоскости, расположенной ближе всего к объекту. При этом, если не обнаруживается пересечений ограничивающей сферы ни с одной плоскостью, то столкновения нет, в противном случае — есть.»


И вот сам вопрос:
Расстояние(Узел.Плоскость, Объект.ЦентрОграничивающейСферы)
Эта функция нам вычисляет не просто расстояние от точки до полигона, а до ПЛОСКОСТИ.
Давайте определимся как именно мы это делаем:

где A, B и C - это координаты нормали к плоскости.

Пусть имеется на карте два полигона, расположенные на одной высоте:


По идее, у этих двух полигонов нормали совпадают, не так ли?
И как я могу понять над каким из полигонов я нахожусь (исходя из того, как я определил функцию расстояния)?

И кстати, а может ли возникнуть такая ситуация: если у меня пройдёт проверка на расстояние у левого полигона, то будет ли она верна и для правого?

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


Отправлено Дядя Миша 19-07-2019 в 07:27:

Цитата:
Smykov писал:
При этом, если не обнаруживается пересечений ограничивающей сферы ни с одной плоскостью, то столкновения нет, в противном случае — есть.»

Это не совсем верно. Там необязательно сфера. Может быть и точка, может быть и AABB.

Цитата:
Smykov писал:
И как я могу понять над каким из полигонов я нахожусь

они будут прилинкованы к ноде. Ну или к лифу.

Не рассматривай BSP как какой-то уникальный алгоритм, попробуй для начала изучить BVH и BIH. Они попроще.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Vadiman 05-08-2019 в 19:34:

Здравствуйте!

1) Подскажите как менять вторичной атакой сабмодель оружия?
Конкретно: есть на автомате лазерный прицел, при его активации планировал менять сабмодель (появление модели лучика), однако она через pev->model не меняется.

2) Как этот самый лучик заставить в темноте оставаться подсвеченным? Игра воспринимает его как стандартную текстуру и в темном месте он темнеет вместе с остальным оружием )))

3) Как заставить ученых бояться игрока по дефолту? Чтобы были враждебны без агрессии со стороны игрока


Отправлено Ku2zoff 06-08-2019 в 18:08:

Цитата:
Vadiman писал:
однако она через pev->model не меняется.

C++ Source Code:
SendWeaponAnim( iAnim, UseDecrement() ? 1 : 0, pev->body );

Указывай номер боди в функции, отправляющей анимацию на клиент. В эвенте стрельбы, тоже, в каком-нибудь параметре отправляй номер боди. См. код weapon_357.
Цитата:
Vadiman писал:
Как этот самый лучик заставить в темноте оставаться подсвеченным?

Ооо, у меня есть на эту тему старый тутор
Цитата:
Vadiman писал:
Как заставить ученых бояться игрока по дефолту?

В функции IRelationship установи именно для игрока R_FEAR. Вроде так.


Отправлено Vadiman 06-08-2019 в 20:39:

Цитата:
Ku2zoff писал:

SendWeaponAnim( iAnim, UseDecrement() ? 1 : 0, pev->body );


Попробовал в SecondaryAttack это вставить вызывая анимацию (пока просто idle, а в перспективе нажатие кнопки), но тоже не сработало


Отправлено FreeSlave 07-08-2019 в 06:17:

Цитата:
Vadiman писал:
Попробовал в SecondaryAttack это вставить вызывая анимацию (пока просто idle, а в перспективе нажатие кнопки), но тоже не сработало


Если оружие предиктабельно, то подозреваю, что перед вызовом HUD_SendWeaponAnim в hl_weapons.cpp нужно выставлять нужное body, как это делается для магнума. У магнума однако условие простое - там прицел только в мультиплеере. Для твоего случая нужно будет передавать доп. параметр, например в vuser, как это сделано для rpg.

__________________
I'm on github
I'm on opendesktop.org


Отправлено FreeSlave 31-08-2019 в 11:00:

Есть проблема со звуком. Если, например, npc говорит, и игрок отходит за пределы слышимости сентенса, то звук перестаёт играть в принципе, даже если вернуться к npc. Это движковая особенность или можно исправить через sdk?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 31-08-2019 в 14:34:

Цитата:
FreeSlave писал:
Если, например, npc говорит, и игрок отходит за пределы слышимости сентенса, то звук перестаёт играть в принципе, даже если вернуться к npc.

Никогда с таким не сталкивался. Всегда, даже в очень длинных сентенциях, состоящих из одного wav-файла, прерываний не было. То есть можно было убежать, вернуться, и дослушать монолог. Попробуй на другой версии движка, на других дллках, может найдёшь закономерность. НПС не выпадает из PVS, когда отходишь за пределы слышимости?


Отправлено FreeSlave 31-08-2019 в 19:23:

Ku2zoff, может дело и в pvs, а не в аттенюации. Происходит на текущей стим-версии HL и на 1.1.2.0.

Пример в аттаче.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Vadiman 01-09-2019 в 07:57:

А как сделать first deploy анимацию? Тобишь когда игрок впервые подбирает оружие, единожды проигрывается анимация ознакомления протагониста со стволом


Отправлено Дядя Миша 01-09-2019 в 08:01:

Звук не отсекается по PVS

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Vadiman 01-09-2019 в 17:57:

Цитата:
FreeSlave писал:
Если оружие предиктабельно, то подозреваю, что перед вызовом HUD_SendWeaponAnim в hl_weapons.cpp нужно выставлять нужное body, как это делается для магнума. У магнума однако условие простое - там прицел только в мультиплеере. Для твоего случая нужно будет передавать доп. параметр, например в vuser, как это сделано для rpg.


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


Отправлено FreeSlave 18-09-2019 в 12:28:

Обязательно ли вместе с SND_STOP посылать имя играющего звука или движок остановит звук на указанном канале вне зависимости от того, что сейчас играет?

__________________
I'm on github
I'm on opendesktop.org


Отправлено XaeroX 18-09-2019 в 13:30:

Цитата:
FreeSlave писал:
движок остановит звук на указанном канале вне зависимости от того, что сейчас играет?

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

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 18-09-2019 в 16:35:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 19-09-2019 в 00:43:

XaeroX, Дядя Миша, спасибо за ответы.

У кого-нибудь бывало, что ломались аттачменты энтить? В присутствии вот этих веревок на карте приаттаченные энтити оказываются визуально приаттачены к не к той энтити, что указано, либо появляются в центре мира (0,0,0). Есть костыль - удалить веревки и поставить их на карту заново. Как-то связано с порядком энтить (порядок чтения энтить зависит от их порядка в bsp). Другой фикс (более универсальный, не требующий перестановок на карте) - переместить инициализацию сегментов из спавна в тчинк.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 19-09-2019 в 06:14:

Я когда добавлял эти веровки в последние версии ксаш-мода, я их чуть-чуть полностью переписал. Очевидно надо ориентироваться на мой код, а не на исходный.

Добавлено 19-09-2019 в 09:08:

Хы. В голдсорсе же деструктор энтити не вызывается, я совсем забыл.

Добавлено 19-09-2019 в 09:14:

Конкретно что было сделано с кодом веровок:
1. оригинал использует в 4 раза больше эдиктов для назначенного кол-ва сегментов. Т.е. 16 отрезков веровки дадут 16*4+1 = 65 эдиктов или даже больше. У меня 16 отрезков используют всего 17 эдиктов.
2. появилась возможность набирать отрезки из спрайтов, делать спрайтовые веровки, вместо моделей.
3. аттач веровки к брашевым энтитям
4. возможность заменить отрезки на единую модель с развесовкой (есть в примере).

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 20-09-2019 в 15:51:

Дядя Миша, интересно, потом гляну в xashxt. Может, там ещё и провода как в сурсе (move_rope) можно сделать?

Вопрос по нодам. Есть ступеньки, по которым поднимаются монстры с обычным хуллом, но не могут подняться те, что с большим (в примере - агрунт). impulse 196 (node_viewer_large) не показывает соединений, значит что-то не так на стадии образования графа. Как это можно поправить? (мапперским или кодерским способом).

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

Добавлено 20-09-2019 в 18:51:

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

__________________
I'm on github
I'm on opendesktop.org


Отправлено thambs 20-09-2019 в 15:52:

FreeSlave
Попробуй ставить верхнюю ноду отступая не более 4 юнитов от края.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено FreeSlave 20-09-2019 в 17:00:

thambs, да я уж по-всякому пытался. Запилил кастомный размер, теперь поднимается.

__________________
I'm on github
I'm on opendesktop.org


Отправлено FreeSlave 25-09-2019 в 20:06:

Проблема с "воровством" аттачментов вернулась, уже даже без веревок. Спрайт с ксеновского фонарика оказывается в самых неожиданных местах. Перенос инициализации спрайта в тчинк не помогает. Если вытаскивать энтитю по aiment или по индексу (skin), то вытаскивается xen_plantlight, как и должно быть.
Пока не удалось воссоздать баг на минимальном примере, но может кто-то встречал?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 25-09-2019 в 20:58:

надо использовать EHANDLE

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 25-09-2019 в 23:56:

Цитата:
Дядя Миша писал:
надо использовать EHANDLE

Для спрайта фонаря? Попробовал, баг остается. Да и зачем тут EHANDLE, спрайт же не удаляется.

Зато заметил вот что - на карте присутствуют мои самописные энтити монстров. Если саму энтитю из кода убрать, а название слинковать с чем-нибудь другим, то баг остается. Т.е. дело не в реализации конкретной энтити а в том, что энтитя в принципе спавнится. Если линковку убрать, то и баг пропадает. Значения skin, body, aiment и movetype у спрайта остаются теми же, как при создании.

Как движок вообще определяет аттачменты? По наличию aiment?

Добавлено 26-09-2019 в 01:46:

Сейчас ради интереса скомпилил hlsdk без своих изменений. Добавил только линковку буллсквида к ещё паре класснеймов, которые используются на карте. И баг проявился. Слишком много энтить на карте?

Добавлено 26-09-2019 в 02:56:

Удалил с карты всё, кроме xen_plantlight, затем вернул. И вуаля - баг пропал. Видимо опять какая-то проблема с порядком инициализации энтить.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 26-09-2019 в 06:35:

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

Добавлено 26-09-2019 в 09:35:

аттачменты у энтить кодируются следующим образом:
pev->body = номер аттачмента
pev->skin = номер энтити
Дальше открываем delta.lst, сортируем в ней строчки и смотрим чему равно максимальное значение для pev->skin

C++ Source Code:
DEFINE_DELTA( skin, DT_SHORT | DT_SIGNED, 9, 1.0 ),

signed - это потому что движок кодирует отрицательные скины как контентсы. То есть минус один бит. Остаётся 8. Иными словами аттачмент корректно работает только для первых 256 энтить на карте. Если их больше он начинает перескакивать. Надо поднять кол-во бит, ну скажем до 12-и.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 26-09-2019 в 12:45:

Дядя Миша, спасибо, не догадался я заглянуть в delta.lst, не приходилось раньше его трогать. Поднял количество битов - помогло.
А сортировать зачем? Это просто шутка про мастера?

Да, номер энтити у фонаря был выше 255. Удаление всего (кроме тех самых фонарей) на карте а потом возврат (через Ctrl-Z), помогал, т.к. переставлял энтитю на позицию ниже.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 26-09-2019 в 13:39:

Цитата:
FreeSlave писал:
А сортировать зачем?

кто иво знает. Может в этом и есть великая сермяжная правда?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 26-09-2019 в 15:14:

Ещё проблемка. На карте есть func_door_rotating, на неё в редакторе наложены декали, но в игре после компиляции их не видать. Во время игры декали от выстрелов, взрывов и прочего накладываются как обычно.
Я так понимаю, дело в присутствии origin-браша? Можно конечно накостылять что-то в духе env_decal из спирита и накладывать декаль динамически, но есть ли более простой способ? Может, какие-нибудь zhlt параметры, которые это исправляют.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 26-09-2019 в 16:57:

Цитата:
FreeSlave писал:
На карте есть func_door_rotating, на неё в редакторе наложены декали, но в игре после компиляции их не видать.

это под халфой или под ксашем?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 26-09-2019 в 19:06:

Дядя Миша, и на голдсорсе, и на ксаше.
Сорец для примера.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 26-09-2019 в 19:08:

rmf мне открыть нечем

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 26-09-2019 в 19:10:

Вот в map

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 26-09-2019 в 19:29:

FreeSlave непонятно вообщем. У меня ни старый ксаш ни халфа уже не стоят, так что я проверить не смогу. А если эту же декаль активировать через trigger_auto с задержкой 0.1 секунды?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 26-09-2019 в 20:03:

Дядя Миша, да, через активацию отображается.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 27-09-2019 в 06:03:

FreeSlave в signon немножко порядок нарушен. Поидее это можно починить если функцию StaticDecal переименовать в Activate и в спавне вот это

C++ Source Code:
1
if ( FStringNull ( pev->targetname ) )
2
{
3
  SetThink( StaticDecal );
4
  // if there's no targetname, the decal will spray itself on as soon as the world is done spawning.
5
    pev->nextthink = gpGlobals->time;
6
}
7
else
8
{
9
  // if there IS a targetname, the decal sprays itself on when it is triggered.
10
    SetThink ( SUB_DoNothing );
11
  SetUse(TriggerDecal);
12
}

заменить на это
C++ Source Code:
1
if ( !FStringNull ( pev->targetname ) )
2
{
3
  // if there IS a targetname, the decal sprays itself on when it is triggered.
4
    SetThink ( SUB_DoNothing );
5
  SetUse(TriggerDecal);
6
}


Добавлено 27-09-2019 в 09:03:

PS. слово EXPORT из описания убрать разумеется.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 27-09-2019 в 14:52:

Дядя Миша, попробовал через Activate - результат тот же, не рисуется. Проблема проявляется кстати на любой энтити с ориджин-брашем (даже если он не требуется самой энтитей).

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 27-09-2019 в 15:30:

FreeSlave ну там декаль прибывает быстрее чем первая дельта.
ну значит добавь прямо в коде 0.1 задержку.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 28-09-2019 в 04:51:

Кстати, костыль через trigger_auto не работает, если декаль не в PVS игрока на момент старта карты. Пока решил через trigger_once на входе в локацию.

Вопрос: можно ли кодом (не маппингом) подсветить определенную модель? Что-то вроде elight но освещающий одну энтитю и действующий постоянно. В принципе и elight с маленьким радиусом подойдёт, но я так понял, он не освещает модель, к которой сам приаттачен. Придется городить отдельную энтитю, да ещё и сделать этот самый elight постоянным, а не временным, если такое вообще возможно.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 28-09-2019 в 10:13:

FreeSlave может не подсветить, а сделать фуллбрайтом?

Цитата:
FreeSlave писал:
trigger_auto не работает, если декаль не в PVS игрока на момент старта карты

очень подозрительно, декали в сигнон пишутся. Под ксашем тоже неработает? И на будущее - уточняй где именно не работает.

Добавлено 28-09-2019 в 13:13:

А впрочем там проблема гораздо глубже чем кажется.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 28-09-2019 в 14:38:

Проблема проявляется и на гс, и на ксаше. В аттаче переделанный пример. В первой комнате две энтити с декалями. На одной декаль без имени, на другой декаль, вызываемая через trigger_auto. В другой комнате (которую игроок не видит при старте) ещё две энтити. На одной декаль вызывается так же, через trigger_auto, у другой - через trigger_once в коридоре.

Декаль без имени не отображается, декаль вызываемая через trigger_auto во второй комнате тоже не отображается.

Цитата:
Дядя Миша писал:
может не подсветить, а сделать фуллбрайтом?


Можно и так, хотя в идеале был бы настраиваемый минимальный уровень освещенности. Чтоб модель не засвечивалась полностью, но при этом и не терялась в темном помещении.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 28-09-2019 в 16:28:

C++ Source Code:
1
// Activate the DLL server code
2
svgame.globals->time = sv.time;
3
svgame.dllFuncs.pfnServerActivate( svgame.edicts, svgame.numEntities, svs.maxclients );
4
 
5
// parse user-specified resources
6
SV_CreateGenericResources();
7
 
8
if( runPhysics )
9
{
10
  numFrames = (svs.maxclients <= 1) ? 2 : 8;
11
  sv.frametime = SV_SPAWN_TIME;
12
}
13
else
14
{
15
  sv.frametime = 0.001;
16
  numFrames = 1;
17
}
18
 
19
// run some frames to allow everything to settle
20
for( i = 0; i < numFrames; i++ )
21
  SV_Physics();
22
 
23
// create a baseline for more efficient communications
24
SV_CreateBaseline();

Это из SV_ActivateServer. Baseline запишется в signon последней,а значит оригины для энтить придут позже декалей.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 28-09-2019 в 18:53:

Дядя Миша, допустим, это объясняет, почему декали не накладываются на энтити с ориджин-брашем. А что насчет непоявления декалей в отсутствие игрока?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 28-09-2019 в 19:15:

Это очень загадочно на самом деле. MSG_BROADCAST игнорирует PVS проверки, но даже если бы он их учитывал, то халфа в сингле игнорирует PVS для сетевых сообщений, ну так уж она устроена. Так что у меня нет никаких идей.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 02-10-2019 в 04:12:

Влияют ли энтити без модели (триггеры и т.д.) на появление ошибки Too many visible entities in packet list? Может, им стоит выставить EF_NODRAW?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 02-10-2019 в 06:30:

Нет, не влияют. Потому что вот:

C++ Source Code:
1
int AddToFullPack( struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet )
2
{
3
  int					i;
4
 
5
  // don't send if flagged for NODRAW and it's not the host getting the message
6
  if ( ( ent->v.effects == EF_NODRAW ) &&
7
  ( ent != host ) )
8
  return 0;
9
 
10
  // Ignore ents without valid / visible models
11
  if ( !ent->v.modelindex || !STRING( ent->v.model ) )
12
    return 0;

Игнорятся энтити с EF_NODRAW и те, которым моделька не проставлена.
В халфе просто очень низкий лимит на это дело, всего 256 энтить.
FreeSlave что ты там такое делаешь?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 02-10-2019 в 07:02:

Цитата:
Дядя Миша писал:
что ты там такое делаешь?

Да просто открытая локация с монстрами и эффектами телепортов. Придется оптимизировать.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 02-10-2019 в 08:32:

Под ксашем до двух тыщ в визибл-листе

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ghoul [BB] 03-10-2019 в 12:47:

Цитата:
Дядя Миша писал:
Под ксашем до двух тыщ в визибл-листе


Забыл написать "переходи на Ксаш!"

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 03-10-2019 в 12:57:

Ghoul [BB]
Это и так очевидно.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено FreeSlave 05-10-2019 в 07:51:

Клиентские энтити тоже входят в визибл лист? Что насчёт TE_DLIGHT?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 05-10-2019 в 08:21:

FreeSlave нет, только серверные.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 05-10-2019 в 15:46:

Проблема, оказывается в гибсах была. По 4 гибса на каждого монстра, причем гибсы остаются жить по 25 секунд. Вот и выходило за лимиты. Переделал для особо взрывных монстров спавн гибсов через TE_BREAKMODEL, оставил фиктивные гибсы с EF_NODRAW для разброса декалей крови, и всё стало замечательно

__________________
I'm on github
I'm on opendesktop.org


Отправлено Chyvachok 05-10-2019 в 16:46:

Цитата:
FreeSlave писал:
По 4 гибса на каждого монстра, причем гибсы остаются жить по 25 секунд. Вот и выходило за лимиты.


Халва и ее анальные лимиты, мда


Отправлено Дядя Миша 05-10-2019 в 17:06:

Цитата:
FreeSlave писал:
оставил фиктивные гибсы с EF_NODRAW для разброса декалей крови, и всё стало замечательно

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 05-10-2019 в 18:21:

Дядя Миша, переиспользование - и есть легкий путь же
Может, как-нибудь потом. Пока главное, что понял, в чем проблема.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 06-10-2019 в 06:31:

FreeSlave так ты две копии наделал, которые к тому же не синхронны между собой. Это что ли лёгкий путь?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 06-10-2019 в 14:20:

Дядя Миша, я понимаю, что клиентские гибсы движутся иначе, но в моем случае появление кровавых следов в местах соприкосновения гибсов с миром непринципиально.

Решение, о котором ты говоришь, конечно лучший вариант (более того, его можно применить универсально для всех монстров), но я, кажется, ни разу не создавал новый вид темп-энтить. Если есть пример/туториал, буду признателен

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 06-10-2019 в 15:38:

Цитата:
FreeSlave писал:
но я, кажется, ни разу не создавал новый вид темп-энтить

Там даже не новый вид темп-энтить, а просто флажок замутить. Ну что-то типа FTENT_BLOODDECALS. И в HUD_TempEntUpdate делать проверку на него и спавнить декали там. Где-то в раёне вызова pTemp->hitcallback. Делаем проверку на наш флаг и соответственно вызываем вот эту шнягу
C++ Source Code:
gEngfuncs.pEfxAPI->R_DecalShoot(
gEngfuncs.pEfxAPI->Draw_DecalIndex( gEngfuncs.pEfxAPI->Draw_DecalIndexFromName( decalName ) ),
gEngfuncs.pEventAPI->EV_IndexFromTrace( &pmtrace ), 0, pmtrace.endpos, 0 );

вместо decalName имя декали.

Добавлено 06-10-2019 в 18:38:

А, ну и потом этот флажок своим гибсам присвой когда аллокаешь темп-энтити.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 07-10-2019 в 03:44:

Дядя Миша, спасибо, вроде разобрался.

Вот такой получился код. Заюзал коллбэк вместо ввода нового флага. Попытался скопировать поведение серверных гибсов.

C++ Source Code:
1
void GibHitCallback( TEMPENTITY* ent, pmtrace_t* pmtrace )
2
{
3
  if (ent->entity.curstate.iuser1 > 0 && ent->entity.curstate.iuser2 > 0)
4
  {
5
    static const char* redBloodDecals[] = {"{blood1", "{blood2", "{blood3", "{blood4", "{blood5", "{blood6"};
6
    static const char* yellowBloodDecals[] = {"{yblood1", "{yblood2", "{yblood3", "{yblood4", "{yblood5", "{yblood6"};
7
 
8
    const char* decalName = NULL;
9
    if (ent->entity.curstate.iuser1 == 1)
10
    {
11
      decalName = redBloodDecals[gEngfuncs.pfnRandomLong(0,5)];
12
    }
13
    else
14
    {
15
      decalName = yellowBloodDecals[gEngfuncs.pfnRandomLong(0,5)];
16
    }
17
 
18
    ent->entity.curstate.iuser2--;
19
    ent->entity.curstate.origin = ent->entity.curstate.origin + Vector(0,0,8);
20
 
21
    int decalIndex = gEngfuncs.pEfxAPI->Draw_DecalIndexFromName( (char*)decalName );
22
    int textureIndex = gEngfuncs.pEfxAPI->Draw_DecalIndex( decalIndex );
23
    int traceEntIndex = gEngfuncs.pEventAPI->EV_IndexFromTrace( pmtrace );
24
    gEngfuncs.pEfxAPI->R_DecalShoot(textureIndex, traceEntIndex, 0, pmtrace->endpos, 0 );
25
  }
26
}
27
 
28
int __MsgFunc_RandomGibs( const char *pszName, int iSize, void *pbuf )
29
{
30
  BEGIN_READ( pbuf, iSize );
31
 
32
  Vector absmin;
33
  Vector size;
34
  Vector direction;
35
  float randomization;
36
  int modelIndex;
37
  int gibCount;
38
  int lifeTime;
39
  byte bloodType;
40
 
41
  absmin[0] = READ_COORD();
42
  absmin[1] = READ_COORD();
43
  absmin[2] = READ_COORD();
44
 
45
  size[0] = READ_COORD();
46
  size[1] = READ_COORD();
47
  size[2] = READ_COORD();
48
 
49
  direction[0] = READ_COORD();
50
  direction[1] = READ_COORD();
51
  direction[2] = READ_COORD();
52
 
53
  randomization = READ_BYTE() / 100.0;
54
  modelIndex = READ_SHORT();
55
  gibCount = READ_BYTE();
56
  lifeTime = READ_BYTE();
57
  bloodType = READ_BYTE();
58
 
59
  int gibBodiesNum = READ_BYTE();
60
  int startGibIndex = READ_BYTE();
61
 
62
  struct model_s* model = IEngineStudio.GetModelByIndex(modelIndex);
63
 
64
  if (gibBodiesNum <= 0)
65
  {
66
    studiohdr_t* pstudiohdr = (studiohdr_t *)IEngineStudio.Mod_Extradata(model);
67
    mstudiobodyparts_t *pbodypart = (mstudiobodyparts_t *)( (byte *)pstudiohdr + pstudiohdr->bodypartindex );
68
    gibBodiesNum = pbodypart->nummodels;
69
    if (gibBodiesNum == 0)
70
      gibBodiesNum = 1;
71
  }
72
 
73
  for (int i=0; i<gibCount; ++i)
74
  {
75
    Vector gibPos;
76
    gibPos.x = absmin.x + size.x * gEngfuncs.pfnRandomFloat(0,1);
77
    gibPos.y = absmin.y + size.y * gEngfuncs.pfnRandomFloat(0,1);
78
    gibPos.z = absmin.z + size.z * gEngfuncs.pfnRandomFloat(0,1) + 1;
79
 
80
    Vector gibVelocity = direction;
81
    gibVelocity.x += gEngfuncs.pfnRandomFloat(-randomization, randomization);
82
    gibVelocity.y += gEngfuncs.pfnRandomFloat(-randomization, randomization);
83
    gibVelocity.z += gEngfuncs.pfnRandomFloat(-randomization, randomization);
84
 
85
    gibVelocity = gibVelocity * gEngfuncs.pfnRandomFloat( 300, 400 );
86
 
87
    TEMPENTITY* pTemp = gEngfuncs.pEfxAPI->CL_TempEntAlloc(gibPos, model);
88
    if (!pTemp)
89
      break;
90
 
91
    pTemp->entity.curstate.body = gEngfuncs.pfnRandomLong(startGibIndex, gibBodiesNum - 1);
92
    pTemp->flags |= FTENT_COLLIDEWORLD | FTENT_FADEOUT | FTENT_GRAVITY;
93
 
94
 
95
    pTemp->entity.curstate.iuser1 = bloodType;
96
    pTemp->entity.curstate.iuser2 = 5;
97
    pTemp->entity.curstate.solid = SOLID_SLIDEBOX;
98
    pTemp->entity.curstate.rendermode = kRenderNormal;
99
    pTemp->entity.curstate.renderamt = pTemp->entity.baseline.renderamt = 255;
100
    pTemp->hitcallback = &GibHitCallback;
101
 
102
    pTemp->entity.baseline.origin = gibVelocity;
103
    pTemp->die = gHUD.m_flTime + lifeTime;
104
  }
105
 
106
  return 1;
107
}


Добавлено 07-10-2019 в 06:37:

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

Добавлено 07-10-2019 в 06:44:

Ага, насчет поворотов - решается через
code:
baseline.angles
и
code:
FTENT_ROTATE
.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 07-10-2019 в 06:28:

Цитата:
FreeSlave писал:
Заюзал коллбэк вместо ввода нового флага

Во, ну или так, да.

C++ Source Code:
1
struct model_s* model = IEngineStudio.GetModelByIndex(modelIndex);
2
 
3
if (gibBodiesNum <= 0)
4
{
5
  studiohdr_t* pstudiohdr = (studiohdr_t *)IEngineStudio.Mod_Extradata(model);
6
  mstudiobodyparts_t *pbodypart = (mstudiobodyparts_t *)( (byte *)pstudiohdr + pstudiohdr->bodypartindex );
7
  gibBodiesNum = pbodypart->nummodels;
8
  if (gibBodiesNum == 0)
9
    gibBodiesNum = 1;
10
}

Вот это говно выкинь. Движок сохраняет бодикаунт в model_t->numframes, к тому же ты всё равно их считаешь неправильно.

Добавлено 07-10-2019 в 09:28:

Если хочется самому посчитать, погугли в ксаше Mod_StudioBodyVariations.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 07-10-2019 в 07:01:

Дядя Миша, неправильно если бодигрупп несколько, это понятно. Я не припомню моделей гибсов с несколькими бодигруппами, а если уж затачивать на универсальность, то вовсе не факт, что маппер захочет, чтоб юзались все сочетания бодипартов из всех бодигрупп.
Насчёт бодикаунта в numframes - ксаш сохраняет, а голдсорс нет.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 07-10-2019 в 09:12:

Ну вообщем справился, молодец

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 07-10-2019 в 15:54:

Обновил. Добавил FTENT_PERSIST чтоб гибсы не исчезали как только игрок заходит за стену. Рандом всё-таки сделал по полному бодикаунту, как предложил Дядя Миша. Добавил уменьшение скорости при касании земли (правильно это так делать через baseline?)

C++ Source Code:
1
void GibHitCallback( TEMPENTITY* ent, pmtrace_t* pmtrace )
2
{
3
  static const char* redBloodDecals[] = {"{blood1", "{blood2", "{blood3", "{blood4", "{blood5", "{blood6"};
4
  static const char* yellowBloodDecals[] = {"{yblood1", "{yblood2", "{yblood3", "{yblood4", "{yblood5", "{yblood6"};
5
 
6
  const char* decalName = NULL;
7
  if (ent->entity.curstate.iuser1 == 1)
8
  {
9
    decalName = redBloodDecals[gEngfuncs.pfnRandomLong(0, 5)];
10
  }
11
  else
12
  {
13
    decalName = yellowBloodDecals[gEngfuncs.pfnRandomLong(0, 5)];
14
  }
15
 
16
  if (ent->entity.curstate.onground)
17
  {
18
    ent->entity.baseline.origin = ent->entity.baseline.origin * 0.9;
19
    ent->entity.curstate.angles.x = 0;
20
    ent->entity.curstate.angles.z = 0;
21
    ent->entity.baseline.angles.x = 0;
22
    ent->entity.baseline.angles.z = 0;
23
  }
24
  else
25
  {
26
    ent->entity.curstate.origin = ent->entity.curstate.origin + Vector(0, 0, 8);
27
 
28
    if (ent->entity.curstate.iuser1 > 0 && ent->entity.curstate.iuser2 > 0)
29
    {
30
      int decalIndex = gEngfuncs.pEfxAPI->Draw_DecalIndexFromName( (char*)decalName );
31
      int textureIndex = gEngfuncs.pEfxAPI->Draw_DecalIndex( decalIndex );
32
      int traceEntIndex = gEngfuncs.pEventAPI->EV_IndexFromTrace( pmtrace );
33
      gEngfuncs.pEfxAPI->R_DecalShoot(textureIndex, traceEntIndex, 0, pmtrace->endpos, 0 );
34
      ent->entity.curstate.iuser2--;
35
    }
36
  }
37
}
38
 
39
int __MsgFunc_RandomGibs( const char *pszName, int iSize, void *pbuf )
40
{
41
  BEGIN_READ( pbuf, iSize );
42
 
43
  Vector absmin;
44
  Vector size;
45
  Vector direction;
46
 
47
  absmin[0] = READ_COORD();
48
  absmin[1] = READ_COORD();
49
  absmin[2] = READ_COORD();
50
 
51
  size[0] = READ_COORD();
52
  size[1] = READ_COORD();
53
  size[2] = READ_COORD();
54
 
55
  direction[0] = READ_COORD();
56
  direction[1] = READ_COORD();
57
  direction[2] = READ_COORD();
58
 
59
  float randomization = READ_BYTE() / 100.0;
60
  int modelIndex = READ_SHORT();
61
  int gibCount = READ_BYTE();
62
  int lifeTime = READ_BYTE();
63
  int bloodType = READ_BYTE();
64
  int gibBodiesNum = READ_BYTE();
65
  int startGibIndex = READ_BYTE();
66
 
67
  float velocityMultiplier = READ_COORD();
68
 
69
  struct model_s* model = IEngineStudio.GetModelByIndex(modelIndex);
70
 
71
  if (gibBodiesNum == 0)
72
  {
73
    studiohdr_t* pstudiohdr = (studiohdr_t *)IEngineStudio.Mod_Extradata(model);
74
    if (pstudiohdr)
75
    {
76
      mstudiobodyparts_t *pbodypart = (mstudiobodyparts_t *)( (byte *)pstudiohdr + pstudiohdr->bodypartindex );
77
 
78
      gibBodiesNum = 1;
79
      for (int j=0; j<pstudiohdr->numbodyparts; ++j)
80
      {
81
        gibBodiesNum = gibBodiesNum * pbodypart[j].nummodels;
82
      }
83
    }
84
  }
85
 
86
  if (gibBodiesNum == 0)
87
    gibBodiesNum = startGibIndex + 1;
88
  startGibIndex = startGibIndex > gibBodiesNum - 1 ? gibBodiesNum - 1 : startGibIndex;
89
 
90
  for (int i=0; i<gibCount; ++i)
91
  {
92
    Vector gibPos;
93
    gibPos.x = absmin.x + size.x * gEngfuncs.pfnRandomFloat(0, 1);
94
    gibPos.y = absmin.y + size.y * gEngfuncs.pfnRandomFloat(0, 1);
95
    gibPos.z = absmin.z + size.z * gEngfuncs.pfnRandomFloat(0, 1) + 1;
96
 
97
    Vector gibVelocity = direction;
98
    gibVelocity.x += gEngfuncs.pfnRandomFloat(-randomization, randomization);
99
    gibVelocity.y += gEngfuncs.pfnRandomFloat(-randomization, randomization);
100
    gibVelocity.z += gEngfuncs.pfnRandomFloat(-randomization, randomization);
101
 
102
    gibVelocity = gibVelocity * gEngfuncs.pfnRandomFloat( 300, 400 ) * velocityMultiplier;
103
 
104
    if (gibVelocity.Length() > 1500)
105
    {
106
      gibVelocity = gibVelocity.Normalize() * 1500;
107
    }
108
 
109
    TEMPENTITY* pTemp = gEngfuncs.pEfxAPI->CL_TempEntAlloc(gibPos, model);
110
    if (!pTemp)
111
      break;
112
 
113
    pTemp->entity.curstate.body = gEngfuncs.pfnRandomLong(startGibIndex, gibBodiesNum - 1);
114
    pTemp->flags |= FTENT_COLLIDEWORLD | FTENT_FADEOUT | FTENT_GRAVITY | FTENT_ROTATE | FTENT_PERSIST;
115
 
116
    pTemp->entity.curstate.iuser1 = bloodType;
117
    pTemp->entity.curstate.iuser2 = 5;
118
    pTemp->entity.curstate.solid = SOLID_SLIDEBOX;
119
    pTemp->entity.curstate.movetype = MOVETYPE_BOUNCE;
120
    pTemp->entity.curstate.friction = 0.55;
121
    pTemp->entity.curstate.rendermode = kRenderNormal;
122
    pTemp->entity.curstate.renderamt = pTemp->entity.baseline.renderamt = 255;
123
    pTemp->hitcallback = &GibHitCallback;
124
 
125
    pTemp->entity.baseline.angles.x = gEngfuncs.pfnRandomFloat(-256, 255);
126
    pTemp->entity.baseline.angles.z = gEngfuncs.pfnRandomFloat(-256, 255);
127
    pTemp->entity.baseline.origin = gibVelocity;
128
    pTemp->die = gHUD.m_flTime + lifeTime;
129
  }
130
 
131
  return 1;
132
}

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 07-10-2019 в 16:24:

Цитата:
FreeSlave писал:
правильно это так делать через baseline?

ну да, там велосити хранится у темпэнтить. Можышь тутор запилить

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 14-10-2019 в 17:48:

Когда более-менее возишься в коде ХЛ разве не возникает желания сделать себе дебажное отображение тех же трейсов или связей между энтитями как в Джеке-Хаммере? И чтобы корректно работало с Z-буфером и не ломало остальной рендер?
Вроде очевидная идея, но я на такое пока не натыкался. Может быть в XDM есть, там всё есть.
Я вот попробовал через GLbegin и вижу что это толи нельзя запускать из произвольного места в коде(CalcThirdpersonRefdef), толи оно фундаментально невозможно.
А ещё есть этот баг который не до конца рисует группу точек если начало и конец расположены в обратном порядке.

C++ Source Code:
1
void Points( Vector start, Vector end )
2
{
3
  pglEnable( GL_BLEND );
4
  pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
5
  pglPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
6
 
7
  pglDisable( GL_TEXTURE_2D );
8
  pglPointSize( 5.0f );
9
 
10
  pglDisable( GL_DEPTH_TEST );
11
  pglEnable( GL_LINE_SMOOTH );
12
  pglEnable( GL_POLYGON_SMOOTH );
13
  pglHint( GL_LINE_SMOOTH_HINT, GL_NICEST );
14
  pglHint( GL_POLYGON_SMOOTH_HINT, GL_NICEST );
15
 
16
  int grad = 100;
17
  Vector step;
18
 
19
  step.x = (start.x-end.x) / grad;
20
  step.y = (start.y-end.y) / grad;
21
  step.z = (start.z-end.z) / grad;
22
 
23
  step = -step;//bug switch!
24
 
25
  pglBegin( GL_POINTS );
26
 
27
  for(int i=0;i<grad;i++)
28
  {
29
    start.x+=step.x;
30
    start.y+=step.y;
31
    start.z+=step.z;
32
    if (i==0)
33
    {
34
      ALERT(at_console, "start %f %f %f\n", start.x, start.y, start.z );
35
    }
36
    pglColor4f( 0.5f/grad*i, 1.0f/grad*i, 0.36f/grad*i, 0.99f/grad*i );
37
    pglVertex3fv( start );
38
  }
39
 
40
  pglEnd();
41
 
42
  pglEnable( GL_TEXTURE_2D );
43
  //pglPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
44
  pglDisable( GL_POLYGON_SMOOTH );
45
  pglDisable( GL_LINE_SMOOTH );
46
  pglEnable( GL_DEPTH_TEST );
47
  pglDisable( GL_BLEND );
48
  pglLineWidth( 1.0f );
49
}


С багом:


Отправлено Дядя Миша 14-10-2019 в 18:22:

Цитата:
Crystallize писал:
и вижу что это толи нельзя запускать из произвольного места в коде

надо из определённых мест.
А зачем ты точки рисуешь? Линии рисуй. Со стрелочкаме!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 14-10-2019 в 19:00:

Художников тоже учат сначала позы-скелетики линиями рисовать. И там та же проблема: при проекции на плоскость информация о перспективе теряется, толи объект наклонен к тебе, толи от тебя. Градиент помогает различить концы А и Б.
На самом деле тут точки вместо линий потому что я ждал что точки отфильтруются по глубине.


Отправлено thambs 14-10-2019 в 19:03:

Цитата:
Дядя Миша писал:
Линии рисуй. Со стрелочкаме!

А для линий можно учесть инфу о z-буффере, что бы они заслоняться чем-то могли?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено nemyax 14-10-2019 в 19:32:

Конечно, чё нет-то.


Отправлено Дядя Миша 14-10-2019 в 19:43:

Цитата:
Crystallize писал:
толи объект наклонен к тебе, толи от тебя. Градиент помогает различить концы А и Б.

ну во первых я и говорю - со стрелкочками рисуй. А во вторых, что тебе мешает задать началу линии один цвет, а концу - другой и получить такой же градиент?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 15-10-2019 в 01:38:

Цитата:
Дядя Миша писал:
ну во первых я и говорю - со стрелкочками рисуй. А во вторых, что тебе мешает задать началу линии один цвет, а концу - другой и получить такой же градиент?

Не знал что так можно.
Цитата:
thambs писал:
А для линий можно учесть инфу о z-буффере, что бы они заслоняться чем-то могли?

Цитата:
nemyax писал:
Конечно, чё нет-то.

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


Отправлено nemyax 15-10-2019 в 03:44:

Crystallize
Ты GL_DEPTH_TEST включаешь после вызовов рисовалки.


Отправлено Crystallize 15-10-2019 в 04:12:

nemyax
Я всяко пробовал, ничего не меняется.


Отправлено Дядя Миша 15-10-2019 в 07:24:

Цитата:
Crystallize писал:
Не знал что так можно.

но проверить ведь никто не мешал?

Рисуй линии из HUD_DrawTransparentTriangles.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 15-10-2019 в 09:03:

Недавно обнаружил в хл баг - если игрока ударит какой-нибудь монстр (зомби, например), а игрок сразу после этого зайдет в меню, то лазерный прицел начинает двигаться по экрану, WeaponIdle зовется даже когда игра остановлена, как на сервере, так и на клиенте. Как такое лечить?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Vadiman 16-10-2019 в 18:19:

Ребята, помогите с проблемой. Вылетает игра после добавления нового монстра/оружия (без ошибок в компиляции). При запуске карты с меню начинается загрузка (Starting local game server) и происходит вылет на раб. стол, дебаггер ругается на это в cbase.h:









Если нововведения убрать (иногда если убрать все из precache) то вылетать перестает. Вообщем похоже, что я какие-то лимиты precache превысил, всего оружия в моде 25 видов


Отправлено Vadiman 17-10-2019 в 15:46:

Вообщем, похоже, это переизбыток энтитей на тестовой карте, которую я загружал (если такое вообще возможно). При запуске другой карты вылетать перестало


Отправлено Crystallize 18-10-2019 в 16:56:

Цитата:
Дядя Миша писал:
ну во первых я и говорю - со стрелкочками рисуй. А во вторых, что тебе мешает задать началу линии один цвет, а концу - другой и получить такой же градиент?

Не работает так.


Отправлено nemyax 18-10-2019 в 17:20:

Crystallize
У всех работает, а у тебя не работает. Задай двум точкам разный цвет и отрисуй их как GL_LINES.


Отправлено Дядя Миша 18-10-2019 в 18:06:

Цитата:
Crystallize писал:
Не работает так.

ну как жы оно сработает, если ты задал GL_REPLACE? ты GL_MODULATE задавай.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 19-10-2019 в 11:24:

Хм, я ничего такого не указывал, т.е. это дефолтный режим?


Отправлено Crystallize 20-10-2019 в 16:00:

GL_MODULATE вообще будет работать не с текстурами а просто с двумя значениями RGB? Я везде вижу что сначала берут указатель на текстуру, потом скармливают его GL_BIND, задают режим блендинга, и уже потом применяют pglTexEnvf одним из параметров которого и является GL_MODULATE.


Отправлено Дядя Миша 20-10-2019 в 16:55:

Crystallize ну тут два варианта, я точно не помню. Либо прибинди текстуру-заглушку белого цвета и не парься. Либо включи
glShadeModel( GL_SMOOTH );
что-то должно сработать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 20-10-2019 в 17:01:

Цитата:
Дядя Миша писал:
текстуру-заглушку белого цвета

Это которая tr.whiteTexture?


Отправлено Дядя Миша 20-10-2019 в 18:54:

Crystallize ага, её.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 23-10-2019 в 12:09:

Так, я в HUD_DrawTransparentTriangles
Функции отрисовки типа pglVertex которые должны принимать вектор, ничего не рисуют, могут только обнулить его позицию и нарисовать всё в таком виде. Работают только те для которых ручками указываешь три координаты.
Рисуемый примитив-ну там линия или квад-заливается однотонно и цвет по непонятному принципу меняется если ходишь вокруг. Обычно цвет похож на цвет скайбокса, но может быть также чисто чёрным или чисто белым. Если указан GL_Bind с любой текстурой, то примитив красится разными оттенками фиолетового.
Потом я додумался заюзать TexCoord и выяснилось следующее: без бинда квад красится текстурой со скайбокса

если подойти ближе-то весёлой мешаниной текстур оружия

Если с биндом то рисуется эмарская молния какая-то, и поверх неё ещё одна

судя по всему мип-уровень, он исчезает если убрать фильтрацию


Отправлено ncuxonaT 23-10-2019 в 12:27:

glDisable(GL_TEXTURE_2D) не поможет?


Отправлено Crystallize 23-10-2019 в 12:48:

Некий эффект есть, но объект всё равно однотонный.

Добавлено 23-10-2019 в 19:40:

Ага, значит всё-таки нужен ShadeModel.

Добавлено 23-10-2019 в 19:42:

А GL_MODULATE даже и не нужен.

Добавлено 23-10-2019 в 19:48:

У меня получился красивый радужный квадратик, новсё-таки непонятно как это применить на практике если оно не хочет принимать на вход имена векторов.


Отправлено Дядя Миша 23-10-2019 в 13:03:

Цитата:
Crystallize писал:
Так, я в HUD_DrawTransparentTriangles

Доложите обстановку!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 23-10-2019 в 17:20:

Разобрался, вертекс должен быть объявлен как глобальная переменная, тогда он не будет пропадать.
Кстати, из какого-месте можно вывести ALERT чтобы посмотреть как сам GL видит ситуацию?


Отправлено Дядя Миша 23-10-2019 в 17:51:

Цитата:
Crystallize писал:
Кстати, из какого-месте можно вывести ALERT чтобы посмотреть как сам GL видит ситуацию?

запустить ксаш с -gldebug.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 23-10-2019 в 18:24:

Ничего особенного не произошло почему-то.


Отправлено Дядя Миша 23-10-2019 в 19:40:

Crystallize а что должно было произойти? Если бы ты накосячил, в консоли бы полезли ошибки. Раз молчит, значит порядок.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 25-10-2019 в 13:38:

Дядя Миша когда я косячил, подсовывая GL-у вертекс который GL не мог отрисовать потому что тот был задан локально объявленным вектором, то GL просто рисовал белиберду и не выдавал никаких ошибок. Я вчера воссоздавал ситуацию.


Отправлено Дядя Миша 25-10-2019 в 16:25:

Если ты задаёшь вертексы через glVertex3f, то не имеет никакого значения локальные они или глобальные. Значит ты через указатель что-то там передавал.

Цитата:
Crystallize писал:
GL просто рисовал белиберду и не выдавал никаких ошибок

Так он не знает, может ты и хотел это нарисовать. Чтобы полезли ошибки надо передавать невалидные параметры.

Добавлено 25-10-2019 в 19:25:

вот к примеру засунь в glBlendFund первым параметром GL_ALPHA - вот тебе и будет ошибка.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 26-10-2019 в 09:04:

Цитата:
Дядя Миша писал:
Если ты задаёшь вертексы через glVertex3f, то не имеет никакого значения локальные они или глобальные. Значит ты через указатель что-то там передавал.

Да не умею я указатели ещё.
Так, тут при изменении единственной координаты две другие начинают жить своей жизнью, т.е. например нарисовать плоский "бумеранг" из 4 вершин я не могу. OpenGL пытается сохранить фигуру конвексной и для этого оставляет за собой право деформировать её?

Добавлено 26-10-2019 в 16:04:

Бред какой-то, при изменении Z у всех четырёх вершин одинаково, одна из них начинает плыть по XY и в какой-то момент у всей фигуры инвертируется нормаль.


Отправлено nemyax 26-10-2019 в 09:29:

Цитата:
Crystallize писал:
нарисовать плоский "бумеранг" из 4 вершин я не могу

Рисуй два треугольника или веер или стрип. Только с порядком вершин не напутай.


Отправлено Дядя Миша 26-10-2019 в 10:27:

Цитата:
Crystallize писал:
OpenGL пытается сохранить фигуру конвексной



Ты бы книжку какую почитал что ли. Ну самое простое. Нарисуй на листе бумаги три точки и соедини их так чтобы получился треугольник.
Очевидно, что соединять надо в определённом порядке, иначе может получится не треугольник. Как по твоему GL должен догадаться в каком порядке соединять вершины? Ну очевидно по очереди их поступления. Ему нельзя просто от балды скормить три рандомных вертекса, чтобы он сам догадался как из этого сделать валидный треугольник. Сам GL знает только одну опцию - рисовать их по часовой или против часовой стрелки, всё.
По дефолту против часовой. То есть, если представить себе треугольник, с основанием внизу и вписать его в циферблат, будет примерно такой порядок 12-8-4.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 26-10-2019 в 10:41:

Цитата:
Дядя Миша писал:
Очевидно, что соединять надо в определённом порядке, иначе может получится не треугольник.

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

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Crystallize 26-10-2019 в 11:20:

Дядя Миша Я уголки квада рисовал так, что пары XY в столбик шли как бы лесенкой:
0 0
0 99
99 0
99 99
Не будем брать квады, возьмем простейший пример с линиями:

C++ Source Code:
1
pglDisable (GL_TEXTURE_2D);
2
pglLineWidth(5.0f);
3
Vector vec1, vec2;
4
vec1 =	(0.0, 0.0, -95.0);
5
vec2 =	(0.0, 99.0, -95.0);
6
 
7
pglBegin( GL_LINES);
8
 
9
pglVertex3fv ( vec1 );
10
pglVertex3f( 99.0, 99.0, -95.0 );
11
 
12
pglVertex3fv (vec2);
13
pglVertex3f( 99.0, 0.0, -95.0 );
14
 
15
pglEnd();

Все координаты разные. Результат:


Отправлено ncuxonaT 26-10-2019 в 11:38:

в glvertex3fv разве не указатель передаётся?


Отправлено Дядя Миша 26-10-2019 в 11:49:

Цитата:
XaeroX писал:
в каком порядке можно соединить три точки, чтобы получился не треугольник.

Та я почём знаю. Ну вот - соединяет же.

Добавлено 26-10-2019 в 14:49:

Crystallize попробуй просто задавать как Vertex3f.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 26-10-2019 в 13:08:

Цитата:
Дядя Миша писал:
попробуй просто задавать как Vertex3f.

А вот раскладывать вектор покомпонентно я не додумывался.
***
Я разобрался. Это какой-то конкретный глюк. Если вектор задаётся как
C++ Source Code:
vec2 = (x, y, z);

То реально в него пишется (z, z, z) !!!


Отправлено Дядя Миша 26-10-2019 в 13:11:

Да не мог ты так задать, как написал. Оно бы не скомпилилось.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 26-10-2019 в 13:14:

Crystallize
Как у тебя это вообще компилируется?
Надо так:
Vector vec2(x, y, z);
Или:
vec2 = Vector (x, y, z);

Добавлено 26-10-2019 в 20:14:

Дядя Миша
Может скомпилироваться, если есть конструктор Vector от одного float.
Например такой:
Vector::Vector( float v ) : x(v), y(v), z(v) {}
Только откуда ему взяться?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Crystallize 26-10-2019 в 13:16:

Ну у меня строчкой выше ещё написано Vector vec1, vec2; Или не строчкой выше, а снаружи функции. Результат один. На предыдущей странице код есть.


Отправлено Дядя Миша 26-10-2019 в 13:20:

Цитата:
XaeroX писал:
Может скомпилироваться, если есть конструктор Vector от одного float.

а как жы when no variable is declared?

Добавлено 26-10-2019 в 16:20:

И вообще тебе рисовать или вектора задавать? Рисуй через glVertex3f и не парь нам мозг.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 26-10-2019 в 13:26:

Дядя Миша Да рисовать теперь можно хоть как, когда я поймал этот баг:
https://imgur.com/a/Zw9ITil


Отправлено Ku2zoff 27-10-2019 в 12:58:

Хочу сделать фичу как на картинке, чтобы юзабельный объект выделялся скобками. Есть ли на клиенте возможность правильно определить габариты модели? Чтобы при осмотре с разных сторон скобки в неё не ныряли? Пробовал по mins/maxs, но это работает только если смотреть на модель прямо. Если сбоку, то "толщина" значительно меньше, чем надо.


Отправлено XaeroX 27-10-2019 в 13:01:

Ku2zoff
В Volatile/PW это уже из коробки имеется.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 27-10-2019 в 13:31:

XaeroX я знаю, т.к. ты тоже фанат DX, и не мог пройти мимо этой плюшки. Мне хочется в халфе/ксаше такое сделать.


Отправлено ncuxonaT 27-10-2019 в 14:14:

Умножать вершины ААВВ на мвп матрицу и считать минимумы/максимумы?


Отправлено XaeroX 27-10-2019 в 14:36:

Ku2zoff
Возможно, это уже несколько устаревшее решение. Кстати, оно не только в DX было в те годы, а и, скажем, в Red Faction.
А как тебе вариант из DX2? Там ничего считать не надо, нужен только ббокс.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 27-10-2019 в 15:23:

Цитата:
Ku2zoff писал:
Есть ли на клиенте возможность правильно определить габариты модели?

В ксаш-моде, функция R_ScissorForAABB даст тебе экранный ббокс этой модели. И заодно вернёт false, если моделька не попала в поле зрения игрока.

Цитата:
Ku2zoff писал:
Пробовал по mins/maxs, но это работает только если смотреть на модель прямо. Если сбоку, то "толщина" значительно меньше, чем надо.

Вообще это не совсем тривиальная задачка.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 29-10-2019 в 05:36:

Цитата:
XaeroX писал:
А как тебе вариант из DX2? Там ничего считать не надо, нужен только ббокс.

Залез на ютюб, посмотрел, т.к. DX IW у меня сейчас нет. Там, получается, куб, а не наэкранные скобки.
Цитата:
Дядя Миша писал:
R_ScissorForAABB

Естественно, она без кастомного рендерера не работает.


Отправлено XaeroX 29-10-2019 в 05:48:

Цитата:
Ku2zoff писал:
Там, получается, куб, а не наэкранные скобки.

Ну да. Более круто же, не?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 29-10-2019 в 06:08:

Хм. Кажется, я кое-что придумал. Можно воспользоваться функциями из pm_debug, которые рисуют ббоксы энтить. Но сами ббоксы не рисовать, а только записывать координаты в vuser'ы. Ну а потом, уже в худе, читать координаты, и рисовать красиво.
А ещё проще будет с помощью extern "C" сразу в худе юзать функцию рассчёта координат: на входе у неё энтитя, а на выходе 4 вектора.

Добавлено 29-10-2019 в 13:01:

Цитата:
XaeroX писал:
Ну да. Более круто же, не?

Мне вариант из первой части больше нравится. Меньше лишних элементов. Но самый лучший, ИМХО, вариант в последних играх. Но там шойдеры надо.

Добавлено 29-10-2019 в 13:08:

Можно, конечно, поступить проще, и просто подсвечивать нужную энтитю, меняя ей рендермод прямо на сервере, я пробовал. Но получилось некрасиво. Если всё получится, следующим шагом будет научить игрока таскать предметы как в DX.


Отправлено nemyax 29-10-2019 в 06:09:

Ku2zoff
Вариант ncuxonaT-а не нравится? Тоже первая мысль такая была.


Отправлено Ku2zoff 29-10-2019 в 07:10:

nemyax ну там же наверное надо в рендерер лезть.



Добавлено 29-10-2019 в 14:10:

Ссылка на ютюб для тех, у кого не видно видео: https://youtu.be/PAX5sZ_TnVY


Отправлено XaeroX 29-10-2019 в 07:28:

Ku2zoff
По мне, так вариант из DXIW тут неплохо бы смотрелся.

Добавлено 29-10-2019 в 14:28:

Цитата:
Ku2zoff писал:
ну там же наверное надо в рендерер лезть.

Не надо там никуда лезть, нужно просто восстановить 8 точек ббокса, трансформировать по той же матрице, по которой ты трансформируешь в видео, и посчитать для них новый ббокс.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 29-10-2019 в 08:15:

Перенёс весь код рисования на клиент, из pm_shared юзаю только GetModelBounds. Буду думать дальше. Охота всё-таки дрыгающиеся скобочки, как в первой части.

Добавлено 29-10-2019 в 15:15:

Напоролся на проблему. Все три компонента angles у энтити на клиенте null. Соответственно, не получается вращать рисуемый ббокс.


Отправлено Дядя Миша 29-10-2019 в 09:30:

Цитата:
Ku2zoff писал:
Естественно, она без кастомного рендерера не работает.

Скажем так - без гл-режима. В TriAPI есть такой хак - GetMatrix. Получи через него модельвью, получи проекцию, перемножь их между собой, результат приведи к виду 4х4, потом еще где-то возьми вьюпорт. И всё будет работать под халфой.

ЗЫ. матрицы из 16->4х4 и обратно, можешь тоже у меня взять из класса матриц.

Добавлено 29-10-2019 в 12:25:

А вьюпорт из ref_params.

Добавлено 29-10-2019 в 12:28:

Цитата:
Ku2zoff писал:
Но там шойдеры надо.

Шойдеры это только для эдж-детекшен. Можешь рассчитать в клиентке, но если модель тяжелая будет тормозно.

Добавлено 29-10-2019 в 12:30:

И вообще. Эти вашы, так называемые скобочки - это просто картинка с нарисованными скобочками. А ScissorForAABB даст её деномический размер.

Ku2zoff чтоб тебе было понятнее, как эта штука работает, включи в параное квар r_scissor_glass_debug илм r_scissor_light_debug.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-12-2019 в 19:01:

Тупой вопрос: как правильно рисовать спрайты с альфаканалом в худе? Цветные иконки, например, как в DoD. Есть такая функция?


Отправлено thambs 03-12-2019 в 22:10:

p2st

Что значит

Цитата:
CheckWinding: point off plane 0.052804

?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 04-12-2019 в 07:53:

Ku2zoff через триапи рисуй.

Цитата:
thambs писал:
CheckWinding: point off plane 0.052804

ошибки округления.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 04-12-2019 в 11:48:

Цитата:
Дядя Миша писал:
через триапи рисуй.

Ужо разобрался. Через триапи самое то. Универсально для всех разрешений, это во-первых. И куча рендермодов, это во-вторых. Надо только правильно спрайты делать. Пэинт.нет, поганец такой, постоянно портит пол-литру: прозрачный цвет съезжает с индекса 255 на 0 или любой другой. Скачал перацкий фотошоп на время, пока ничего дельного для рисования не найду.


Отправлено Дядя Миша 04-12-2019 в 12:31:

Цитата:
Ku2zoff писал:
Надо только правильно спрайты делать

https://hlfx.ru/forum/showthread.php?s=&threadid=5249

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 13-12-2019 в 17:22:

Делаю удар ногой через secondary attack, завёл PLAYER_ATTACK2, чтобы анимация в thirdperson отличалась от основной атаки, вызываю в коде оружия через m_pPlayer->SetAnimation( PLAYER_ATTACK2 );
В самой анимации анимирован удар ногой, но проблема в том, что в игре наследуются секвенция ног от walk, поэтому анимация по-сути проигрывается только для торса, как отключить это для PLAYER_ATTACK2?


C++ Source Code:
1
case PLAYER_ATTACK2:
2
  switch( m_Activity )
3
  {
4
  case ACT_HOVER:
5
    case ACT_SWIM:
6
      case ACT_HOP:
7
        case ACT_LEAP:
8
          case ACT_DIESIMPLE:
9
              m_IdealActivity = m_Activity;
10
            break;
11
          default:
12
              m_IdealActivity = ACT_RANGE_ATTACK2;
13
            break;
14
          }


C++ Source Code:
1
case ACT_RANGE_ATTACK2:
2
  if ( FBitSet( pev->flags, FL_DUCKING ) )	// crouching
3
    strcpy( szAnim, "crouch_shoot2_" );
4
  else
5
    strcpy( szAnim, "ref_shoot2_" );
6
  strcat( szAnim, m_szAnimExtention );
7
  animDesired = LookupSequence( szAnim );
8
  if (animDesired == -1)
9
    animDesired = 0;
10
 
11
if ( pev->sequence != animDesired || !m_fSequenceLoops )
12
{
13
  pev->frame = 0;
14
}
15
 
16
if (!m_fSequenceLoops)
17
{
18
  pev->effects |= EF_NOINTERP;
19
}
20
 
21
m_Activity = m_IdealActivity;
22
 
23
pev->sequence		= animDesired;
24
ResetSequenceInfo( );
25
break;

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 13-12-2019 в 18:33:

Yo Den смотри PLAYER_JUMP и ACT_HOP. Там нет гейтсеквенций. Вообще, можешь сделать по-хитрому, и как раз таки сделать пинок гейтсеквенцией.


Отправлено JPEG 15-12-2019 в 13:37:

Цитата:
Ku2zoff писал:
Yo Den смотри PLAYER_JUMP и ACT_HOP. Там нет гейтсеквенций. Вообще, можешь сделать по-хитрому, и как раз таки сделать пинок гейтсеквенцией.

скопипастил оттуда код. Добавил в case PLAYER_WALK:
C++ Source Code:
1
if (m_Activity == ACT_RANGE_ATTACK2)
2
{
3
  m_IdealActivity = m_Activity;
4
}
5
else
6
{
7
  m_IdealActivity = ACT_WALK;
8
}


После воспроизведения ACT_RANGE_ATTACK2 игрок остаётся висеть на последнем кадре анимации, пока не пойду вперед/подпрыгну/ударю. В случае прыжка анимация сменялась при касании земли, а тут как сделать, чтобы она прекращалась после воспроизведения?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Luciferchik 15-12-2019 в 16:10:

Товарищи ни у кого не остался клиентский код от 9-way blending-а? Буду очень признателен если у кого-то он есть.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 16-12-2019 в 06:31:

Цитата:
Yo Den писал:
а тут как сделать, чтобы она прекращалась после воспроизведения?

m_fSequenceFinished, не? Правда, не подскажу, если сам не попробую сделать. Пробуй подобрать условия методом тыка. Глянь мой бесполезный тутор "Анимации безделья игрока", может там чего подчерпнёшь.


Отправлено Ku2zoff 29-12-2019 в 18:50:

Luciferchik сорян, что так поздно отвечаю. Есть у меня архив, щас найду. Вот, в аттач положил.

Добавлено 30-12-2019 в 01:46:

Кстати, можешь использовать серверную версию из сорцев ReGameDLL. Там код немного компактнее написан, надо с умом подойти, внимательно перенести на клиент.

Добавлено 30-12-2019 в 01:50:

Кстати, попутный вопрос к форумчанам, раз уж я в теме снова отметился. Ни кто не находил стандартную модельку v_9mmAR с двумя анимациями перезарядки, чтоб первая обычная, а вторая с передёргиванием затвора? Из Brutal Half-Life не предлагайте, там обе руки обрезанные, при Weapon Lag видно дырки. Я пытался к ней обычные руки приделать - вышло не очень.


Отправлено Luciferchik 29-12-2019 в 19:54:

Цитата:
Ku2zoff писал:
Luciferchik сорян, что так поздно отвечаю. Есть у меня архив, щас найду. Вот, в аттач положил.


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

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Crystallize 30-12-2019 в 12:05:

Почему в HL2 трейс от солнца часто останавливается на границе листьев? Часто бывает что в окне солце видно а на полу света от него нет. В Ку2 тоже такое есть?


Отправлено FiEctro 30-12-2019 в 12:08:

Crystallize
Может разрешения лайтмапы недостаточное?


Отправлено Crystallize 30-12-2019 в 12:14:

FiEctro ну кстати смена разрешения лайтмапы там тоже сломана. Не, не в этом дело, в соседней комнате оно освещает подоконники и косяки, толщиной 8 юнитов. Может быть дело в том что окно в редакторе залепили TOOLSBLACK поверх брекабли. Но в других местах не залепили и солнце светит под прямым углом, но в помещение не проникает. Им приходится лепить фейковое солнце спотами. %)


Отправлено FiEctro 30-12-2019 в 13:59:

Цитата:
Crystallize писал:
FiEctro ну кстати смена разрешения лайтмапы там тоже сломана. Не, не в этом дело, в соседней комнате оно освещает подоконники и косяки, толщиной 8 юнитов. Может быть дело в том что окно в редакторе залепили TOOLSBLACK поверх брекабли. Но в других местах не залепили и солнце светит под прямым углом, но в помещение не проникает. Им приходится лепить фейковое солнце спотами. %)


Без скриншотов из игры и редактора трудно что либо предположить.


Отправлено Luciferchik 31-12-2019 в 09:08:

Товарищи объясните, что происходит со спрайтами снега когда юзаешь их вместе с туманом на ксаше, в обычной хл такого бага нету.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 31-12-2019 в 09:32:

Luciferchik для снега надо выключить туман. Ну или сделать ACFF на CPU как в ку3. Я там примерчег оставил для авроры, как это делается.

Добавлено 31-12-2019 в 12:32:

А вообще странно конечно, может ксаш-мод устаревший.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 31-12-2019 в 09:44:

FiEctro а, там видимое солнце некорректно стоит, а реальные углы другие, такие хитрые что дальше подоконника трейс упирается либо в косяк, либо в колонну, либо в текстуру стекла которое типа настолько грязное что его можно сделать солидом, а с внутренней стороны поставить текслайт.

Мне нужно как-то из РАДа прочитать координаты проп_статиков, но любая попытка копирования куда-то наружу хоть и проглатывается компилятором но вызывает краш при запуске, например:

C++ Source Code:
1
//-----------------------------------------------------------------------------
2
// Adds all static prop polys to the ray trace store.
3
//-----------------------------------------------------------------------------
4
void CVradStaticPropMgr::AddPolysForRayTrace( void )
5
{
6
  int count = m_StaticProps.Count();
7
  if ( !count )
8
  {
9
    // nothing to do
10
    return;
11
  }
12
 
13
  // Triangle coverage of 1 (full coverage)
14
  Vector fullCoverage;
15
  fullCoverage.x = 1.0f;
16
 
17
  //Vector proporg[100];
18
  for ( int nProp = 0; nProp < count; ++nProp )
19
  {
20
    CStaticProp &prop = m_StaticProps[nProp];
21
    //VectorCopy(m_StaticProps[nProp].m_Origin, proporg[nProp]);
22
    StaticPropDict_t &dict = m_StaticPropDict[prop.m_ModelIdx];
23
 
24
    if ( prop.m_Flags & STATIC_PROP_NO_SHADOW )
25
      continue;

или
C++ Source Code:
1
void CVradStaticPropMgr::UnserializeModels( CUtlBuffer& buf, StaticPropExport_t exp )
2
{
3
  int count = buf.GetInt();
4
 
5
  m_StaticProps.AddMultipleToTail(count);
6
  for ( int i = 0; i < count; ++i )
7
  {
8
    StaticPropLump_t lump;
9
    //StaticPropExport_t exportlump;
10
    buf.Get( &lump, sizeof(StaticPropLump_t) );
11
 
12
    VectorCopy( lump.m_Origin, m_StaticProps[i].m_Origin );
13
    VectorCopy( lump.m_Angles, m_StaticProps[i].m_Angles );
14
 
15
    //create lib of prop_static for lamps
16
    //lump.m_Origin, exp.m_Lamps_StaticProps_Org[i]
17
    /*for (int j=0;j<2;j++)
18
    		{
19
    			forexport.m_Lamps_StaticProps_Ang[i][0]=lump.m_Angles[0];
20
    		}*/
21
 
22
    VectorCopy( lump.m_LightingOrigin, m_StaticProps[i].m_LightingOrigin );
23
    m_StaticProps[i].m_bLightingOriginValid = ( lump.m_Flags & STATIC_PROP_USE_LIGHTING_ORIGIN ) > 0;
24
    m_StaticProps[i].m_ModelIdx = lump.m_PropType;
25
    m_StaticProps[i].m_Handle = TREEDATA_INVALID_HANDLE;
26
    m_StaticProps[i].m_Flags = lump.m_Flags;
27
 
28
    //create lib of prop_static for lamps
29
    /*forexport.m_Lamps_StaticProps_Org[i][0]=lump.m_Origin[0];
30
    		for (int j=0;j<2;j++)
31
    		{
32
    			forexport.m_Lamps_StaticProps_Ang[i][0]=lump.m_Angles[0];
33
    		}*/
34
  }
35
}

в комментах-мои потуги


Отправлено XaeroX 31-12-2019 в 09:56:

Цитата:
Crystallize писал:
но любая попытка копирования куда-то наружу хоть и проглатывается компилятором но вызывает краш при запуске

Ну так это... самое время бросить, чтобы обратить свой упорный труд в более эффективном направлении!

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Luciferchik 31-12-2019 в 09:57:

Цитата:
Дядя Миша писал:
А вообще странно конечно, может ксаш-мод устаревший.

Юзаю последний xash3d, но запускал карту коробку на спиритовских длл и такое вот выходит.

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 31-12-2019 в 10:36:

Цитата:
Crystallize писал:
Мне нужно как-то из РАДа прочитать координаты проп_статиков

они уже записаны в энтитях. Не благодари.

Цитата:
Luciferchik писал:
но запускал карту коробку на спиритовских длл и такое вот выходит.

этот грёбаный туман невозможно подружить со всеми версиями спирита. В голдсорсе, к примеру его вообще поломали на стим-версиях. Я его чинил бесконечное кол-во раз, ну вероятно где-то опять что-то упустил.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 31-12-2019 в 10:54:

Цитата:
Дядя Миша писал:
этот грёбаный туман невозможно подружить со всеми версиями спирита.

Это означает, что ждать фикс ксаша или отказаться от использования этого тумана вместе с снегом/дождем?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Crystallize 31-12-2019 в 17:33:

Цитата:
Дядя Миша писал:
они уже записаны в энтитях. Не благодари.

в массиве &entities который перебирается при поиске различных лайтов, никаких проп-статиков уже нету. Их оттуда заранее отфильтровывают и кладут вместе с мировыми полигонами, кажется.


Отправлено Crystallize 06-01-2020 в 19:01:

Я в VRAD читаю массивы обычных Vector и некий небольшой но значительный процент значений оказывается -2147483648. Во-первых, как это детектировать? Сравнение if x < -99999 не помогает. Во-вторых, можно ли эти значения прочитать правильно? И как возникают они? Координата в мап-файле записана без точки, как целое, и при чтении во флоат что-то происходит?


Отправлено Crystallize 14-01-2020 в 17:45:

Читаю углы пропсов и ориентирую лайтспоты соответствующим образом.
В какой-то момент перестало работать и не хочет чиниться. Читаешь с пропса угол 90 0 0, назначаешь его споту а он светит на стенку. Мне так и надо, но ведь 90 0 0 это вертикально вверх, какая стенка?
При том, что в Хаммере при 90 0 0 спот реально встаёт вертикально вверх, а на стенку уходит синяя палочка, видимо ролл.
И да, я помню что ненулевые питч и яв оверрайдят соотв компоненты вектора. И про недавний прикол с моими векторами тоже не забыл.

Вот такой код, нас интересует аксиальный случай т.к. неаксиальный работает правильно:

C++ Source Code:
1
if ( g_bFixFakeLights && bSpotlight )//new code, lightspots only
2
{
3
  if ( fabs( propangle[0] )==0 || fabs( propangle[0] )==90 || fabs( propangle[0] )==180 || fabs( propangle[0] )==270 )
4
  {	//axial: daylight panel, cagelight, hanging down, etc.
5
  printf( "given prop angle %f %f %f becomes ",propangle[0],propangle[1],propangle[2] );
6
 
7
  printf( "%f %f %f\n",propangle[0],propangle[1],propangle[2] );
8
}
9
else
10
{	//projector with arbitrary angles
11
propangle[0] = -propangle[0];
12
}
13
SetupLightNormalFromProps( QAngle( propangle.x, propangle.y, propangle.z ), 0, 0, dl->light.normal );
14
//AngleVectors ( QAngle( propangle.x, propangle.y, propangle.z ), &dl->light.normal );
15
QAngle tmp;
16
VectorAngles( dl->light.normal, tmp );
17
printf( "SNLFP give %f %f %f\n",tmp[0],tmp[1],tmp[2] );
18
}
19
else//old path or lightenv/point
20
{
21
  GetVectorForKey( e, "angles", angles );
22
  pitch = FloatForKey (e, "pitch");
23
  angle = FloatForKey (e, "angle");
24
  SetupLightNormalFromProps( QAngle( angles.x, angles.y, angles.z ), angle, pitch, dl->light.normal );
25
}

Обнаружилось такое: угол 90 0 0 конвертится SetupLightNormalFromProps в нормаль, значит, и потом обратно, выходит 270 180 0
Если SetupLightNormalFromProps поменять на AngleVectors то на выходе будет 90 180 0
Вроде оба варианта какой-то бред.
Угол 0 90 0 в обоих случаях возвращается без изменений, ну разве что питч инвертируется.
Саму SetupLightNormalFromProps я еле нашёл, её файл с кодом не добавлен в проект.
C++ Source Code:
1
void SetupLightNormalFromProps( const QAngle &angles, float angle, float pitch, Vector &output )
2
{
3
  if (angle == ANGLE_UP)
4
  {
5
    output[0] = output[1] = 0;
6
    output[2] = 1;
7
  }
8
  else if (angle == ANGLE_DOWN)
9
  {
10
    output[0] = output[1] = 0;
11
    output[2] = -1;
12
  }
13
  else
14
  {
15
    // if we don't have a specific "angle" use the "angles" YAW
16
      if ( !angle )
17
      {
18
        angle = angles[YAW];
19
      }
20
 
21
    output[2] = 0;
22
    output[0] = (float)cos (angle/180*M_PI);
23
    output[1] = (float)sin (angle/180*M_PI);
24
  }
25
 
26
  if ( !pitch )
27
  {
28
    // if we don't have a specific "pitch" use the "angles" PITCH
29
      pitch = angles[PITCH];
30
  }
31
 
32
  output[2] = (float)sin(pitch/180*M_PI);
33
  output[0] *= (float)cos(pitch/180*M_PI);
34
  output[1] *= (float)cos(pitch/180*M_PI);
35
}

Я не врубаюсь почему у них из одного параметра выходят 2-3 угла в разных плоскостях.

AngleVectors у них такая:
C++ Source Code:
1
void AngleVectors (const QAngle &angles, Vector *forward)
2
{
3
  Assert( s_bMathlibInitialized );
4
  Assert( forward );
5
 
6
  float	sp, sy, cp, cy;
7
 
8
  SinCos( DEG2RAD( angles[YAW] ), &sy, &cy );
9
  SinCos( DEG2RAD( angles[PITCH] ), &sp, &cp );
10
 
11
  forward->x = cp*cy;
12
  forward->y = cp*sy;
13
  forward->z = -sp;
14
}


Отправлено Дядя Миша 14-01-2020 в 20:35:

Цитата:
Crystallize писал:
Читаю углы пропсов и ориентирую лайтспоты соответствующим образом.

всё это очень подозрительно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 16-01-2020 в 06:59:

Там у пропов и у света совершенно разные ск чтоли? С разными нулевыми направлениями и разными направлениями отсчета?

Добавлено 16-01-2020 в 13:59:

Потому что при инверсии питча и ява и добавления 180 в яв, почти все совпало при проверке но по-прежнему дико сломано в игре.


Отправлено Ku2zoff 26-01-2020 в 21:53:

Сегодня экспериментировал в очередной раз с большими картами. Создал параллелепипед высотой почти 32768 юнитов. Прыгал игроком вниз и считал секунды, за сколько он долетит до земли. Пытался таким образом примерно сравнить габариты с картой Sunspire из анрила. Так вот. Создал внизу воду (мировую), скомпилил... Халфа вылетает при попытке загрузить карту. Пробовал воду-энтитю - такой же эффект. Опытным путём пришёл к заключению, что если расположить водный браш или энтитю дальше, чем 8192 юнита от центра карты - халфа вылетит. Ксаш, конечно же, не вылетает. Интересно, что там за фигня такая в движке, что приводит к вылету? Может быть у кого есть идеи?

Добавлено 27-01-2020 в 04:53:

АП: в софтваре не вылетает. Только в OpenGL.


Отправлено Дядя Миша 27-01-2020 в 08:46:

Цитата:
Ku2zoff писал:
Пытался таким образом примерно сравнить габариты с картой Sunspire из анрила

в UT99 макс размер карты тоже +\-32768.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 28-01-2020 в 08:59:

Цитата:
Дядя Миша писал:
в UT99 макс размер карты тоже +\-32768.

У меня +\-16384. И это очень дофига по меркам халфы. Возможно, в анриле действительно +\-32768 UU, я не смог нигде этого нагуглить. У меня почему возникли мысли сравнить размеры? После обсуждений и сравнений у1 и ку2, я решил пройти у1. Дошёл до небесного города, а перед ним насмотрелся на солнечный шпиль. Особенно впечатлило, как скаржи, столкнутые попаданием из ASMD ооочень долго падают в лаву. Решил попробовать сделать нечто подобное в халфе. Учитывая, насколько в анриле размазаны текстуры на сабжевой карте, я думаю, что её можно сделать под халфу, не уперевшись в лимиты BSP. С парой хаков, конечно, но тем не менее.


Отправлено Дядя Миша 28-01-2020 в 09:39:

Цитата:
Ku2zoff писал:
я не смог нигде этого нагуглить

Скаржа спроси.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-01-2020 в 18:24:

Я сделяль

https://i.imgur.com/A232hAy.jpg

https://i.imgur.com/v8W1Ubf.jpg

https://i.imgur.com/IXAPHN9.jpg

Причём без всяких мартиц, вьюпортов и прочей шняги.

Добавлено 31-01-2020 в 01:24:

Если кому надо, напишу тутор.


Отправлено Дядя Миша 30-01-2020 в 18:42:

Цитата:
Ku2zoff писал:
Причём без всяких мартиц, вьюпортов и прочей шняги.

Добавлено завтра в 01:24:

Если кому надо, напишу тутор.

По фотошопу?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-01-2020 в 18:56:

Цитата:
Дядя Миша писал:
По фотошопу?

Не, я не умею в фотошоп.


Отправлено Luciferchik 30-01-2020 в 21:50:

Дядя Миша вопрос по компилятору моделей, как сделать чтоб он не уменьшал размеры текстуры? Вот хочу юзать 1024х1024 на ксаше, а оно мне её до 512х512 снижает

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено thambs 30-01-2020 в 21:51:

Ku2zoff
Красиво, полезная фича.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Ku2zoff 30-01-2020 в 22:05:

thambs я давно хотел сделать. Всё-таки получилась не без багов, иногда уголки съезжают слишком далеко к краям экрана, когда энтитя совсем близко. Но это мелочь, мне лень тащить код из ксашмода, да ещё адаптировать его для халфы. Осталось сделать чтобы можно было так же выделять студиомодели, и будет готово.


Отправлено Дядя Миша 31-01-2020 в 08:32:

Luciferchik юзай координаты с плавающей точкой, команда
$freecoords тогда не будет округлять.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SNMetamorph 31-01-2020 в 10:31:

Значица есть задача одна. Допустим, имею я текстуру шума, из которой я спокойно смогу собрать "пазл" без швов. Но как вот такую текстуру наложить на сферу/NPC, чтоб не было никаких швов непосредственно на модели?

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Luciferchik 31-01-2020 в 20:44:

Цитата:
Дядя Миша писал:
Luciferchik юзай координаты с плавающей точкой, команда
$freecoords тогда не будет округлять.

Благодарю

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено ncuxonaT 01-02-2020 в 00:36:

SNMetamorph можно удалить швы на каждой модели индивидуально


Отправлено Crystallize 01-02-2020 в 09:35:

ncuxonaT я думаю он спрашивает, есть ли быстрый способ подобрать UV-координаты для каждого сурфейса чтобы затайлить ту же сферу без швов?


Отправлено ncuxonaT 01-02-2020 в 13:26:

Crystallize вероятно. Но ведь такого способа нет


Отправлено Crystallize 01-02-2020 в 13:39:

ncuxonaT я думаю алгоритм растягивания углов квадратной текстуры по углам произвольного трапециидального сурфейса не будет сложным. Подразумевая что текстура бесшовная.

Добавлено 01-02-2020 в 20:39:

SNMetamorph ты главное сделай у такой текстуры размер побольше, а уж если это шуи то там особо не будет видно швов.


Отправлено Дядя Миша 01-02-2020 в 13:57:

Цитата:
ncuxonaT писал:
Но ведь такого способа нет




LCSM

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 01-02-2020 в 18:15:

Дядя Миша по-моему, это не то


Отправлено Ku2zoff 10-02-2020 в 10:28:

В процессе работы над таскаемыми пушаблями заметил странный баг. Появляется он и в обычной халфе с обычными пушаблями. Когда карта, на которой находится пушабля, загружена первой (через консоль, нью гейм и т.д.), если пушаблю сдвинуть, а потом перейти через чейнджлевел на вторую карту, то по возвращении на первую пушабля заспавнится заново, как будто её не двигали. Но только один раз, при первом возвращении. Если же карта с пушаблей загружена через чейнджлевел - респауна не происходит. Как думаете, что это? Вроде некритично (главное на первой карте мода не ставить пушабли), но неприятно.


Отправлено Дядя Миша 10-02-2020 в 11:25:

Ku2zoff в ксаше есть это?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 10-02-2020 в 12:19:

Дядя Миша да, и под обычной халфой и под ксашмодом.

Добавлено 10-02-2020 в 18:52:

Хм. Похоже, это только на моих картах. На оригинальных халфовских норм.

Добавлено 10-02-2020 в 19:19:

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


Отправлено FreeSlave 15-02-2020 в 13:34:

Тоже вопрос по func_pushable.

Есть две карты, соединенные changelevel'ом. func_pushable стоит на обеих картах в одинаковых позициях относительно info_landmark и с одинаковым globalname. Игрок встречает func_pushable только на второй карте, причем при переходе func_pushable находится вне зоны видимости. Итог: при переходе на второй карте func_pushable отсутствует.

Если на первой карте, не переходя сквозь changelevel, подойти к func_pushable и подтащить его к ченжлевелу, то пушабля переходит как надо. Т.е. дело в области видимости? Можно ли сделать чтоб пушабля переходила всегда вне зависимости её положения относительно перехода?

В аттаче обе карты.

__________________
I'm on github
I'm on opendesktop.org


Отправлено thambs 15-02-2020 в 13:44:

FreeSlave
trigger_transition?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено FreeSlave 15-02-2020 в 14:17:

thambs, предлагаешь растянуть его на всю карту?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 15-02-2020 в 14:42:

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

Добавлено 15-02-2020 в 21:42:

Попробуй расположить пушаблю подальше от чейнджлевела, чтобы она не попадала в его PVS, кстати.


Отправлено FreeSlave 15-02-2020 в 15:21:

Ku2zoff, так она вроде ж и не переходит как раз потому, что не попадает.

Попробовал грузить отдельным bsp - вроде нормально работает.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 15-02-2020 в 15:43:

Цитата:
Ku2zoff писал:
Растягивать транзишен на всю карту плохое решение

в таком случае транзишен вообще не надо ставить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Flash 15-02-2020 в 16:55:

Либо костылём, через маппинг, дабы нельзя было бы перетащить объект. Вряд ли сеттинг предполагает поле конфискации народного имущества.

__________________
Tiger! Tiger! burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?


Отправлено Crystallize 18-02-2020 в 10:57:

C++ Source Code:
1
//-----------------------------------------------------------------------------
2
// Unserialize static prop model dictionary
3
//-----------------------------------------------------------------------------
4
void CVradStaticPropMgr::UnserializeModelDict( CUtlBuffer& buf )
5
{
6
  int count = buf.GetInt();
7
 
8
  while ( --count >= 0 )
9
  {
10
    StaticPropDictLump_t lump;//this was in loop
11
    buf.Get( &lump, sizeof(StaticPropDictLump_t) );
12
    CreateCollisionModel( lump.m_Name );
13
    propDict[count][128] = lump.m_Name ;
14
 
15
    printf( "UMD inloop dict %i %i %s\n", count, *propDict[count][128], propDict[count][128] );
16
  }
17
 
18
  printf( "loop over\n" );
19
  int i=0;
20
  while ( propDict[i][128] )
21
  {
22
    printf( "UMD dict %i %i %s\n",		 i,		 *propDict[i][128], propDict[i][128] );
23
    i++;
24
  }
25
 
26
}

Count меняется, но указатель на propDict[count][128] не меняется, я вообще хз. В первом цикле значения propDict разные, во втором-одинаковые. propDict объявлен глобально, но когда я из другого cpp пытаюсь его читать, там как минимум половина строк повреждены.


Отправлено nemyax 18-02-2020 в 11:32:

Цитата:
Crystallize писал:
propDict[count][128]

Это чего за массив массивов такой?


Отправлено Дядя Миша 18-02-2020 в 13:50:

Цитата:
Crystallize писал:
указатель на propDict[count][128] не меняется

а как ты берёшь указатель?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 18-02-2020 в 14:07:

Тут 129-му элементу (count+1)-ного по счёту массива присваивается указатель на чяр, судя по коду. Какой длины эти массивы, если у тебя повреждаются строки?
Может, имелось в виду strcpy(propDict[count], lump.m_Name);?


Отправлено Дядя Миша 18-02-2020 в 15:33:

nemyax это стрингтабля

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 18-02-2020 в 15:46:

Цитата:
Дядя Миша писал:
а как ты берёшь указатель?

ну вон видишь в printf просто * приписываю к стрингтабле. Сейчас попробовал вывести без звездочки, как %x. Теперь больше похоже на пойнтер (12f64c) но он всё равно всегда одинаковый.

Цитата:
nemyax писал:
Тут 129-му элементу (count+1)-ного по счёту массива присваивается указатель на чяр, судя по коду. Какой длины эти массивы, если у тебя повреждаются строки?
Может, имелось в виду strcpy(propDict[count], lump.m_Name);?

Нет никакого 129-го элемента. 128 символов на строку, а count это счётчик более старшего порядка, он перечисляет строки.

Я пробовал всякие strcpy, Q_strcpy, memcpy, Q_memcpy, все приводят к тому что он валится с ошибкой. Только присваивание работает.


Отправлено nemyax 18-02-2020 в 15:59:

Дядя Миша
То есть char propDict[numStrings][128];?

Цитата:
Crystallize писал:
Нет никакого 129-го элемента. 128 символов на строку

Ну так а зачем ты в него пишешь тогда? Ещё и не тот тип.
Цитата:
propDict[count][128] = lump.m_Name ;

Вот тут ты присваиваешь нечто сразу за границей массива propDict[count]. Зачем там вообще индекс 128? Понятно, что строки у тебя будут битые.


Отправлено Crystallize 18-02-2020 в 16:07:

А, я пишу в 128 элемент строки и тут же попадаю в следущую строку?


Отправлено nemyax 18-02-2020 в 16:09:

Цитата:
Crystallize писал:
Я не понимаю почему ты считаешь что я выхожу за границы массива

[128] — это у тебя что? При длине массива в 128.


Отправлено Crystallize 18-02-2020 в 16:14:

Спасибо. Я просто решил что ему нужно каждый раз указывать полную размерность.


Отправлено nemyax 18-02-2020 в 16:16:

Цитата:
Crystallize писал:
Только присваивание работает.

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


Отправлено Дядя Миша 18-02-2020 в 16:19:

Цитата:
Crystallize писал:
ну вон видишь в printf просто * приписываю к стрингтабле. Сейчас попробовал вывести без звездочки, как %x. Теперь больше похоже на пойнтер (12f64c) но он всё равно всегда одинаковый.

и что ты таким образом собрался увидеть?
Ты понимаешь, что propDict это не массив?

И стрингтабля хранит там по идее просто номер строки, а не саму строку.
Впрочем даже если и саму строку, присваивание может быть выполнено так как показано, если сама строка это соответствующий класс.
Но насколько я помню, это именно стрингтабля.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено TOPOL_M_FRF 24-02-2020 в 09:34:

Кто то знает как изменять менюшки не в стим халве (WON) . На которой базируется ксаш.

Привык что в стиме поиграл с .res файлом и все, а тут ничего найти не могу.


Отправлено Ku2zoff 28-02-2020 в 21:36:

TOPOL_M_FRF берешь BMP файл, в котором написаны строки меню и перерисовываешь. Если какая-то строка не нужна, замазываешь её прозрачным цветом. Нажиматься будет, но её не будет видно. В файле strings.lst (кажется) прописаны описания, что справа от строк меню. Чтобы поменять шрифт, нужно пересобрать hl_res.dll. Это для WON-халфы. В ксаше доступны сорцы menu.dll, можно вообще всё перелопатить по-своему.

У меня вопрос: завёл себе в моде мовевитч. Собсно, только для того, чтобы цеплять стёкла к дверям, да кнопки к поездам и лифтам. С дверьми всё ездит отлично. Платформы ещё не доделал, но думаю, что поедет норм. С трактрейнами проблема - поезд иногда может быть заблокирован игроком, особенно на резких поворотах. Сталкивался с подобным в модах и без мовевитча. Куда копать? Иной раз всё норм, а иной раз, если игрок сунется в угол между плоскостями поезда, последний подтормаживает. Ну, дети, естественно, продолжают ехать. Думал, что я такой криворукий, неправильно скопипастил код из ксаша 0.39. Попробовал карту на спирите 1.9 - там ещё хуже, дети ещё и дёргаются, и вообще их страшно колбасит на поворотах. Помню, что раньше делал на спирите норм поезд со стёклами, используя motion_manager. Ну это вообще жесть, там ещё локусы и алиасы. Что мне нафиг не надо. Где лучше проверять блокировку родителя, чтобы при необходимости заблокировать детей?


Отправлено Дядя Миша 29-02-2020 в 07:06:

Нормальный мовевитч - только начиная с ксаша 0.5 и выше.
Под халфой уже не работает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 29-02-2020 в 07:13:

Дядя Миша это я знаю. Меня интересует именно секундное застревание игрока в трактрейне. Если от этого избавиться, не надо будет тормозить детей поезда. Либо у меня сама геометрия вагона корявая, либо скорость поезда слишком высокая, либо патчкорнеры криво расставлены на поворотах. В обычной халфе, в главе Black Mesa Inbound, я ни разу не блокировал игроком вагончик. Как и в блушифте или в опфоре. А вот на своих картах или в чьих-то модах такое случалось. Видимо, вопрос больше к мапперам, чем к кодерам.


Отправлено Дядя Миша 29-02-2020 в 07:31:

Набери impulse 101, игрок застрянет в айтемах и заблокирует вагончик.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 01-03-2020 в 11:20:

Отчего бывает такое когда хуллы останавливают тебя в режиме noclip и при r_showhull визуализируются не там, где они на самом деле?


Отправлено Дядя Миша 01-03-2020 в 12:18:

Хуллы не могут останавливать в режиме ноклип

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 01-03-2020 в 15:50:

Ну что-то другое значит)) Это оттого что я в новую папку мода просто скопировал папки bin и glsl из ксашмода.


Отправлено Дядя Миша 01-03-2020 в 16:36:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 01-03-2020 в 18:15:

Я всегда в ксашмоде успешно визуализировал хуллы. Правда в сегодняшнем конкретном случае сервер чаще умирает с bad contents -19.


Отправлено Дядя Миша 01-03-2020 в 18:44:

-19 это туманчег, оно недоделато. Не юзай текстуру, начинающуюся на "fog".

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 04-03-2020 в 16:34:

Как сделать чтобы соприкасающиеся бмодели и браши не резали друг друга на клипноды? Детайлы, func_group, zhlt_nocsg не помогают, они только для видимых сурфейсов. Пока я вижу только func_wall как действенный способ.


Отправлено Дядя Миша 04-03-2020 в 17:59:

Цитата:
Crystallize писал:
Как сделать чтобы соприкасающиеся бмодели и браши не резали друг друга на клипноды?

китайские возьми, там это можно было настраивать для клипнодов.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 09-03-2020 в 13:51:

Хочу оформить замазыватель швов на текстурах в отдельное приложение и выложить в общее пользование. 2 вопроса:
1. оно кому-нибудь надо?
2. есть ли идеи по поводу интерфейса?
https://i.imgur.com/I8AfzcA.jpghttps://i.imgur.com/ps4gEO7.jpg


Отправлено thambs 09-03-2020 в 13:54:

ncuxonaT
Выглядит круто. Под какой формат?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено ncuxonaT 09-03-2020 в 13:56:

thambs модели в obj, текстуры наверное в любом формате.


Отправлено Дядя Миша 09-03-2020 в 14:49:

ncuxonaT а где именно швы замазались, покажи пожалуйста

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 09-03-2020 в 14:52:

Дядя Миша на бедрах и на коленках вижу


Отправлено Chyvachok 09-03-2020 в 14:57:

ncuxonaT вещь полезная, заметно как на модельке на скрине исчез текстурный шов на ноге.


Отправлено thambs 09-03-2020 в 15:08:

Дядя Миша

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 09-03-2020 в 15:28:

Не вижу разницы и всё тут

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 09-03-2020 в 15:40:

Дядя Миша это кстати две разные картинки, можно переключаться между табами как ты любишь


Отправлено Дядя Миша 09-03-2020 в 16:15:

Цитата:
Crystallize писал:
это кстати две разные картинки

вот блин, недоглядел. Ну да, при переключении сразу всё понятно.
Корошая штука. Но разве в блендере-максе нет такого инструмента?
Или это только для ку2?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 09-03-2020 в 17:54:

Дядя Миша нет такого инструмента. Для любых текстур и любой геометрии, только нужно её предварительно в obj конвертировать. С нормалмапами не прокатит наверное, нужно их будет сначала перевести в ворлдспейс, а потом обратно.


Отправлено thambs 09-03-2020 в 19:46:

ncuxonaT
На чём писал и как вообще сделано, через МНК?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 09-03-2020 в 20:01:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 09-03-2020 в 21:44:

thambs на лазарусе. Сделано через метод сопряженных градиентов.
https://www.sebastiansylvan.com/pos...esTextureSeams/ вот по этой статье в основном.

Дядя Миша ну как отчего, оттого же отчего и на лайтмапе. Развертка фрагментами, билинейная фильтрация, цвета отфильтрованных семлов с разных сторон не совпадают. Я не знаю, почему в редакторах нет инструментов. Наверное, потому что программисты говорят моделлерам "делайте швы в незаметных местах".


Отправлено Дядя Миша 09-03-2020 в 22:17:

Если я правильно понял, алгоритм применяется не к развёртке, а к самой текстуре, добавляя туда сглаживающих пикселей.
А можно посмотреть как выглядит текстура до и после?

Цитата:
ncuxonaT писал:
ну как отчего, оттого же отчего и на лайтмапе

ну лайтмаппер - алгоритм неразумный, считает себе там что-то, а у моделлёра глаза есть и своя голова за плечами.

Цитата:
ncuxonaT писал:
Наверное, потому что программисты говорят моделлерам "делайте швы в незаметных местах".

Так подождите! А развёрстку-то кто генерит и по какому алгоритму?
Если развёрстка поганая, то конечно швы будут.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 09-03-2020 в 22:25:

Цитата:
Дядя Миша писал:
Если я правильно понял, алгоритм применяется не к развёртке, а к самой текстуре, добавляя туда сглаживающих пикселей.

Да, всё верно.
До/после (это 2 картинки):
https://i.imgur.com/y4pdtEj.pnghttps://i.imgur.com/Y0qR6Yp.png
По уму, конечно, надо каждый мип обрабатывать. Хотя вероятно можно менять еще и соседние пиксели, имитируя боксфильтр генерации мипов.


Отправлено Дядя Миша 10-03-2020 в 08:43:

А как он вычисляет эти пиксели? Интерполирует?
Плохо конечно, что по факту в авторский контент вносятся изменения, и это не ST и не лайтмапа. Может поэтому подобные вещи не пользуются популярностью. Ну ладно в халфе - там текстура вкомпиливается внутрь модели, можно во время компиляции это сделать, если оно не сильно долгое. Этот автор как-то странновато строит хэш для эджей.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 10-03-2020 в 09:27:

Цитата:
ncuxonaT писал:
https://www.sebastiansylvan.com/pos...esTextureSeams/ вот по этой статье в основном.

Ну камень как-то вообще сильно мылит.


Отправлено ncuxonaT 10-03-2020 в 12:40:

Дядя Миша вычисляет методом сопряжённых градиентов. Можно задать веса, чтобы больше изменялись пиксели снаружи треугольника, а внутренние меньше.

Crystallize ну так на камне и текстура 32х32. И даже так лучше, чем со швами


Отправлено Дядя Миша 10-03-2020 в 12:57:

Цитата:
ncuxonaT писал:
вычисляет методом сопряжённых градиентов

не, методом сопряжённых градиентов он находит места, которые надо замылить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено thambs 10-03-2020 в 13:03:

Цитата:
Дядя Миша писал:
бесшовному проекционному текстурированию

А это что за зверь?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 10-03-2020 в 13:16:

thambs ну как ты в хаммере накладываешь текстуру на брашы.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 10-03-2020 в 13:32:

Цитата:
Дядя Миша писал:
не, методом сопряжённых градиентов он находит места, которые надо замылить.

Нет, методом сопряженных градиентов вычисляются значения пикселей. А найти места, которые надо замылить, - это просто пробежать вдоль ребра


Отправлено Дядя Миша 10-03-2020 в 16:12:

ncuxonaT но ведь не все же рёбра надо мылить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 10-03-2020 в 17:07:

Дядя Миша все надо мылить. Только не мылить, а минимизировать расхождение. Если расхождения не было, то ничего и не поменяется.


Отправлено Дядя Миша 10-03-2020 в 17:18:

Не нравится мне это всё, совсем не нравится. Эти швы, равно как и швы на лайтмапах - очень частный случай, применение к ним тежолого матана - как из пушки по воробьям, он конечно справится, но это попросту избыточно.
Я напомню, что хитрая китайская придумка гарантировала в принципе отстутствие швов на лайтмапах и при этом использовала довольно простые принципы работы - переход из одного локального пространства в другое.
Собсно, вот я VHACD опробовал - тоже тяжёлый матан. А мне проще дерево построить из фейсов и покромсать его на брашы, а потом эти брашы смержить по возможности. И это в сотни раз быстрее и точнее получается.

Добавлено 10-03-2020 в 20:18:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 10-03-2020 в 18:17:

Дядя Миша если китайская придумка хорошо работала, зачем же ты тогда городил огород с текселями, выровненными по мировым координатам?


Отправлено Crystallize 10-03-2020 в 18:34:

ncuxonaT китайская придумка очень сильно жрала оперативу и проц и время


Отправлено ncuxonaT 10-03-2020 в 18:59:

Crystallize и никак её нельзя было оптимизировать?


Отправлено Дядя Миша 10-03-2020 в 20:18:

Цитата:
ncuxonaT писал:
зачем же ты тогда городил огород с текселями, выровненными по мировым координатам?

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

Цитата:
Crystallize писал:
китайская придумка очень сильно жрала оперативу и проц и время

глупости какие. Единственное что там жрало - это память под точки.

Цитата:
ncuxonaT писал:
и никак её нельзя было оптимизировать?

ну а я по вашему что сделал?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 10-03-2020 в 20:29:

Есть у меня подозрение, что китайская придумка не пригодна для сложной геометрии, только для брашей


Отправлено Дядя Миша 10-03-2020 в 20:51:

ncuxonaT есть такое дело. На трианглах она не очень. Но на квадах отлично. Впрочем, я думаю, всё дело в этих точках, они просто для трианглов расставляются неоптимальным образом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 11-03-2020 в 01:17:

Цитата:
Дядя Миша писал:
глупости какие. Единственное что там жрало - это память под точки.

Так если бы. Оно же ещё медленнее работало из-за этого.

Цитата:
Дядя Миша писал:
ну а я по вашему что сделал?

Ты выкинул её целиком.

Добавлено 11-03-2020 в 08:17:

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

Лайтмапу ты генеришь с нуля сам вместе с развёрткой. Здесь развёртку рисовал художник и под неё рисовал текстуру. Ни то не другое ты алгоритмом не поменяешь, если конечно не применишь какую-нибудь нейросеть. Что тут вообще можно исправить? Они почему-то делали развёртку параллелограммами.


Отправлено Дядя Миша 11-03-2020 в 10:41:

Цитата:
Crystallize писал:
Оно же ещё медленнее работало из-за этого.

Ну вот построение этих точек отнимало немного времени. До десяти секунд на сложных картах.

Цитата:
Crystallize писал:
Ты выкинул её целиком.

Оставил и доработал.

Цитата:
Crystallize писал:
Здесь развёртку рисовал художник и под неё рисовал текстуру

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 13-03-2020 в 21:07:

Существует ли простой и изящный способ клипнуть треугольник АА боксом? По типу как на картинке. Чтобы на выходе получить список вершин многоугольника.


Отправлено Дядя Миша 13-03-2020 в 21:15:

Ну как компиляторы карт полигоны режут - всё тожы самое абсолютно.
Ищешь точки за плоскостью, перед плоскостью и на плоскости и клипаеш.
Посмотри в любой кваке polylib.c

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 14-03-2020 в 14:15:

Цитата:
Дядя Миша писал:
И что? В компиленой модели развертка и текстура могут отличаться от того, что сделал художник. Тебя же не смущает, что в карту попадают не те брашы, которые ты ставил на карту, выглядят-то они именно так, как ты и задумывал.

Напиши уже мини-статью о том что происходит при компиляции моделей в разных Quake-подобных движках.


Отправлено Дядя Миша 14-03-2020 в 14:23:

Я не хочу больше писать ничего, только время отнимает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 21-03-2020 в 14:57:

Добавил в свой мод верёвки. Изначальный вариант от Солокиллера работает как в опфоре, без проблем. Дядьмишин вариант из ксашмода - не совсем корректно. Второй, иногда третий сегменты странно колбасит, они "выпадают" из верёвки в сторону. В чём проблема? И какие основные отличия в реализации? Смотрел код, но ничего особо не понял, многабукаф.


Отправлено Дядя Миша 21-03-2020 в 15:53:

Цитата:
Ku2zoff писал:
Изначальный вариант от Солокиллера работает как в опфоре, без проблем

Проблемы начинаются после копипасты или прямо в ксаш-моде?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 21-03-2020 в 16:49:

Дядя Миша прямо в ксашмоде. Нормально выглядит верёвка, сделанная одной моделью. А вот сегментированную колбасит.

https://i.imgur.com/KAYjVKs.jpg https://i.imgur.com/aYAQ7pe.jpg

Второй сегмент ведёт себя странно.

Цитата:
Дядя Миша писал:
после копипасты

Единственная проблема, возникшая у меня после копипасты - неправильный pitch у сегментов, т.к. в ксашмоде заборот SQB. С этим я справился.

Да, ребятам из FWGS на заметку. У них тоже корявый код верёвки в репе опфора, только там второй сегмент торчит горизонтально. Ещё, Солокиллер оставил в коде игрока коммент, дескать, в опфоре нельзя раскачиваться на веревках вбок. Брехня.

P.S. когда верёвка не двигается, всё норм. Косячит только в движении.

Добавлено 21-03-2020 в 23:49:

Странная ситуация. 10 лет назад форумчане кипятком бы ссали, получи они код верёвок, вехикла и танка. Сейчас всё в открытом доступе, никто даже багов не видит. Видимо, ушла эпоха.

Как я не пытался качаться на верёвке в ксашмоде - колбасит только второй сегмент. В моём моде колбасит второй и третий.


Отправлено Дядя Миша 21-03-2020 в 17:45:

Ну это не моя карта. А на моей бага нет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 21-03-2020 в 18:50:

Это ofboot3 из опфора. И на ней нет бага с кодом Солокиллера.

Добавлено 22-03-2020 в 01:50:

Удалось воспроизвести баг. Если энтитю верёвки погрузить в браш, чтобы её начало было внутри этого браша хоть на один юнит - сегменты колбасит. Если просто повесить в воздухе, или ювелирно прислонить вплотную к брашу, то всё норм. Так что это всего лишь мапперская ошибка.


Отправлено Дядя Миша 21-03-2020 в 18:55:

Цитата:
Ku2zoff писал:
Если энтитю верёвки погрузить в браш, чтобы её начало было внутри этого браша хоть на один юнит - сегменты колбасит.

ну так не погружай веровки в брашы

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 21-03-2020 в 19:05:

Цитата:
Ku2zoff писал:
Да, ребятам из FWGS на заметку. У них тоже корявый код верёвки в репе опфора, только там второй сегмент торчит горизонтально.


Вроде проблема с последним сегментом была такая. Сейчас должно быть исправлено. Ты от какого числа версию то смотришь?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 21-03-2020 в 20:07:

Цитата:
FreeSlave писал:
Ты от какого числа версию то смотришь?

Последнее изменение от 17 февраля. Тоже баг есть. А ещё эти верёвки позволяют игроку почти что летать, физика у ДМ и Солокиллера не такая.

Добавлено 22-03-2020 в 03:07:

Цитата:
Дядя Миша писал:
ну так не погружай веровки в брашы

Тогда между верёвкой и потолком будет заметный зазор. Попробую func_illusionary, будет влиять на появление бага несолидный объект или нет.


Отправлено Дядя Миша 21-03-2020 в 20:11:

Ну а ты в этот зазор впихни крюк моделькой
Всему вас учить надо

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 22-03-2020 в 10:41:

Цитата:
Ku2zoff писал:
Попробую func_illusionary, будет влиять на появление бага несолидный объект или нет.

В общем, выяснил причину теперь точно. Энтитя верёвки не должна находиться в солидном объекте (браше) или рядом с ним. Видимо, минимально безопасное расстояние зависит от размеров сегмента:
C++ Source Code:
Vector(-16, -16, -18), Vector(16, 16, 18)

Чем глубже верёвка в браше, тем больше сегментов колбасит, т.к. они, имея SOLID_TRIGGER, "цепляются" за браш. Так что либо крюк моделькой, как посоветовал ДМ, либо func_illusionary или func_detail с passable = 1 вместо брашевого потолка.


Отправлено Дядя Миша 22-03-2020 в 12:06:

Верёвка коллидит с миром, да.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 22-03-2020 в 12:58:

Можно сделать первые два-три сегмента несолидными, всё равно на них игрок не может залезть. Я кажется понял, отчего возникла эта проблема именно в модифицированном коде. В оригинале, ЕМНИП, есть семплы и сегменты, кол-во энтить двойное. А тут только сегменты. Подозреваю, что семплы используются именно для того, чтобы лазить, а сегменты для визуального отображения. И в оригинале видимые сегменты не коллайдят с миром. А то, что коллайдит - так же колбасится, просто этого не видно.


Отправлено Дядя Миша 22-03-2020 в 13:44:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SNMetamorph 22-03-2020 в 13:52:

Товарисчи, кто нибудь пробовал добавить в мод скольжение по наклонным поверхностям как в q1/q3? Я начал разбираться в этой теме, ещё не понял в чем ключевое отличие. В HLSDK это передвижение работает так - если угол между осью Z и нормалью поверхности меньше 45.5 градусов, то передвижение происходит так же, как и по обычному полу. Но если этот угол больше, то передвижение происходит по алгоритму будто игрок летит в воздухе. Ключевая задача такая: сделать возможность взбираться на наклонные плоскости, и скользить по ним вниз, при этом набирая скорость.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Ku2zoff 22-03-2020 в 14:50:

Цитата:
Дядя Миша писал:
в любом случае мне не приходило в голову утопить веровку в потолке

Даже если ориджин env_rope находится ниже потолка, второй сегмент всё равно залипает. Я как раз и напоролся на это в опфоре, см. скрин декомпила карты. Даже если env_rope спустить ещё ниже, чтобы энтить не касалась потолка, второй сегмент всё равно будет залипать, видимо из-за размеров. На скрине из игры две верёвки. Которая справа - у той расстояние от края энтити (в редакторе) до потолка - 16 юнитов. Её не колбасит, как раз видимо безопасное расстояние.
https://i.imgur.com/cAb7qWJ.jpg


Отправлено FreeSlave 22-03-2020 в 16:02:

Цитата:
Ku2zoff писал:
только там второй сегмент торчит горизонтально.


Я так и не наблюдаю этот баг, по крайней мере, визуально. Скинешь карту и скриншот?

UPD: загрузил ofboot3 - действительно колбасит сегмент. Если делал фикс - делись

Цитата:
Ku2zoff писал:
А ещё эти верёвки позволяют игроку почти что летать


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

Цитата:
Ku2zoff писал:
В оригинале, ЕМНИП, есть семплы и сегменты, кол-во энтить двойное. А тут только сегменты.


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

UPD: я напутал. Сэмплы остались, но в целом количество энтить я уменьшал, просто теперь сэмпл хранит по два набора данных. Я пробовал совсем избавляться от сэмплов, как в xashxt, но из-за этого менялась физика веревок, так что я в итоге их оставил.

Вообще в целом, если что-то правишь - можешь делать пуллреквесты, и обсуждать мы будем уже на гитхабе.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 22-03-2020 в 16:19:

Цитата:
Ku2zoff писал:
второй сегмент всё равно будет залипать, видимо из-за размеров.

Это в ксаш-моде или после копипасты? Может дело в SQB?

Цитата:
FreeSlave писал:
Я убирал сэмплы, чтобы уменьшить количество эдиктов.

на ксаш-мод ориентировались? Хотя я не сравнивал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 22-03-2020 в 16:50:

Цитата:
Дядя Миша писал:
на ксаш-мод ориентировались?


Да. И получилось, что раскачиваться веревки стали не так охотно, как в опфоре. У меня кстати это в отдельном бранче ещё осталось. Залил поверх ветки opfor сюда https://github.com/FreeSlave/hlsdk-...opfor_alt_ropes

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 22-03-2020 в 17:14:

Цитата:
Дядя Миша писал:
Это в ксаш-моде или после копипасты? Может дело в SQB?

Вот видос из ксашмода. Ситуация 1 в 1 как и после копипасты.



Цитата:
FreeSlave писал:
Тоже непонятно, что ты подразумеваешь.

Ксашевский вариант аналогичен по физике опфоровскому. То, что в репе FWGS, работает немного не так: игрок очень уж сильно разгоняется при раскачивании, и может взлететь выше ориджина env_rope. Хотя, наверное мне это могло показаться.
Цитата:
FreeSlave писал:
Вообще в целом, если что-то правишь - можешь делать пуллреквесты, и обсуждать мы будем уже на гитхабе.

Если бы я нашёл причину, то исправил бы. Пока мне непонятно, почему сегменты колбасит.
Кстати, проблемную верёвку легко вычислить визуально: первый сегмент у неё значительно темнее остальных.

Добавлено 23-03-2020 в 00:14:

Цитата:
FreeSlave писал:
И получилось, что раскачиваться веревки стали не так охотно, как в опфоре.

Ну вот то-то и оно. Значит мне не показалось, что у вас верёвки сильнее качаются. Однако, ксашевский вариант не мешает пройти бут_кэмп, хоть и раскачиваться становится тяжелее. Как там в сингле, может быть есть места, где ускорения не хватит, я не знаю, не проверял.


Отправлено FreeSlave 22-03-2020 в 17:39:

Цитата:
Ku2zoff писал:
Ксашевский вариант аналогичен по физике опфоровскому.


Цитата:
Ku2zoff писал:
Однако, ксашевский вариант не мешает пройти бут_кэмп, хоть и раскачиваться становится тяжелее.


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

Сильно раскачиваться и летать выше ориджина - можно и в оригинальном опфоре (по крайней мере, в стимовском).

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 25-03-2020 в 08:43:

Так. Нашёл в каком месте кода у нас проблема. Но пока не нашёл, в чём она заключается. Функция CRope::TraceModels, блок кода в условии if (m_bObjectAttached). Если этот блок выкинуть, чтобы трейс был и в случае с приаттаченным объектом, и без него одинаковый - проблемы нет. Может быть, дело в конечной точке трейса, ведь она вычисляется в первом случае динамически, в зависимости от flTraceDist.


Отправлено nemyax 25-03-2020 в 08:53:

Ku2zoff
А можешь показать ведос "до и после"?


Отправлено Ku2zoff 25-03-2020 в 09:04:

nemyax щас запишу.


Отправлено Дядя Миша 25-03-2020 в 09:04:

m_bObjectAttached - это игрок на веровке. И кстати говоря, я в этом условии помоему ничего не менял. Оно и выглядит как записки сумашедшего.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 25-03-2020 в 09:29:

До:



После:



Добавлено 25-03-2020 в 16:29:

Цитата:
Дядя Миша писал:
кстати говоря, я в этом условии помоему ничего не менял

Я сравнил. Там всё 1 в 1 с кодом Солокиллера. Но трейсятся сегменты по-разному, видимо из-за того, что в оригинальном коде каждый кадр какая-то жуткая чехарда из std::swap( ppSampleSource, ppSampleTarget ). Подозрения на трейс у меня возникли сразу же, как только я попробовал вместо мирового браша использовать func_illusionary. Вот, теперь докопался до места, где возникает проблема. Возможно, она сидит глубже, а возможно, что записки сумасшедшего можно выкинуть из кода. Я разницы не заметил, кроме той, что баг пропал.


Отправлено Дядя Миша 25-03-2020 в 09:55:

Этот код всё равно в XashNT попал, я потом до него доберусь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 25-03-2020 в 11:44:

Цитата:
FreeSlave писал:
Ты уж определись, какой вариант какому ближе.

Побегал с разными реализациями, внимательно сравнил. Вариант Солокиллера, оригинальный опфор и репозиторий FWGS - более летательные варианты. Даже короткую верёвку на ofboot3 можно умудриться намотать на браш, взлетев выше её ориджина. Вариант из ксашмода - более реалистичный: выше ориджина тяжело взлететь даже на очень длинной верёвке. Мне, естественно, второй нравится больше. Только с ним не сделаешь раскачку в некоторых местах, когда точка, куда нужно спрыгнуть, находится ниже ориджина верёвки всего на 5-8 сегментов. Как раз такие первые два препятствия с верёвками на ofboot3.


Отправлено JPEG 26-03-2020 в 12:17:

Есть ли возможность смены скорости переключения мерцания у light_spot? Речь об

//
// Setup light animation tables. 'a' is total darkness, 'z' is maxbright.
//

// 0 normal
LIGHT_STYLE(0, "m");

// 1 FLICKER (first variety)
LIGHT_STYLE(1, "mmnmmommommnonmmonqnmmo");

// 2 SLOW STRONG PULSE
LIGHT_STYLE(2, "abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba");

Т.е. то как быстро одна буква (которой соответствует параметр яркости) сменяет другую

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 26-03-2020 в 12:24:

Yo Den пиши несколько одинаковых букв подряд. Чем больше букв - тем дольше будет держаться заданная ими яркость. Добавь новый лайтстиль и всего делов. Правда, я не знаю, какое там ограничение на количество символов.


Отправлено Дядя Миша 26-03-2020 в 12:46:

Цитата:
Yo Den писал:
Есть ли возможность смены скорости переключения мерцания у light_spot?

свет анимируется со скоростью 10 FPS. Это еще из кваки пошло, но в кваке абсолютно всё анимировалось с такой скоростью. И итемы вращались 10 фпс и свет мерцал и монстры играли свои анимации и текстурки на брашах.

Нет, это нельзя поменять. Замедлить можно, ускорить нет.

Добавлено 26-03-2020 в 15:46:

Цитата:
Ku2zoff писал:
Правда, я не знаю, какое там ограничение на количество символов.

64 буквы. И самих лайтстилей 64 штуки.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 26-03-2020 в 17:09:

Цитата:
Дядя Миша писал:
Нет, это нельзя поменять. Замедлить можно, ускорить нет.

да я и хотел замедлить, раз эдак в 10

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 03-04-2020 в 11:13:

Подскажите, как можно сделать тени от студиомоделей шадовмапами. Очень уж неохота тащить весь рендерер из тринити ради теней и спотлайтов с текстурой. Читал код тринити, как я понял, проекция модели рендерится в текстуру. Затем поверх мира, грубо говоря, рисуется текстура спотлайта, которая ярче исходной, а поверх неё уже тень. Пробовал избавиться от текстуры спотлайта - пропадает и сама тень. Хочется нечто вроде теней из hlfx 0.5b, когда видимого света нет, есть только тень. Статей по реализации немало, есть и готовый код в тринити и ксашмоде. Но не имея опыта, разобраться трудно. Напишите, пож, что нужно сделать пошагово и куда глядеть. Нужно ли рендерить мир кастомным способом, или же тень вполне наложится на то, что уже нарисованно движком.

Добавлено 03-04-2020 в 18:13:

В крайнем случае, можно тени и шадоввольюмами, но они по-моему тормознее и не заработают в стим-версии халфы от слова совсем. Если раньше можно было подсунуть хакнутую opengl32.dll и заставить работать стенсил-буффер, то теперь, во-первых, Вальва встроила в движок функцию, которая удаляет opengl32.dll из корня халфы при запуске. А во-вторых, если исхитриться, и не дать удалить, в консоли всё равно будет no stencilbits. Хоть на FBO, хоть на обычном рендерере. Так что первая Паранойя никак не работает корректно. Соответственно, бузеровские тени завести тоже не получится. Ну, и хак с плющмоделями тоже не работает. Или функцию вырезали из движка, и изменилось смещение в памяти, которое нужно было делать, чтобы хак заработал.


Отправлено Дядя Миша 03-04-2020 в 11:38:

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

Цитата:
Ku2zoff писал:
Нужно ли рендерить мир кастомным способом, или же тень вполне наложится на то, что уже нарисованно движком.

смотря от чего ты хочешь тени. От чего хочешь - то и надо рисовать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-04-2020 в 11:55:

Цитата:
Дядя Миша писал:
смотря от чего ты хочешь тени. От чего хочешь - то и надо рисовать.

Так-то можно и тени от брашей добавить. Но, по-моему, это лишнее. Вполне хватит варианта как на первых версиях сорса: одна тень от модели, которая всегда смотрит в одну сторону.
Мне бы примерчик конкретно для халфы, хотя бы приблизительно. Чтоб знать в каких местах кода какие операции проводить. Остальное можно в открытых сорцах найти.

Добавлено 03-04-2020 в 18:55:

Либо есть другой вариант: таки дёрнуть рендерер из тринити целиком, а потом выкинуть из него ненужное. Но там есть одна проблемка: никак не регулируются яркость и гамма. В паранойе есть отдельные квары для кастомного рендерера, а в тринити нет. Я пробовал завести, но получается фигня. Лайтмапы неправильно меняют яркость, появляются артефакты. Видимо, нужна не такая формула, как в паранойе.


Отправлено Дядя Миша 03-04-2020 в 12:32:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-04-2020 в 12:38:

Да вот довольно трудно разобраться. Слишком много всего нагорожено. Чего только стоят какие-то клиентские статик-энтити. Или что-то в этом роде. Чтобы их оттуда выковырять, уйдёт несколько дней. Плюс, именно эти энтити используются в тринити в качестве "небесных". Рендерятся в отдельном проходе сразу после неба только они и ничего больше. Зато, это избавляет от хака с буффером глубины, и не нужно тащить хакнутую opengl32.dll для неба, как в Паранойе.
Справедливости ради, стоит заметить, что разобраться всё-таки можно, если исследовать код поэтапно, а не тупо копипастить. Например, мне удалось немножко причесать код мониторов из старого ксашмода 0.39, и избавить его от линковки CvaLib. Но я шибко не тестировал, по-любому там есть косячки.


Отправлено Дядя Миша 03-04-2020 в 13:41:

Цитата:
Ku2zoff писал:
именно эти энтити используются в тринити в качестве "небесных".

Небесным может быть только Котэ!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 03-04-2020 в 14:06:

алгоритм сорсовских теней - отрендерить черную модель в текстуру, размыть текстуру, наложить её на мир наподобие декали?


Отправлено Дядя Миша 03-04-2020 в 14:14:

Помоему там Poisson Disk обычный.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SNMetamorph 03-04-2020 в 15:54:

Может кто нибудь обьяснить как работает алгоритм пересечения луча и AABB? Рою интернет, уже довольно много информации нашёл, но вообще не могу разобраться.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено ncuxonaT 03-04-2020 в 17:46:

SNMetamorph вот тут достаточно толково описан алгоритм
https://www.scratchapixel.com/lesso...ox-intersection

Добавлено 03-04-2020 в 20:46:

Мне неоднократно попадалась информация, что видеокарта рисует пиксели не по одному, а блоком. И к следующему блоку не приступает, пока не закончит предыдущий. Время отрисовки блока определяется самым медленным его пикселем. То есть если отбрасывать часть пикселей из блока дискардом, на производительность это повлияет слабо.

Я решил проверить это и заодно узнать размер блока. Рендерил один и тот же кадр, отбрасывая часть пикселей либо в шахматном порядке, либо линиями (см. иллюстрации). Замерял фпс для разных размеров шашечек/линий. Во всех случаях количество отрисованных пикселей одинаковое.

С интерпретацией результатов возникли проблемы. Кто-нибудь может объяснить, почему такая разница в фпс между шашками и линиями при размере в 16 пикселей? Правильно ли я понимаю, что размер блока можно считать равным 32х32? На других видеокартах всё может быть иначе?

https://i.imgur.com/R8LssVO.jpg
https://i.imgur.com/Rve8ukS.jpg
https://i.imgur.com/G5CGj4f.jpg


Отправлено Дядя Миша 03-04-2020 в 18:18:

Смысл забивать голову? Он работает, этого достаточно.

Добавлено 03-04-2020 в 21:18:

Цитата:
ncuxonaT писал:
видеокарта рисует пиксели не по одному, а блоком. И к следующему блоку не приступает, пока не закончит предыдущий

Очевидно растеризуемое пространство делится на квадратики и каждому конвейеру достаётся свой квадратик. Чтобы каждый конвейер рисовал свой пиксель - о таком я не слышал, судя по всему это провоцирует промахи кэша и замедлит работу. К примеру texture2D сразу четыре пикселя за раз читает.
Цитата:
ncuxonaT писал:
Время отрисовки блока определяется самым медленным его пикселем.

ну очевидно все конвейеры должны завершить свою работу.

Цитата:
ncuxonaT писал:
Рендерил один и тот же кадр, отбрасывая часть пикселей либо в шахматном порядке, либо линиями (см. иллюстрации).

шо-то ты не то тестировал.

Можно попробовать вот такой фокус (в реальных приложениях так делать нелья, но для теста вполне) - читать и писать в одну и ту же FBO текстуру.
Например сделать стекло. Она у тебя замерцает квадратами и ты сможешь увидеть размер блока.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 03-04-2020 в 21:32:

Цитата:
Дядя Миша писал:
шо-то ты не то тестировал.

Ну я надеялся попасть в размер блока, чтобы часть блоков отбрасывалась целиком. И на этом моменте наблюдался бы скачок фпс. Собственно, он и наблюдается, только почему-то разный результат для линий и шашек.

Цитата:
Дядя Миша писал:
Можно попробовать вот такой фокус (в реальных приложениях так делать нелья, но для теста вполне) - читать и писать в одну и ту же FBO текстуру.
Например сделать стекло. Она у тебя замерцает квадратами и ты сможешь увидеть размер блока.

Попробовал. Как ни странно, нет никаких артефактов, ничего не мерцает даже на 10 стеклах подряд.
https://i.imgur.com/4whwg2l.jpg


Отправлено SNMetamorph 04-04-2020 в 01:05:

Цитата:
ncuxonaT писал:
Ну я надеялся попасть в размер блока, чтобы часть блоков отбрасывалась целиком. И на этом моменте наблюдался бы скачок фпс. Собственно, он и наблюдается, только почему-то разный результат для линий и шашек.


Попробовал. Как ни странно, нет никаких артефактов, ничего не мерцает даже на 10 стеклах подряд.
https://i.imgur.com/4whwg2l.jpg

Попробуй поиграть с FPS и всинх отключить, может быть это как-то влияет

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 04-04-2020 в 07:19:

Цитата:
ncuxonaT писал:
Попробовал.

MRT надо. и glReadBuffer( GL_NONE );

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Lev 04-04-2020 в 15:58:

Вопрос к знающим: как можно оптимизировать террейн, сделанный в Terrain Generator? Дело в том, что мне нужно сделать довольно большой уровень с открытой местностью, террейн этот вопрос решает неплохо(учитывая, что делаю я в Paranoia 2 v1.51 и вопрос с его окраской буду решать с помощью слоёв в рендере). Но полигонов очень много - и, что самое неудобное, после экспорта в Джек Хамер я не могу нормально нанести Null-текстуру на невидимые грани(там все полигоны как отдельные маленькие браши) - в ручную это почти невозможно, их слишком много. Может их можно как-то объединить уже в Джек Хамере?


Отправлено Дядя Миша 04-04-2020 в 17:30:

Этих программок - две штуки. И вот одна из них сама красит нуллом бока. Открываешь уровень в блокноте и автозаменой меняешь NULL на SOLIDHINT.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 04-04-2020 в 18:22:

Цитата:
SNMetamorph писал:
Попробуй поиграть с FPS и всинх отключить, может быть это как-то влияет

Всинк выключен, фпс варьируется от 400 на одном стекле, до 100 на десяти, но ничего не меняется.
Цитата:
Дядя Миша писал:
MRT надо. и glReadBuffer( GL_NONE );

glReadBuffer( GL_NONE ) никак не влияет
Зачем МРТ? Рендер во фреймбуффер, к нему привязана текстура, эту же текстуру стекло использует.

Добавлено 04-04-2020 в 21:22:

Получилось, короче. Оказывается, можно без последствий читать из текстуры, в которую пишешь, если пишешь в тот же пиксель, что читаешь. Инвертировал у стекла текстурную координату по х, и вот они артефакты. Что интересно, рендерится, судя по всему, блоками в шахматном порядке, последовательно разбивая их от 32х32 до 4х4
https://i.imgur.com/JCzQDbI.jpg


Отправлено Дядя Миша 04-04-2020 в 18:57:

Цитата:
ncuxonaT писал:
Оказывается, можно без последствий читать из текстуры, в которую пишешь, если пишешь в тот же пиксель, что читаешь.

В свой - да, я думал ты догадаешься заглянуть в соседей.

Добавлено 04-04-2020 в 21:57:

Цитата:
ncuxonaT писал:
блоками в шахматном порядке, последовательно разбивая их от 32х32 до 4х4

ну я бы не стал по нештатной ситуации делать далекоидущие выводы. Это просто как наглядный пример.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 05-04-2020 в 08:37:

Цитата:
Lev писал:
Вопрос к знающим: как можно оптимизировать террейн, сделанный в Terrain Generator? Дело в том, что мне нужно сделать довольно большой уровень с открытой местностью, террейн этот вопрос решает неплохо(учитывая, что делаю я в Paranoia 2 v1.51 и вопрос с его окраской буду решать с помощью слоёв в рендере). Но полигонов очень много - и, что самое неудобное, после экспорта в Джек Хамер я не могу нормально нанести Null-текстуру на невидимые грани(там все полигоны как отдельные маленькие браши) - в ручную это почти невозможно, их слишком много. Может их можно как-то объединить уже в Джек Хамере?

могу лишь посоветовать попробовать как альтернативу - GenSurf, с ним проблем не возникало

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Lev 05-04-2020 в 09:51:

Yo Den А он понимает карты высот? Я ведь сначала в geocontrol 2 делаю - и сохраняю в хейтмапу.


Отправлено JPEG 05-04-2020 в 09:54:

Цитата:
Lev писал:
Yo Den А он понимает карты высот? Я ведь сначала в geocontrol 2 делаю - и сохраняю в хейтмапу.

да, понимает. Пример работы https://csm.dev/threads/skrinshoty-...126#post-965744

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Lev 05-04-2020 в 10:52:

Цитата:
Дядя Миша писал:
Этих программок - две штуки. И вот одна из них сама красит нуллом бока. Открываешь уровень в блокноте и автозаменой меняешь NULL на SOLIDHINT.


Ты о каком формате говоришь? MAP или RMF? Чёт не пойму я, где там опция по отсечению граней.


Отправлено Дядя Миша 05-04-2020 в 15:52:

Про map конечно жы. Ну это так, может быть в самом генсурфе есть выбор чем красить бока этих брашей, я не помню.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 05-04-2020 в 17:10:

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

да в принципе блокнот то и не нужен, в hammer же есть автозамена текстур

Добавлено 05-04-2020 в 20:10:

только по идее лишние полигоны же итак затрутся при соприкосновении брашей, при любой текстуре, разве нет?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 05-04-2020 в 20:03:

Цитата:
Yo Den писал:
только по идее лишние полигоны же итак затрутся при соприкосновении брашей, при любой текстуре, разве нет?

перед тем как затереться, компилятор для себя сделает выводы. В этом и смысл.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 08-04-2020 в 14:25:

http://sauerbraten.org/lee/lpv.zip
Вот демка LPV, которую ДМ скинул. Кто-нибудь может объяснить нубу, как её собрать?


Отправлено Дядя Миша 08-04-2020 в 15:24:

Я сорцы не собираю года с 2009-го наверное. Мне их достаточно посмотреть. Сорцы собирать - это же баловоство, чужие сорцы собирают те, кто не постигли дзен.

Добавлено 08-04-2020 в 18:24:

А для тех кто дзен еще не постиг - вон там makefile лежит. Правда не виндовый, но пусть будет уж хоть какой-небуть.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 08-04-2020 в 15:59:

Цитата:
Дядя Миша писал:
А для тех кто дзен еще не постиг - вон там makefile лежит. Правда не виндовый, но пусть будет уж хоть какой-небуть.

Сложна! Мне б пошаговую инструкцию, что установить и где нажать. Если что, у меня есть последняя студия, которая Community Edition


Отправлено FreeSlave 15-04-2020 в 12:12:



Вот такой интересный баг словил. Две энтити, находящиеся в другом помещении, видны сквозь скайбокс. С чем это связано и как править?

__________________
I'm on github
I'm on opendesktop.org


Отправлено thambs 15-04-2020 в 12:16:

Дай кусок карты где проявляется, алсо, энтити с оригином?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено FreeSlave 15-04-2020 в 12:36:

thambs, я пытался отдельный кусок вытащить, на котором это бы проявлялось, но там баг не проявляется. Да и не было его раньше на той же карте, когда и скайбокс и комната уже были готовы. Начал проявляться с какого-то момента. Разве что в личку всю карту кину, как доверенному лицу
Нижняя энтитя, кстати, - func_water, причем с дырой посередине (как видно на скрине). Может, тот факт, что вода не сплошная, как-то играет роль.
Энтити без оригинов.

__________________
I'm on github
I'm on opendesktop.org


Отправлено thambs 15-04-2020 в 12:38:

FreeSlave
Кидай в личку, гляну. Алсо, попробуй оригины добавить им.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Crystallize 15-04-2020 в 13:31:

У меня в ксашмоде такое постоянно было, но потом ДМ кажется говорил что пофиксил это...


Отправлено Дядя Миша 15-04-2020 в 14:45:

Так в халфе же небо не является преградой для Z-буффера, вот и просвечивает. Оно же просто color buffer заливает цветом неба с отключенным depthwrite. Вопрос порядка отрисовки на самом деле.
Если бы сперва небо заливало весь экран, а потом его перезатирала геометрия уровня, то было бы пофиг на включённый depthwrite. Но небо в квейках так не работает по двум причинам. Во первых потому что весь экран заливать цветом неба в те далёкие времена было дико дорого в плане производительности, особенно если учесть, что в финальном кадре может не остаться вообще ни одного небесного пикселя. А во вторых - кубемапы тогда еще не изобрели, поэтому вот этот код неба в старых кваках занимается по сути бессмысленной работой на сегодняшний день, эту эболу можно смело выбросить. Собсно, Кармак это сделал еще в третьем дууме.
Ну так вот, оно там вычисляет скиссор пространства, который не занят полигонами уровня. А сделать это, оно очевидно может только после того, как отрисованы все полигоны видимые игроку. Ну или в два прохода, сначала перебираем полики для неба, потом рисуем небо, потом поверх геометрию. Но это опять же не слишком оптимально в плане производительности. Поэтому небо всегда рисуется с отключённой записью в буффер и никогда не перезатирает пиксели геометрии. Ну и соответственно, если что-то там было в другой комнате - оно его тоже не перезатирает, вот и просвечивает. Единственный способ в халфе (да и в ксаше тоже), избавиться от этого эффекта - полностью отвизить карту.
Тогда виз отсечёт соседнюю комнату и там ничего не будет рисоваться.

Ну как-то так.

Добавлено 15-04-2020 в 17:45:

А, забыл сказать. В NT этой проблемы нет, поскольку там небесные полигоны рассматриваются как самые обычные. Только в полигоне рисуется кубемапа неба, вместо натянутой текстуры. Это даже эффективнее старого подхода, не надо ничего вычислять, клампить и так далее. Рисуется строго небесный полигон. Новый движок про небо вообще ничего не знает, для него это такие же полигоны, как и остальные.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 15-04-2020 в 15:11:

Цитата:
Дядя Миша писал:
избавиться от этого эффекта - полностью отвизить карту.
Тогда виз отсечёт соседнюю комнату и там ничего не будет рисоваться.


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

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 15-04-2020 в 15:53:

Ну значит меняй геометрию так, чтобы отсекалось. Других способов нет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 15-04-2020 в 17:28:

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


Отправлено Дядя Миша 15-04-2020 в 17:35:

Ну значит виз это не смог отсечь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 15-04-2020 в 17:45:

А как это сделано в анриле первом? Там такой болячки нет.


Отправлено Дядя Миша 15-04-2020 в 18:09:

Уже простыню накатал, распедалил что это, почему появляется и как возникло. Но нет - всё равно никто не читает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено thambs 15-04-2020 в 21:28:

FreeSlave
Поставил им оригины и скомпилил p2st с обычным (не фаст) визом -- отсекает их:

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено FreeSlave 15-04-2020 в 21:53:

thambs, что ж ты скриншоты уровня в открытую выкладываешь
Скинул бы в личку, где ты там оригины расставил. Я пробовал добавлять оригины - не помогло, а func_water так и вовсе пропал.

__________________
I'm on github
I'm on opendesktop.org


Отправлено thambs 15-04-2020 в 22:32:

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

Добавлено 16-04-2020 в 01:23:

Так, а теперь и в ксаше пропала.

Добавлено 16-04-2020 в 01:32:

Ага, полностью переделал воду теперь норм -- проверил на стоковом hl-caged (там вроде обычный хл внутре), щас скину в личку.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Crystallize 17-04-2020 в 12:35:

http://quark.sourceforge.net/forums...hp?topic=1196.0

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


Отправлено илья2 18-04-2020 в 20:11:

здравствуйте хотел создать верёвку из исходников opposing force
но естественно не получилось выдает веселые ошибки

ropes.cpp
error C2374: 'uiIndex' : redefinition; multiple initialization
see declaration of 'uiIndex'

error C2374: 'uiIndex' : redefinition; multiple initialization
see declaration of 'uiIndex'

error C2374: 'uiIndex' : redefinition; multiple initialization
see declaration of 'uiIndex'

error C2374: 'uiIndex' : redefinition; multiple initialization
see declaration of 'uiIndex'

error C2065: 'PFLAG_ONROPE' : undeclared identifier

error C2039: 'SetOnRopeState' : is not a member of 'CBasePlayer'

see declaration of 'CBasePlayer'

error C2039: 'SetRope' : is not a member of 'CBasePlayer'

see declaration of 'CBasePlayer'

Как их исправить ?


Добавлено 18-04-2020 в 23:11:

вот эти ошибки я исправил они простенькие

error C2065: 'PFLAG_ONROPE' : undeclared identifier

error C2039: 'SetOnRopeState' : is not a member of 'CBasePlayer'

see declaration of 'CBasePlayer'

error C2039: 'SetRope' : is not a member of 'CBasePlayer'

see declaration of 'CBasePlayer'

А вот как эти ошибки исправить ?. вот это сложные ошибки для меня

ropes.cpp
error C2374: 'uiIndex' : redefinition; multiple initialization
see declaration of 'uiIndex'

error C2374: 'uiIndex' : redefinition; multiple initialization
see declaration of 'uiIndex'

error C2374: 'uiIndex' : redefinition; multiple initialization
see declaration of 'uiIndex'

error C2374: 'uiIndex' : redefinition; multiple initialization
see declaration of 'uiIndex'

__________________
илья


Отправлено Crystallize 18-04-2020 в 20:45:

илья2 redefinition это когда одна и та же переменная объявляется несколько раз подряд по ходу функции, может быть даже каждый раз как переменная нового типа. В общем, такого быть не должно.

Добавлено 19-04-2020 в 03:45:

Not a member of значит что в табличке CBasePlayer нет такой переменной или чего-то другого с таким именем.


Отправлено илья2 18-04-2020 в 20:53:

эм да я уже сделал веревки

можете не отвечать уже

__________________
илья


Отправлено Ku2zoff 22-04-2020 в 17:59:

Я тут мало-мало починил код спрайтовых декалей из Ивазиона. Всё то, что французы не заюзали или не дописали. Теперь декали нормально лепятся на движущиеся энтити, двигаются с ними и поворачиваются. Сохранение и загрузку я для них давно сделал. Теперь осталось сделать хождение через чейнджлевел и можно писать очередной тутор, надеюсь, что кому-нибудь будет интересно. Это не просто декали высокого разрешения без кастомного рендерера, но ещё и анимированные декали. Лужи крови, жидкости, анимации на стенах длиннее 10-ти кадров и т.д. Ну вы понели.


Отправлено Дядя Миша 22-04-2020 в 21:00:

Ku2zoff ты самого главного не сделал - клиппинга. Если декаль нанести на край стены, то она будет висеть в воздухе.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 22-04-2020 в 21:54:

В процессе работы над рейтрейсером встал вопрос о хранении материалов, чтобы иметь к ним доступ из шейдера. Проблема в том, что свойства материала могут быть заданы как числами, так и текстурой. Ну то есть тот же диффузный цвет может быть задан как 3 числами, так и диффузной текстурой.
Я хочу все вот такие текстуры запихнуть в атлас, а в другой текстуре хранить параметры материалов и ссылки на текстуры в атласе.

Дайте совет, как лучше сделать в шейдере выбор того, что нужно использовать при чтении материала - численный параметр или текстуру.
Завернуть всё в if else, например, если ссылка на атлас отрицательная, то брать число, а если положительная, то читать текстуру из атласа?
Или сделать из всех численных параметров маленькие текстуры, засунуть их в атлас к остальным и всегда брать данные оттуда?


Отправлено FreeSlave 23-04-2020 в 03:44:

Вопрос по тчинкам в HL.
Если в env_shooter выставить Gib Life в 0, то заспавненные гибсы не исчезают. Поставил алерты - оказывается, что WaitTillLand вызывается и таки меняет Think на SUB_StartFadeOut, но к исчезновению гибса это не приводит. Связано ли это с тем, что в WaitTillLand pev->nextthink остается равен глобальному времени (т.к. m_lifeTime = 0)? Речь об этом куске кода: https://github.com/ValveSoftware/ha...combat.cpp#L691

Upd: забудьте, я дурачок, не заметил, что m_flGibLife у env_shooter выставляется в 25 в Spawn, если он равен 0.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 23-04-2020 в 06:27:

ncuxonaT дак ты при старте приложения все эти числа запишы в одну текстуру и ссылайся на нее.

Цитата:
FreeSlave писал:
в WaitTillLand pev->nextthink остается равен глобальному времени

в тчинках никогда не бывает глобального времени, только игровое.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 23-04-2020 в 12:17:

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


Отправлено Дядя Миша 23-04-2020 в 12:30:

Да сама система эта порочная числа-текстуры. Отсюда и всё дерьмо.
Я бы сделал через убер-шейдеры с #ifdef к примеру.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 23-04-2020 в 12:34:

Дядя Миша понимаю, что порочная, но не вижу альтернативы. #ifdef не подходит, луч может попасть в любой материал, нужно иметь доступ ко всем сразу


Отправлено Дядя Миша 23-04-2020 в 12:58:

Так что ты надеешься услышать? Без условия очевидно не обойтись.
Ну хочешь - нагенерь мини-текстур в один цвет, засунь их на место диффузок, сравни как быстрее. Проиндексируй эти цвета, чёб не дублировать эти 16-пиксельные текстуры с одинаковым цветом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 23-04-2020 в 13:15:

Дядя Миша надеялся услышать что-то типа "эээ, не делай через условия, это убьет перформанс, делай через минитекстуры, это будет быстро и универсально". Ну или наоборот


Отправлено Ku2zoff 23-04-2020 в 13:52:

Цитата:
Дядя Миша писал:
Если декаль нанести на край стены, то она будет висеть в воздухе.

Ну это можно каким-нибудь образом поправить. Например, не накладывать декаль на край, а сдвигать её подальше, чтобы она полностью была на стене. Не очень изящно, зато не будет резать глаза. Кстати, вчера научил декали ходить через чейнджлевел. Сейв/рестор им я давно уже сделал, писал выше. В общем, осталось красиво причесать код, и он будет вполне юзабелен.
Не будет лениво - сделаю апдейт для самого Инвазиона, с фиксом декалей и мп3 плеера. Надо хоть когда-нибудь выложить свою работу на моддб. Заодно будет масштабная тестовая площадка. Инвазион - немаленький мод.


Отправлено Дядя Миша 23-04-2020 в 14:57:

Цитата:
ncuxonaT писал:
надеялся услышать что-то типа

мини-текстурки тормозить точно не будут. А убьют ли условия перфоманс зависит от поколения железа. Да и условия-то разные бывают. Я код не видел, почём я знаю.

Цитата:
Ku2zoff писал:
Ну это можно каким-нибудь образом поправить

ну так известно каким - обрезать полигон декали по краю. Для этого не нужны какие-то хитрые функции из движка. Ты же всё равно их через три апи рисуешь - этого вполне достаточно. А обрезалка - это виндинг.
Ну посмотри как в параное сделано чтоли.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 26-04-2020 в 16:32:

Есть ли способ определить на сервере, стоит игра на паузе или нет? На клиенте есть ref_params_s->paused. На сервере в глобалсах ничего подобного нет. Пока что мне не пришло в голову ничего умнее, чем нагородить дурацкий огород:

C++ Source Code:
1
DLL_GLOBAL ULONG		g_ulPostFrameCount;
2
 
3
void PlayerPreThink( edict_t *pEntity )
4
{
5
  entvars_t *pev = &pEntity->v;
6
  CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
7
 
8
  if (pPlayer)
9
    pPlayer->PreThink( );
10
 
11
  if (g_ulPostFrameCount > g_ulFrameCount) // StartFrame не вызывается, g_ulFrameCount не растёт, игра на паузе
12
    ALERT(at_console, "Paused\n");
13
}
14
 
15
void PlayerPostThink( edict_t *pEntity )
16
{
17
  entvars_t *pev = &pEntity->v;
18
  CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
19
 
20
  if (pPlayer)
21
    pPlayer->PostThink( );
22
 
23
  g_ulPostFrameCount++;
24
}
25
 
26
void StartFrame( void )
27
{
28
  if ( g_pGameRules )
29
    g_pGameRules->Think();
30
 
31
  if ( g_fGameOver )
32
    return;
33
 
34
  gpGlobals->teamplay = teamplay.value;
35
  g_ulFrameCount++;
36
 
37
  g_ulPostFrameCount = g_ulFrameCount;
38
}


Добавлено 26-04-2020 в 23:32:

Вот, немного дописал. Пауза детектится через две секунды, чтобы не было случайных срабатываний из-за рассинхрона. Учитывает игровой фпс, кстати.
C++ Source Code:
float flSecond = 0.96 / gpGlobals->frametime;
 
if (g_ulPostFrameCount > g_ulFrameCount + int(flSecond * 2.0))
  ALERT(at_console, "Paused\n");


Отправлено Дядя Миша 26-04-2020 в 18:13:

gpGlobals->frametime == 0.0

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 26-04-2020 в 18:16:

Дядя Миша неа. Не работает, я пробовал. Даже на паузе фреймтайм равен 0.016xxxx при 60 фпс. Может быть это потому что стим версия?


Отправлено Дядя Миша 26-04-2020 в 18:37:

А не, в халфе на сервере фреймтайм по идее будет всегда валидным.
Ну тогда чуть сложнее

C++ Source Code:
1
static float oldtime;
2
if( gpGlobals->time == oldtime )
3
{
4
  // paused
5
}
6
oldtime = gpGlobals->time;


Добавлено 26-04-2020 в 21:37:

Проверять в CmdStart

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 26-04-2020 в 18:37:

Спасибо за подсказку. Теперь серверный фмод в инвазионе имеет паузу:

C++ Source Code:
1
#include "music.h"
2
 
3
float oldtime;
4
 
5
void PlayerPostThink( edict_t *pEntity )
6
{
7
  entvars_t *pev = &pEntity->v;
8
  CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
9
 
10
  if (pPlayer)
11
    pPlayer->PostThink( );
12
 
13
  g_MusicPlayer.SetVolume();
14
 
15
  if (gpGlobals->time == oldtime)
16
    g_MusicPlayer.Pause(TRUE);
17
 
18
  oldtime = gpGlobals->time;
19
}
20
 
21
void StartFrame( void )
22
{
23
  if ( g_pGameRules )
24
    g_pGameRules->Think();
25
 
26
  if ( g_fGameOver )
27
    return;
28
 
29
  gpGlobals->teamplay = CVAR_GET_FLOAT("teamplay");
30
  g_iSkillLevel = CVAR_GET_FLOAT("skill");
31
  g_ulFrameCount++;
32
 
33
  if (gpGlobals->time != oldtime)
34
    g_MusicPlayer.Pause(FALSE);
35
}

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


Отправлено Дядя Миша 26-04-2020 в 20:34:

Ku2zoff эх, ты бы лутьше декалям клиппинг сделал

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 27-04-2020 в 06:54:

Дядя Миша ну дык собираюсь. Уже неплохо оптимизировал саму структуру spritedecal_s, чтобы как можно меньше параметров писать в клиентский сейв, вынул функции работы с декалями из gHUD.m_Particules в отдельный класс CDecalManager, избавился от нагромождения iIndex, iIndexNew, oldindex и кучи лишних циклов, перебирающих несколько раз декали по этим индексам... По сути, уже всё довольно неплохо: сохраняются, загружаются, переходят через уровни. Осталось сделать статик-декали, которые накладывает маппер. Ну и обрезку на краях брашей.

Добавлено 27-04-2020 в 13:54:

Правда, насчёт статик-декалей не всё так однозначно. Для них надо ещё как-то нарисовать спрайты.


Отправлено Дядя Миша 27-04-2020 в 08:51:

Кстати говоря, то что фмод делает паузу с лагом в полсекунды, обусловлено размером его выходного буффера, хотя это и не совсем корректно.
Ну вообщем посмотри, там где-то этот буффер будет задан как 500-600 милисекунд. Меньше ста ставить не рекомендую.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 27-04-2020 в 14:43:

Цитата:
Дядя Миша писал:
там где-то этот буффер будет задан как 500-600 милисекунд. Меньше ста ставить не рекомендую.

C++ Source Code:
pFMOD->FSOUND_SetBufferSize(100);

Ориентировался на спирит 1.9. Тут 100 мс, как видно. Всё равно лаг есть. Конечно, я не тестировал это дело под WON-версией халфы. МБ там быстрее срабатывает, ХЗ. А теперь вопросик к линуксоидам:
C++ Source Code:
pFMOD->FSOUND_SetOutput(FSOUND_OUTPUT_ALSA);

Альса будет выводить звук в любом случае? Стим требует установку OSS. И, судя по моим наблюдениям, стим-халфа под линуксом выводит свой звук именно через OSS. Откуда ещё появился бы даунсемплинг? Пока не исправишь conf-файл OSS на свежеустановленном дебиане, звуки в стим халфе как через подушку, приглушённые.


Отправлено Дядя Миша 27-04-2020 в 15:03:

Я этот фмод давно уже дропнул и не жалею.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 27-04-2020 в 17:55:

Безопасно ли удалять энтитю, которая получает DeathNotice'ы? Например, monstermaker. Возможна ли ситуация, что DeathNotice получит энтитя, созданная позже и занявшая тот же эдикт?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 27-04-2020 в 19:45:

FreeSlave вот для того и существует EHANDLE. Чтобы гарантировать, что это та самая энтитя, а не какая-то другая в том же слоте.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 27-04-2020 в 22:21:

Так-то да. Просто смутило, что в коде именно owner юзается. Хотя вряд ли монстрмэйкеры кто-то удаляет. Да и помимо них DeathNotice разве что Big Momma использует.

__________________
I'm on github
I'm on opendesktop.org


Отправлено BALISTA 28-04-2020 в 19:59:

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


Отправлено Ku2zoff 29-04-2020 в 05:35:

C++ Source Code:
SetThink( &CCrowbar::Smack );
pev->nextthink = UTIL_WeaponTimeBase() + 0.2;

UTIL_WeaponTimeBase ты поправил? При удалении клиентских пушек это нужно обязательно делать. Потому что оно всегда возвращает 0.0 для клиентских пушек и gpGlobals->time для серверных.


Отправлено BALISTA 29-04-2020 в 11:54:

Цитата:
Ku2zoff писал:
UTIL_WeaponTimeBase ты поправил?

В каком смысле? Немного не понял.
Я думаю нагляднее будет предоставить код
C++ Source Code:
1
/****
2
*
3
*	Copyright &copy; 1996-2002, Valve LLC. All rights reserved.
4
*
5
*	This product contains software technology licensed from Id
6
*	Software, Inc. ("Id Technology"). Id Technology &copy; 1996 Id Software, Inc.
7
*	All Rights Reserved.
8
*
9
*   Use, distribution, and modification of this source code and/or resulting
10
*   object code is restricted to non-commercial enhancements to products from
11
*   Valve LLC. All other use, distribution, or modification is prohibited
12
*   without written permission from Valve LLC.
13
*
14
****/
15
 
16
#include "extdll.h"
17
#include "util.h"
18
#include "cbase.h"
19
#include "monsters.h"
20
#include "weapons.h"
21
#include "nodes.h"
22
#include "player.h"
23
#include "gamerules.h"
24
 
25
#define	CROWBAR_BODYHIT_VOLUME 128
26
#define	CROWBAR_WALLHIT_VOLUME 512
27
 
28
class CCrowbar : public CBasePlayerWeapon
29
{
30
public:
31
  void Spawn();
32
  void Precache();
33
  int  GetItemInfo(ItemInfo *p);
34
  void EXPORT Smack();
35
  void PrimaryAttack();
36
  void SecondaryAttack();
37
  BOOL Deploy();
38
  void Holster();
39
  void WeaponIdle();
40
  int  m_iSwing;
41
  TraceResult m_trHit;
42
};
43
 
44
LINK_ENTITY_TO_CLASS(weapon_crowbar, CCrowbar);
45
 
46
enum crowbar_e
47
{
48
  CROWBAR_IDLE1 = 0,
49
  CROWBAR_IDLE2,
50
  CROWBAR_IDLE3,
51
  CROWBAR_DRAW,
52
  CROWBAR_HOLSTER,
53
  CROWBAR_MISS1,
54
  CROWBAR_HIT1,
55
  CROWBAR_MISS2,
56
  CROWBAR_HIT2,
57
  CROWBAR_MISS3,
58
  CROWBAR_HIT3
59
};
60
 
61
void CCrowbar::Spawn()
62
{
63
  Precache();
64
  m_iId = WEAPON_CROWBAR;
65
  SET_MODEL(ENT(pev), "models/w_crowbar.mdl");
66
  m_iClip = -1;
67
 
68
  FallInit(); // Get ready to fall down.
69
}
70
 
71
void CCrowbar::Precache()
72
{
73
  PRECACHE_MODEL("models/v_crowbar.mdl");
74
  PRECACHE_MODEL("models/w_crowbar.mdl");
75
  PRECACHE_MODEL("models/p_crowbar.mdl");
76
 
77
  PRECACHE_SOUND("weapons/cbar_hit1.wav");
78
  PRECACHE_SOUND("weapons/cbar_hit2.wav");
79
  PRECACHE_SOUND("weapons/cbar_hitbod1.wav");
80
  PRECACHE_SOUND("weapons/cbar_hitbod2.wav");
81
  PRECACHE_SOUND("weapons/cbar_hitbod3.wav");
82
  PRECACHE_SOUND("weapons/cbar_miss1.wav");
83
}
84
 
85
int CCrowbar::GetItemInfo(ItemInfo *p)
86
{
87
  p->pszName	 = STRING(pev->classname);
88
  p->pszAmmo1	 = NULL;
89
  p->iMaxAmmo1 = -1;
90
  p->pszAmmo2	 = NULL;
91
  p->iMaxAmmo2 = -1;
92
  p->iMaxClip	 = CROWBAR_MAX_CLIP;
93
  p->iSlot	 = 0;
94
  p->iPosition = 0;
95
  p->iId		 = WEAPON_CROWBAR;
96
  p->iWeight	 = CROWBAR_WEIGHT;
97
  return 1;
98
}
99
 
100
BOOL CCrowbar::Deploy()
101
{
102
  return DefaultDeploy("models/v_crowbar.mdl", "models/p_crowbar.mdl", CROWBAR_DRAW, "crowbar");
103
}
104
 
105
void CCrowbar::Holster()
106
{
107
  m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
108
  SendWeaponAnim(CROWBAR_HOLSTER);
109
}
110
 
111
void CCrowbar::Smack()
112
{
113
  DecalGunshot(&m_trHit, BULLET_PLAYER_CROWBAR);
114
}
115
 
116
void CCrowbar::PrimaryAttack()
117
{
118
  TraceResult tr;
119
 
120
  UTIL_MakeVectors(m_pPlayer->pev->v_angle);
121
  Vector vecSrc = m_pPlayer->GetGunPosition();
122
  Vector vecEnd = vecSrc + gpGlobals->v_forward * 32;
123
 
124
  UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, ENT(m_pPlayer->pev), &tr);
125
 
126
  // Player "shoot" animation.
127
  m_pPlayer->SetAnimation(PLAYER_ATTACK1);
128
 
129
  // Always play swing sound.
130
  EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/cbar_miss1.wav", 1, ATTN_NORM, 0, 98 + RANDOM_LONG(0,3));
131
 
132
  if (tr.flFraction >= 1.0)
133
  {
134
    UTIL_TraceHull(vecSrc, vecEnd, dont_ignore_monsters, head_hull, ENT(m_pPlayer->pev), &tr);
135
    if (tr.flFraction < 1.0)
136
    {
137
      // Calculate the point of intersection of the line (or hull) and the object we hit.
138
      // This is and approximation of the "best" intersection.
139
      CBaseEntity *pHit = CBaseEntity::Instance(tr.pHit);
140
      if (!pHit || pHit->IsBSPModel())
141
        FindHullIntersection(vecSrc, tr, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, m_pPlayer->edict());
142
      vecEnd = tr.vecEndPos; // This is the point on the actual surface (the hull could have hit space).
143
    }
144
  }
145
 
146
  if (tr.flFraction >= 1.0)
147
  {
148
    // Miss.
149
    switch((m_iSwing++) % 3)
150
    {
151
    case 0:
152
        SendWeaponAnim(CROWBAR_MISS1);
153
      break;
154
    case 1:
155
        SendWeaponAnim(CROWBAR_MISS2);
156
      break;
157
    case 2:
158
        SendWeaponAnim(CROWBAR_MISS3);
159
      break;
160
    }
161
 
162
    m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.5;
163
  }
164
  else
165
  {
166
    // Hit.
167
    switch((m_iSwing++) % 3)
168
    {
169
    case 0:
170
        SendWeaponAnim(CROWBAR_HIT1);
171
      break;
172
    case 1:
173
        SendWeaponAnim(CROWBAR_HIT2);
174
      break;
175
    case 2:
176
        SendWeaponAnim(CROWBAR_HIT3);
177
      break;
178
    }
179
 
180
    CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);
181
 
182
    ClearMultiDamage();
183
 
184
    pEntity->TraceAttack(m_pPlayer->pev, gSkillData.plrDmgCrowbar, gpGlobals->v_forward, &tr, DMG_CLUB | DMG_NEVERGIB);
185
 
186
    ApplyMultiDamage(m_pPlayer->pev, m_pPlayer->pev);
187
 
188
    m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.25;
189
 
190
    // Play thwack, smack, or dong sound.
191
    float flVol = 1.0;
192
    int fHitWorld = TRUE;
193
 
194
    if (pEntity)
195
    {
196
      if (pEntity->Classify() != CLASS_NONE && pEntity->Classify() != CLASS_MACHINE)
197
      {
198
        // Play thwack or smack sound.
199
        switch(RANDOM_LONG(0,2))
200
        {
201
        case 0:
202
            EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod1.wav", 1, ATTN_NORM);
203
          break;
204
        case 1:
205
            EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod2.wav", 1, ATTN_NORM);
206
          break;
207
        case 2:
208
            EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod3.wav", 1, ATTN_NORM);
209
          break;
210
        }
211
        m_pPlayer->m_iWeaponVolume = CROWBAR_BODYHIT_VOLUME;
212
 
213
        if (!pEntity->IsAlive())
214
          m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.25;
215
        else
216
          flVol = 0.1;
217
 
218
        fHitWorld = FALSE;
219
      }
220
    }
221
 
222
    // Play texture hit sound.
223
    // UNDONE: Calculate the correct point of intersection when we hit with the hull instead of the line.
224
    if (fHitWorld)
225
    {
226
      float fvolbar = TEXTURETYPE_PlaySound(&tr, vecSrc, vecSrc + (vecEnd-vecSrc) * 2, BULLET_PLAYER_CROWBAR);
227
 
228
      if (g_pGameRules->IsMultiplayer())
229
      {
230
        // Override the volume here, cause we don't play texture sounds in multiplayer,
231
        // and fvolbar is going to be 0 from the above call.
232
        fvolbar = 1;
233
      }
234
 
235
      // Also play crowbar strike.
236
      switch(RANDOM_LONG(0,1))
237
      {
238
      case 0:
239
          EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hit1.wav", fvolbar, ATTN_NORM, 0, 98 + RANDOM_LONG(0,3));
240
        break;
241
      case 1:
242
          EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hit2.wav", fvolbar, ATTN_NORM, 0, 98 + RANDOM_LONG(0,3));
243
        break;
244
      }
245
 
246
      m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.25;
247
    }
248
    // Delay the decal a bit.
249
    m_trHit = tr;
250
    SetThink(&CCrowbar::Smack);
251
    m_pPlayer->m_iWeaponVolume = flVol * CROWBAR_WALLHIT_VOLUME;
252
  }
253
  m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 10, 15);
254
}
255
 
256
void CCrowbar::SecondaryAttack()
257
{
258
  PrimaryAttack();
259
}
260
 
261
void CCrowbar::WeaponIdle()
262
{
263
  if(m_flTimeWeaponIdle < UTIL_WeaponTimeBase())
264
  {
265
    int iAnim;
266
    float flRand = UTIL_SharedRandomFloat(m_pPlayer->random_seed, 0, 1);
267
    if(flRand > 0.9)
268
    {
269
      iAnim = CROWBAR_IDLE2;
270
      m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 160.0 / 30.0;
271
    }
272
    else
273
    {
274
      if(flRand > 0.5)
275
      {
276
        iAnim = CROWBAR_IDLE1;
277
        m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 70.0 / 25.0;
278
      }
279
      else
280
      {
281
        iAnim = CROWBAR_IDLE3;
282
        m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 160.0 / 30.0;
283
      }
284
    }
285
    SendWeaponAnim(iAnim);
286
  }
287
}


P.S Здесь не хватает куска кода с FindHullIntersection, я перенёс его в weapons.cpp


Отправлено Ku2zoff 29-04-2020 в 13:58:

C++ Source Code:
1
// Delay the decal a bit.
2
m_trHit = tr;
3
SetThink(&CCrowbar::Smack);
4
m_pPlayer->m_iWeaponVolume = flVol * CROWBAR_WALLHIT_VOLUME;
5
}
6
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 10, 15);

Где у тебя pev->nextthink? У тебя вызывается SetThink. А интервал до следующего тчинка не указан. Вот монтировка и тчинкает только один раз. Конечно, код с тчинком сам по себе странный. Не знаю, зачем вэлв написали именно так. Можно ведь просто вызывать рисование декалей из кода атаки.

Добавлено 29-04-2020 в 20:58:

Правильнее будет вот так:
C++ Source Code:
1
}
2
m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.25;
3
}
4
// Delay the decal a bit.
5
m_trHit = tr;
6
DecalGunshot(&m_trHit, BULLET_PLAYER_CROWBAR);
7
m_pPlayer->m_iWeaponVolume = flVol * CROWBAR_WALLHIT_VOLUME;
8
}
9
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 10, 15);
10
}
Выкинь функцию Smack, она не нужна, раз ты от всех других тчинков избавился.


Отправлено Дядя Миша 29-04-2020 в 14:06:

Smack это типа маленькая задержка появления декали, чтобы анимация успела проиграться.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Vadiman 29-04-2020 в 14:36:

Всем привет! Подскажите кто знает, как сделать так, чтобы npc "хуже" слышали топот игрока? Например при приближении приходится не только шифт зажимать, но еще и приседать, дабы подкрасться поближе. А хотелось бы обходиться только шифтом, да и в целом бег игрока сделать тише для врагов.


Отправлено BALISTA 29-04-2020 в 14:51:

Цитата:
Ku2zoff писал:
Конечно, код с тчинком сам по себе странный.

Спасибо за разъяснения, теперь больше понимаю как это должно работать)


Отправлено Ku2zoff 29-04-2020 в 15:09:

Цитата:
Vadiman писал:
как сделать так, чтобы npc "хуже" слышали топот игрока?

C++ Source Code:
float CBaseMonster::HearingSensitivity( void );

Функция виртуальная, у всех монстров по дефолту 1.0, только у тентакля 2.0.

Добавлено 29-04-2020 в 22:09:

Вообще, гляди функцию void CBaseMonster :: Listen ( void ). Там все условия, как слышит монстр. И ещё void CBasePlayer :: UpdatePlayerSound ( void ), если тебя интересует именно игрок.


Отправлено BALISTA 29-04-2020 в 15:40:

Цитата:
Vadiman писал:
npc "хуже" слышали топот игрока

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


Отправлено Vadiman 30-04-2020 в 10:53:

Цитата:
Ku2zoff писал:
C++ Source Code:
float CBaseMonster::HearingSensitivity( void );

Функция виртуальная, у всех монстров по дефолту 1.0, только у тентакля 2.0.

Добавлено 29-04-2020 в 22:09:

Вообще, гляди функцию void CBaseMonster :: Listen ( void ). Там все условия, как слышит монстр. И ещё void CBasePlayer :: UpdatePlayerSound ( void ), если тебя интересует именно игрок.

Спасибо! Посмотрю.

И еще давно хотел спросить:
У меня у глока на альтернативную атаку достается второй пистолет (меняется точность и скорость стрельбы). Можно ли при этом как-то менять количество патронов в обойме? Сам я не догнал как это сделать, таким образом, по идее, со вторым стволом количество патронов должно в 2 раза увеличиться и уменьшиться обратно, если снова нажать вторую атаку.


Отправлено FreeSlave 30-04-2020 в 10:59:

Что означает cldll "1" в liblist.gam?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Vadiman 30-04-2020 в 11:20:

И еще кое что:
Если прописать в Deploy оружия

C++ Source Code:
g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 185 );

То мы уменьшим скорость бега игрока, пока он несет его в руках.
А как в добавок снизить высоту прыжка по мимо скорости бега?


Отправлено Crystallize 30-04-2020 в 14:11:

Где тот код который разворачивает модельку игрока в ту сторону куда он идёт, даже если это стрейф? И тот код который потом плавно поворачивает модельку игрока обратно к его реальным viewangles?


Отправлено Дядя Миша 30-04-2020 в 14:22:

Цитата:
Crystallize писал:
Где тот код который разворачивает модельку игрока в ту сторону куда он идёт, даже если это стрейф?

где начало того конца, которым заканчивается начало? Где та молодая шпана, что сотрёт нас с лица земли?

VecToAngles ты имел в виду?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 30-04-2020 в 14:53:

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

Добавлено 30-04-2020 в 21:53:


Отправлено Дядя Миша 30-04-2020 в 15:28:

Crystallize я ж тебе написал

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-04-2020 в 19:34:

Подскажите, EV_TraceTexture не работает на пушаблях что ли? Все брашевые энтити норм трейсит, а пушабли не хочет.


Отправлено KiQ 30-04-2020 в 19:42:

Ku2zoff видимо от movetype зависит

__________________
-Brain is dead-


Отправлено Дядя Миша 30-04-2020 в 20:24:

Ku2zoff под ксашем тожы не тестит?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-04-2020 в 20:28:

KiQ насколько я смог высмотреть в ксаше, функция PM_TraceSurface почти идентична функции SV_TraceSurface. Где там собака зарыта, я хз. PM_TraceTexture отличается от pfnTraceTexture тем, что первая трейсит физэнтити, а вторая эдикты. И обе они используют очень похожие TraceSurface. Каким-то образом пушабли отсекаются, и PM_TraceTexture возвращает null вместо имени текстуры.


Отправлено Дядя Миша 30-04-2020 в 20:29:

Ku2zoff у тебя для SOLID_BBOX возвращается коробка из шести нод, затычка. Ну или что-то вроде этого. KiQ правильно сказал, они по моветипу арреентируются. Да вообще весь pm-код это дерьмо полное.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-04-2020 в 20:46:

Цитата:
Дядя Миша писал:
у тебя для SOLID_BBOX возвращается коробка из шести нод, затычка.

Серверная трасса норм возвращает текстуру, проверено.
Цитата:
Дядя Миша писал:
Да вообще весь pm-код это дерьмо полное.

Значит, либо дропнуть, либо слать данные с сервера.


Отправлено Дядя Миша 30-04-2020 в 20:50:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 01-05-2020 в 08:39:

Дядя Миша это точно моя пушабля. И по номеру энтити, и по номеру физэнтити. Только вот для физэнтити возвращает model.name = (null).

Цитата:
KiQ писал:
видимо от movetype зависит

Неа. От pev->solid. Поменял пушабле SOLID_BBOX на SOLID_BSP, трасса заработала нормально. Правда, пушабля стала "приклеиваться" к полу. Если раньше толкнуть её можно было стоя вплотную к ней, то теперь нужно обязательно быть на каком-то минимальном расстоянии, чтобы игрок смог набрать некоторую скорость, прежде чем коснётся пушабли.

Добавлено 01-05-2020 в 15:39:

Справился. Завёл небольшой хак: так как пушабля, это по сути брейкабля, то у неё тоже есть материал, который по умолчанию дерево, если маппер не укажет иное. Всё, что нужно, это отправить этот материал на клиент, например так:
C++ Source Code:
pev->sequence = m_Material;

Ну а на клиенте для объектов с pev->movetype MOVETYPE_PUSHSTEP остаётся завести фильтр по pev->sequence и выбирать материал. Не очень красиво, зато не портит физику. Нужна лишь внимательность маппера, чтобы материал пушабли соответствовал текстуре, которой она покрыта.


Отправлено Ku2zoff 01-05-2020 в 14:04:

Цитата:
FreeSlave писал:
Что означает cldll "1" в liblist.gam?

Должно означать, что мод имеет кастомную client.dll. Есть ещё svonly, что значит, что у мода только кастомная серверная dll. Видимо, первое для каких-то античитских проверок в движке. А вообще, обе опции противоположны друг дружке. Когда одна 1, то другая 0. Не знаю, на что конкретно это влияет. Есть ещё строка crcclientdll, которая включает проверку контрольной суммы клиентки нелокального игрока сервером. Вот это реально полезная вещь. Если суммы не совпадают, значит у клиента модифицированная (для читерства), либо неподходящая версия client.dll. И сервер даёт ему пинка под зад, выдавая connection refused.


Отправлено Vadiman 01-05-2020 в 15:54:

Цитата:
Vadiman писал:
Спасибо! Посмотрю.

И еще давно хотел спросить:
У меня у глока на альтернативную атаку достается второй пистолет (меняется точность и скорость стрельбы). Можно ли при этом как-то менять количество патронов в обойме? Сам я не догнал как это сделать, таким образом, по идее, со вторым стволом количество патронов должно в 2 раза увеличиться и уменьшиться обратно, если снова нажать вторую атаку.


Цитата:
Vadiman писал:
И еще кое что:
Если прописать в Deploy оружия
C++ Source Code:
g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 185 );

То мы уменьшим скорость бега игрока, пока он несет его в руках.
А как в добавок снизить высоту прыжка по мимо скорости бега?


Актуально


Отправлено Ku2zoff 01-05-2020 в 16:36:

Цитата:
Vadiman писал:
У меня у глока на альтернативную атаку достается второй пистолет (меняется точность и скорость стрельбы). Можно ли при этом как-то менять количество патронов в обойме?

Количество патронов в обойме не получится просто так изменить, потому что это значение указывается в ItemInfo. Тут нужно переписывать всю инициализацию оружия. Но можно завести второй магазин, для второй пушки. И вторую перезарядку тоже для неё. Хороший пример - мод Firearms, там это здорово сделано. Лично я не стал бы морочиться с akimbo-пушками, потому что IRL такое никто не использует. Если уж заводить такое в своём моде, тогда это должно быть похоже на Wolfenstein или Borderlands, чтобы любое оружие можно было таскать в двух экземплярах.


Отправлено Vadiman 01-05-2020 в 17:19:

Цитата:
Ku2zoff писал:
Количество патронов в обойме не получится просто так изменить, потому что это значение указывается в ItemInfo. Тут нужно переписывать всю инициализацию оружия. Но можно завести второй магазин, для второй пушки. И вторую перезарядку тоже для неё. Хороший пример - мод Firearms, там это здорово сделано. Лично я не стал бы морочиться с akimbo-пушками, потому что IRL такое никто не использует. Если уж заводить такое в своём моде, тогда это должно быть похоже на Wolfenstein или Borderlands, чтобы любое оружие можно было таскать в двух экземплярах.


Жаль конечно, вроде бы в свен-купе это как-то реализовали (если не ошибаюсь) или там двойной узи был отдельным оружием, не помню уже.
У меня просто два глока отлично вписались бы, а остальное оружие в двойном экземпляре протагонист не смог бы использовать (баба).

Вот теперь бы разобраться как запрещать прыгать\ослабить прыжок с тяжелым оружием пока оно в руках (типа рпг)


Отправлено Cybermax 01-05-2020 в 17:38:

Sven Co-op в svencoop\sprites weapon_uzi.txt и weapon_uziakimbo.txt что намекает на то что два разных. В Brutal Half-Life глок v_9mmhandgun.mdl бодигруппами левый и правый и только weapon_9mmhandgun.txt.


Отправлено Ku2zoff 01-05-2020 в 18:29:

Цитата:
Cybermax писал:
Sven Co-op в svencoop\sprites weapon_uzi.txt и weapon_uziakimbo.txt что намекает на то что два разных.

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

Добавлено 02-05-2020 в 01:29:

Цитата:
Cybermax писал:
В Brutal Half-Life глок v_9mmhandgun.mdl бодигруппами левый и правый и только weapon_9mmhandgun.txt.

Все эти влажные мечты вполне можно закодить. Надо ли? Я не так давно прошёл ETC1 и 2. И знаете что? Даже без новых пушек это классно. Не постесняюсь в очередной раз упомянуть Blue Shift, как мой любимый официальный аддон. И там нет ни новых оружий, ни новых монстров. Но я прошёл его намного больше раз, чем опфор, где есть и новые монстры и новые оружия. Нельзя зацикливаться именно на фичах кодинга. Без новых хороших уровней мода быть не может.


Отправлено Vadiman 01-05-2020 в 18:36:

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

Добавлено 02-05-2020 в 01:29:


Все эти влажные мечты вполне можно закодить. Надо ли? Я не так давно прошёл ETC1 и 2. И знаете что? Даже без новых пушек это классно. Не постесняюсь в очередной раз упомянуть Blue Shift, как мой любимый официальный аддон. И там нет ни новых оружий, ни новых монстров. Но я прошёл его намного больше раз, чем опфор, где есть и новые монстры и новые оружия. Нельзя зацикливаться именно на фичах кодинга. Без новых хороших уровней мода быть не может.


True that. Но у меня по задумке без кодинга никак. Даже если пушки выкинуть новые. Мне как минимум надо хотя бы ограничение переноса оружия реализовать (как в CoD например).


Отправлено Crystallize 02-05-2020 в 12:53:

Цитата:
Дядя Миша писал:
VecToAngles ты имел в виду?


Код который разворачивает игрока в ту сторону куда он стрейфится-в самой VecToAngles такого кода, разумеется, нет. Наверное разворотом знимается другая функция которая просто юзает VecToAngles, но где она находится?

Ну и разумеется в VecToAngles нет никакого кода относящегося к плавному изменению YAW от одного значения к другому.

C++ Source Code:
1
void VectorAngles( const Vector &forward, Vector &angles )
2
{
3
  angles[ROLL] = 0.0f;
4
 
5
  if( forward.x || forward.y )
6
  {
7
    float tmp;
8
 
9
    angles[YAW] = RAD2DEG( atan2( forward.y, forward.x ));
10
    if( angles[YAW] < 0 ) angles[YAW] += 360;
11
 
12
    tmp = sqrt( forward.x * forward.x + forward.y * forward.y );
13
    angles[PITCH] = RAD2DEG( atan2( -forward.z, tmp ));
14
    if( angles[PITCH] < 0 ) angles[PITCH] += 360;
15
  }
16
  else
17
  {
18
    // fast case
19
    angles[YAW] = 0.0f;
20
    if( forward.z > 0 )
21
      angles[PITCH] = 270.0f;
22
    else angles[PITCH] = 90.0f;
23
  }
24
}


Отправлено SNMetamorph 02-05-2020 в 14:23:

Цитата:
Дядя Миша писал:
Да вообще весь pm-код это дерьмо полное.

А што с ним не так и можно ли это исправить?

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 02-05-2020 в 14:44:

Цитата:
Crystallize писал:
в самой VecToAngles такого кода, разумеется, нет

VecToAngles - это и есть код, который разворачивает игрока в сторону вектора. Это то, что хочешь сделать.
Если ты про то, что происходит в текущей реализации - это доворот через спинные контроллеры кости.

Цитата:
SNMetamorph писал:
А што с ним не так и можно ли это исправить?

полностью всё переделать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-05-2020 в 01:18:

Цитата:
Дядя Миша писал:
у тебя для SOLID_BBOX возвращается коробка из шести нод, затычка. Ну или что-то вроде этого.

Я нашёл, в чём причина: SV_CopyEdictToPhysent, там pe->model обнуляется, если SOLID_BBOX. Самое верное решение - поменять пушабле pev->solid на SOLID_BSP. Правда, в этом случае для пушабли начинает применяться SV_ClipToWorldbrush, и она становится немного менее двигабельной - минимальная её pev->velocity, чтобы двигалась, должна быть около 120 юнитов/сек по одной из осей.


Отправлено Vadiman 04-05-2020 в 14:17:

Ku2zoff а как запретить/ограничить высоту прыжка игрока с определенной пушкой? Есть идеи?


Отправлено Aynekko 04-05-2020 в 18:08:

Приветствую всех. В общем, делаю мод под ксаш (уже лет 7 делаю). Сразу скажу, что в программировании я ноль и все делаю по сути методом тыка - добавил/поправил мелочи типа обойму у мп5 (50 вместо 25), поправил очень резкий weaponlag (а то пушку дергало вообще за экран, а теперь лишь слегка), на большее меня не хватает.
Изначально я хотел обойтись стандартными пушками, но эта очень подойдет в сюжет.

Задача, если вкратце, сделать стандартный гаусс с обоймой и перезаряжающимся (на анимации забейте, это я сам позже разберусь).

Хочу добавить в мод вот это оружие с кристаллом, думаю многие его видели:
https://cs-dev.ru/uploads/posts/201...18014436549.jpg
В архиве ниже прикрепляю v_gauss с этой моделькой для теста и мой gauss.cpp с которым я возился сегодня весь день (буквально). Возможно придется что-то прописать в weapons.h, потому что я там что-то менял, скорее всего патроны (их должно быть 50 в обойме и 150 в "кармане" при полной амуниции).

Что я смог сделать:
- Сделал обойму 50 патронов, сделал перезарядку, изменил цвет луча на нужный мне.
- Сделал правильные вызовы анимаций, при стрельбе, поднятии и перезарядки оружия (соответствуют новой модели)

Проблемы:
- Перезарядка вызывается в любом случае, назависимо от кол-ва патронов. Можно зажать клавишу R и перезарадка будет вызываться каждый кадр при полной обойме. Работает нормально если обойма <50.
- Патроны тратятся одновременно из "кармана" игрока и из обоймы.
- При достижении "кармана" нуля, оружие отказывается стрелять, даже если в обойме что-то есть.

Я весь день перечитывал туторы вдоль и поперек, в том числе и файлы оружий типа mp5.cpp и других. Но они мне так и не дали понять, как заставить пушку брать патроны только из обоймы. Гаусс упорно лезет в "карман" и не понимает, что у него обойма, хотя пользуется обеими.


Отправлено Aynekko 05-05-2020 в 07:46:

Разобрался сам. Вот результат:
https://www.youtube.com/watch?v=Xi-0ARCZeaE


Отправлено KiQ 05-05-2020 в 07:54:

Анимация перезарядки эпичная, ГГ видимо джедай, не иначе я бы ещё поправил звук при отсутствии патронов, довольно забавно слышать, как энергетической оружие ВНЕЗАПНО начинает щёлкать огнестрельным затвором (кстати не помню, с оригинальным шауссом так же?)

__________________
-Brain is dead-


Отправлено Cybermax 05-05-2020 в 08:14:

Я бы не использовал модель из CS:O.


Отправлено Aynekko 05-05-2020 в 08:58:

Цитата:
KiQ писал:
Анимация перезарядки эпичная, ГГ видимо джедай, не иначе я бы ещё поправил звук при отсутствии патронов, довольно забавно слышать, как энергетической оружие ВНЕЗАПНО начинает щёлкать огнестрельным затвором (кстати не помню, с оригинальным шауссом так же?)

Да, у оригинального гаусса то же самое. Думаю имеет смысл поправить.
Цитата:
Cybermax писал:
Я бы не использовал модель из CS:O.

Почему? Я не собираюсь продавать мод)
А эту пушку я видел на многих серверах. Если кто и постучит в дверь, ну что ж, придется переделывать.


Отправлено Cybermax 05-05-2020 в 09:33:

Aynekko Никто не постучит из-за модели конечно, просто мне кажется эти модели это дурной вкус. Если хочешь, вот тебе альтернатива, а так конечно сам решай.


Отправлено Aynekko 05-05-2020 в 09:48:

Цитата:
Cybermax писал:
Aynekko Никто не постучит из-за модели конечно, просто мне кажется эти модели это дурной вкус. Если хочешь, вот тебе альтернатива, а так конечно сам решай.

Спасибо, но немного не то. Дело в том, что у меня сюжет завязан на кристаллах и эта модель просто идеально вписывается. В CS:O я никогда не играл, может с ней ассоциации какие-то дурные, но честно говоря сама модель как она есть мне нравится.


Отправлено Ku2zoff 05-05-2020 в 12:29:

Цитата:
Vadiman писал:
как запретить/ограничить высоту прыжка игрока с определенной пушкой? Есть идеи?

Самый простой способ - менять игроку pev->gravity. Самый грамотный - менять импульс в pm_shared.c. Естественно, передавать параметр придётся по сети через какой-нибудь iuser.

Добавлено 05-05-2020 в 19:29:

Цитата:
Cybermax писал:
просто мне кажется эти модели это дурной вкус

В КСО много странных моделей. Особенно мне не нравятся пафосные анимации, выглядит попсово. Азиаты, чё.


Отправлено Chyvachok 05-05-2020 в 14:16:

Насчёт моделей ИМХО вообще не стоит париться, конечно свои ресурсы больше моду оригинальности дают, но если сам не умеешь моделить то ничего плохого нету чтобы взять готовую подходящую модель. Насчёт ресурсов из других игр волноваться тоже не стоит, вон на Гаррис Мод модели из всех игр тащят, выкладывают в официальном воркшопе и ничего, не понятно почему некоторые боятся юзать модели из других игр в модах.

Насчёт КСО, там много трэша, и много неприятных анимаций, но кстати эта пушка с кристаллом, да и вообще почти весь Sci-Fi оружия имеет вполне приятные и вид и анимации, M32 тоже неплох, а вот огнестрел неприятный.


Отправлено Aynekko 05-05-2020 в 14:55:

Цитата:
Chyvachok писал:
Насчёт моделей ИМХО вообще не стоит париться, конечно свои ресурсы больше моду оригинальности дают, но если сам не умеешь моделить то ничего плохого нету чтобы взять готовую подходящую модель. Насчёт ресурсов из других игр волноваться тоже не стоит, вон на Гаррис Мод модели из всех игр тащят, выкладывают в официальном воркшопе и ничего, не понятно почему некоторые боятся юзать модели из других игр в модах.

Вот да, думаю ничего в этом такого не должно быть, тем более себе же не присваиваешь авторство и если проект некоммерческий. Хотя тот же Hunt down the Freeman в стиме висит с кучей моделей из L4D и хоть бы что.

Цитата:
Chyvachok писал:
Насчёт КСО, там много трэша, и много неприятных анимаций, но кстати эта пушка с кристаллом, да и вообще почти весь Sci-Fi оружия имеет вполне приятные и вид и анимации, M32 тоже неплох, а вот огнестрел неприятный.

Я вот полез смотреть, что за КСО такой (название только знаю, не интересовался), действительно там очень много всякого, чего я бы на здоровую голову не заюзал. Конкретно эту пушку я увидел на одном сервере халфы и мне она сразу понравилась.


Отправлено Vadiman 05-05-2020 в 20:19:

Цитата:
Ku2zoff писал:
Самый простой способ - менять игроку pev->gravity. Самый грамотный - менять импульс в pm_shared.c. Естественно, передавать параметр придётся по сети через какой-нибудь iuser.

Добавлено 05-05-2020 в 19:29:


В КСО много странных моделей. Особенно мне не нравятся пафосные анимации, выглядит попсово. Азиаты, чё.


Спасибо, попробую)

По мне в CSO неплохие модельки, сам их в данный момент использую, добавляют динамики)


Отправлено FreeSlave 08-05-2020 в 16:50:

Где можно посмотреть, какие буквенные паттерны соответствуют предопределенным лайтстилям? (Fluorescent flicker и прочее).

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 08-05-2020 в 17:23:

world.cpp там они

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 08-05-2020 в 17:31:

Цитата:
Дядя Миша писал:
world.cpp там они


Спасибо.

__________________
I'm on github
I'm on opendesktop.org


Отправлено JPEG 08-05-2020 в 21:15:

Цитата:
Crystallize писал:
Код который разворачивает игрока в ту сторону куда он стрейфится-в самой VecToAngles такого кода, разумеется, нет. Наверное разворотом знимается другая функция которая просто юзает VecToAngles, но где она находится?

Ну и разумеется в VecToAngles нет никакого кода относящегося к плавному изменению YAW от одного значения к другому.

C++ Source Code:
1
void VectorAngles( const Vector &forward, Vector &angles )
2
{
3
  angles[ROLL] = 0.0f;
4
 
5
  if( forward.x || forward.y )
6
  {
7
    float tmp;
8
 
9
    angles[YAW] = RAD2DEG( atan2( forward.y, forward.x ));
10
    if( angles[YAW] < 0 ) angles[YAW] += 360;
11
 
12
    tmp = sqrt( forward.x * forward.x + forward.y * forward.y );
13
    angles[PITCH] = RAD2DEG( atan2( -forward.z, tmp ));
14
    if( angles[PITCH] < 0 ) angles[PITCH] += 360;
15
  }
16
  else
17
  {
18
    // fast case
19
    angles[YAW] = 0.0f;
20
    if( forward.z > 0 )
21
      angles[PITCH] = 270.0f;
22
    else angles[PITCH] = 90.0f;
23
  }
24
}


https://hlfx.ru/forum/showthread.php?s=&threadid=5100

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено BALISTA 09-05-2020 в 07:45:

Приветствую, есть вопрос: что делает TabulateAmmo? Вроде как он связан с предиктингом хотя я могу ошибаться. Хотелось бы узнать поподробнее.


Отправлено Crystallize 09-05-2020 в 15:37:

Yo Den Спасибо большое! Я вообще помнил эту темку, конкретно правда её не искал, но я помнил про гейт и копался с ним, но мне удалось только анимации сломать, не более.


Отправлено Crystallize 09-05-2020 в 20:00:

John Tremor ну там описание же у неё есть


Отправлено JPEG 10-05-2020 в 02:15:

шото никак не могу понять, где поменять время исчезновения SpawnRandomGibs (гибсы)?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено SNMetamorph 10-05-2020 в 03:33:

Цитата:
John Tremor писал:
Приветствую, есть вопрос: что делает TabulateAmmo? Вроде как он связан с предиктингом хотя я могу ошибаться. Хотелось бы узнать поподробнее.

Обновляет переменную с количеством патронов в игрока.
Эта дефолтная система аммуниции в HLSDK, кстати, абсолютно бредовая

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено FreeSlave 10-05-2020 в 15:10:

Цитата:
Yo Den писал:
шото никак не могу понять, где поменять время исчезновения SpawnRandomGibs (гибсы)?


В CGib::Spawn выставляется в 25. Можешь поменять сразу после спавна.

Добавлено 10-05-2020 в 18:10:

Всегда ли корректно детектить изменение клиентского игрового времени (при ченджлевеле) сравнением flTime < gHUD.m_fOldTime? Может, есть другой способ?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 10-05-2020 в 15:55:

vidInit вызывается при спавне карты.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 10-05-2020 в 18:04:

Цитата:
Дядя Миша писал:
Если ты про то, что происходит в текущей реализации - это доворот через спинные контроллеры кости.

в StudioDrawPlayer отключил gaitsequence и в StudioSetupTransform перестал передавать углы, уже моделька игрока не поворачивается и даже дебажный кусок льда вокруг него в режиме drawentities 5 не поворачивается, а вот спрайт прикреплённый к игроку парентом всё равно "доворачивается", может дело не в контроллерах?


Отправлено FreeSlave 10-05-2020 в 19:10:

Можно ли различить ссылается modelindex на модель или на спрайт? В серверном коде. В клиентском я так понимаю, это определяется через IEngineStudio и структуру model_s.

Цитата:
Дядя Миша писал:
vidInit вызывается при спавне карты.


Спасибо. Но мэйнтейнить дельту между картами всё равно надо как-то самому, т.к. на каждой карте своё местное время.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 10-05-2020 в 19:35:

Цитата:
FreeSlave писал:
Можно ли различить ссылается modelindex на модель или на спрайт?

с натяжкой. Попробовать получить экстрадату для энтити через pfnGetModelPtr. Если пошлёт - значит спрайт. Ну или бсп.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 10-05-2020 в 19:52:

Цитата:
Дядя Миша писал:
с натяжкой. Попробовать получить экстрадату для энтити через pfnGetModelPtr. Если пошлёт - значит спрайт. Ну или бсп.


pfnGetModelPtr требует эдикта. А моделиндекс может и отдельно от энтити существовать (через прекэш). В моём случае имя файла доступно, так что пока оставлю проверку на расширение.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 10-05-2020 в 19:59:

FreeSlave берёшь любой эдикт, сохраняешь его старый модельиндекс в темп, суёшь свой, проверяешь, возвращаешь обратно. Можешь мировую энтить юзать для етова дела.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено BALISTA 11-05-2020 в 04:25:

Заметил что спрайт управления вагонеткой при сэйв/ресторе пропадает, и появляется опять если менять её скорость. Можно ли как-нибудь это победить?


Отправлено Дядя Миша 11-05-2020 в 09:18:

John Tremor можно. Там ошибка у вальвы.
В void CBasePlayer :: Precache( void ) замени

m_iTrain = TRAIN_NEW;

на

m_iTrain |= TRAIN_NEW;

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 12-05-2020 в 11:46:

Цитата:
FreeSlave писал:
В CGib::Spawn выставляется в 25. Можешь поменять сразу после спавна.

Добавлено 10-05-2020 в 18:10:

Всегда ли корректно детектить изменение клиентского игрового времени (при ченджлевеле) сравнением flTime < gHUD.m_fOldTime? Может, есть другой способ?


спасибо большое, заделал кровищу в стиле мк

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено KiQ 12-05-2020 в 19:26:

Yo Den да это жы я в магазе, когда прорываюсь к кассе через толпу алкашей, пытаясь донести в целости баклажки с пивом

__________________
-Brain is dead-


Отправлено JPEG 13-05-2020 в 00:09:

Цитата:
KiQ писал:
Yo Den да это жы я в магазе, когда прорываюсь к кассе через толпу алкашей, пытаясь донести в целости баклажки с пивом

жыза

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено JPEG 18-05-2020 в 00:48:

А с чем вообще связано застревание игрока на пол секунды при старте? Есть ли способы это пофиксить в хл?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 18-05-2020 в 07:14:

Это унлаг так инициализируется. Можно попробовать установить clockwindow 0.0 в valve.rc

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 18-05-2020 в 09:39:

Цитата:
Дядя Миша писал:
clockwindow 0.0

спасибо, помогло) я столько лет мучился

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 18-05-2020 в 10:39:

Yo Den надо было на ксаш переходить!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 18-05-2020 в 11:36:

Цитата:
Дядя Миша писал:
Yo Den надо было на ксаш переходить!

меня won-меню очень отталкивает, а так, если когда-нибудь выпущу мод, то сделаю это на нём, как отдельную игру

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Crystallize 26-05-2020 в 13:43:

Можно ли задавать позицию игрока не относительно (через указание его YAW и скорости в функции CreateMove) а сразу ему задавать новую абсолютную позицию (и угол) но при этом не потерять его коллизию с миром и с энтитиями?


Отправлено Дядя Миша 26-05-2020 в 17:01:

Цитата:
Crystallize писал:
а сразу ему задавать новую абсолютную позицию

если клиент начнёт сам ставить игрока куда захочет, это очевидно будет супер-читёрство.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено supra36 26-05-2020 в 19:39:

У меня проблема с двумя "path_corners" одновременно.

Я хочу, чтобы искусственный интеллект немного подождал, прежде чем перейти ко второму «path_corner».

"monster" --- (go) ---> "path_corner" --- (подождите 10 секунд) ---> "path_corner"

Вкладка «Ожидание», очевидно, не работает для NPC.

Как это сделать тогда?

__________________
настоящий мужчина не нуждается в подписи.


Отправлено FreeSlave 27-05-2020 в 20:50:

supra36, маппингом - никак. Можно добавить в коде, чтобы монстр брал параметр ожидания из path_corner. Ну и придется завести новый таск и скедуле под это дело.
Как альтернативный вариант можно вместо передвижения по path_corner сделать перемещение по scripted_sequence (там задержку выставить можно). Патрулирование по path_corner'ам в HL всё равно не доделано - например, монстр перестанет пытаться достичь path_corner при первом же препятствии на пути.

У scripted_sequence однако есть свой минус - скрипт прервется только если монстр получит урон. А перемещение по path_corner монстр прервёт и при встрече с врагом или если услышит звук боя/унюхает еду.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 27-05-2020 в 21:41:

На сервере я сделал регн здоровья, который регулируется командами. Скажем sv_regen 0 или 1 - вкл/выкл реген здоровья. Проблема: оно не сохраняется в слоте.
Я меняю значение, находясь на карте, сохраняю игру, выхожу из игры. Запускаю игру, загружаю, значение не сохранилось. В теории это плохо, потому что если я буду управлять на карте значением через trigger_command, то после сохранения все сбросится. Подскажите, может какой флаг где-то прописать надо или что-то на клиенте сделать?


Отправлено Ku2zoff 28-05-2020 в 02:05:

Aynekko при регистрации квара поставь ему флаг FCVAR_ARCHIVE. А ещё лучше, заведи BOOL m_bRegen или int m_iRegen прямо в классе игрока. Меняй эту переменную специальной энтитей и сохраняй в сейвдату игрока. Так будет грамотнее. Потому что квар работает на всех картах, если читается из конфига, независимо от того, применял ты trigger_command в текущей игровой сессии или нет.

Добавлено 28-05-2020 в 09:05:

Какой у тебя реген, кстати? До 100% или другого определённого значения? Я сделал у себя "округление" здоровья. То есть, если последняя цифра процентов не равна 0, то здоровье растёт в большую сторону. Например с 21 до 30 или с 45 до 50 и т.д.


Отправлено Aynekko 28-05-2020 в 08:46:

Цитата:
Ku2zoff писал:
Aynekko при регистрации квара поставь ему флаг FCVAR_ARCHIVE. А ещё лучше, заведи BOOL m_bRegen или int m_iRegen прямо в классе игрока. Меняй эту переменную специальной энтитей и сохраняй в сейвдату игрока.

Этот флаг уже пробовал, не помогло. Энтитю я пока сам не смогу сделать) сейчас думаю, можно попробовать сделать костыль - будут настройки по-умолчанию, а в небольшой секции, где реген будет выключен - поставить loop multimanager который будет слать команду каждые 5 секунд. Если игрок там сохранится, то через 5 секунд после загрузки реген станет таким, как надо. Если, конечно, менеджер сохранится.
Цитата:
Ku2zoff писал:
Какой у тебя реген, кстати? До 100% или другого определённого значения?

До 100. Я нашел код из Alien Swarm SDK и адаптировал его под ксаш, сам бы не написал. Этот код еще в Portal используется.

Добавлено 28-05-2020 в 11:43:

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

Добавлено 28-05-2020 в 11:46:

Цитата:
Ku2zoff писал:
Потому что квар работает на всех картах, если читается из конфига, независимо от того, применял ты trigger_command в текущей игровой сессии или нет.

Блин, только сейчас понял. Если у нас несколько сохраненных игр, то при запуске ранней останется команда из другого сейва в текущей сессии…ты прав надо делать энтитю (если бы я знал еще как) или делать спам триггер_комманд на всех картах, черт.


Отправлено Crystallize 01-06-2020 в 13:45:

Мучаю фитцквейк, замерил реальное перемещение игрока между превстейтом и курстейтом и вижу что игрок который движется по окружности радиуса 100 оказывается процентов на 20 быстрее игрока который бежит по окружности радиуса 500. Я-то всегда закладывал в расчёты константную скорость типа 400, 320 или 200 умноженное на фреймтайм, а оно на самом деле вон как.
Там трение большую роль играет и игрока по факту заносит?


Отправлено ncuxonaT 01-06-2020 в 14:04:

Crystallize ты умножаешь скорость на время кадра?
https://habr.com/ru/post/442528/


Отправлено Crystallize 01-06-2020 в 14:05:

ncuxonaT да, фреймтайм, я же говорю.


Отправлено ncuxonaT 01-06-2020 в 14:12:

Crystallize Crystallize не стоит так делать. Смотри раздел "Обновления с переменным шагом времени"


Отправлено Aynekko 01-06-2020 в 14:21:

Помогите пожалуйста. Как в player.cpp отключить игроку возможность нажатия на кнопку при определенном условии?
В файле с мультиплеером есть такое:

C++ Source Code:
if ( pPlayer->m_afButtonPressed & ( IN_DUCK | IN_ATTACK | IN_ATTACK2 | IN_USE | IN_JUMP ) )
  pPlayer->m_afButtonPressed = 0;

Это как раз то, что нужно, но, очевидно, что копипаста этого в player.cpp не работает, т.к. начинается ругань.
Условие простейшее и понятное, но как мне его добавить в сингл?

Вопрос нубский, полагаю, но на то и тема


Отправлено Дядя Миша 01-06-2020 в 14:53:

Цитата:
ncuxonaT писал:
не стоит так делать. Смотри раздел "Обновления с переменным шагом времени"

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

Добавлено 01-06-2020 в 17:53:

Цитата:
Aynekko писал:
Как в player.cpp отключить игроку возможность нажатия на кнопку при определенном условии?

может тебе keycatcher нужен?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 01-06-2020 в 14:54:

ncuxonaT я думал что в движках кваки и хл это уже вписано, разве не так?
Кстати в хл же вроде кто-то там тикает на 20фпс, но при этом используется фреймтайм. Интересно, что есть что.

Я прочитал тот абзац, но моего понимания не хватает.


Отправлено Aynekko 01-06-2020 в 14:59:

Цитата:
Дядя Миша писал:
может тебе keycatcher нужен?

Энтитя что ли на карте? Нет, я хочу в стамину, которая для спринта, добавить прыжок (собственно, я его уже добавил и все работает). Единственная недоделка, которая осталась - при значении стамины ниже определенного запретить прыжок.
Уже перепробовал кучу условий вроде посылания команды -jump и "если m_afButtonPressed & IN_JUMP то m_afButtonPressed = 0", но не хотит.


Отправлено ncuxonaT 01-06-2020 в 17:04:

Crystallize не могу ничего сказать про движки кваки и хл, на форуме есть компетентные товарищи, может, они дадут комментарии. Но использовать переменный фреймтайм при расчете движения и многих других вещей - плохая идея.
"Потому что физику не обманешь — расстояние это интеграл от изменения скорости по времени, а не просто произведение моментальной скорости на время. По-сути, он считал раньше интеграл дискретным суммированием и делать это можно лишь с минимальным возможным шагом времени, но попытка увеличивать этот шаг сразу же дает ошибку. В правильном варианте надо вывести функцию изменения скорости (а вывести ее с таким трением будем не просто) и затем интегрировать."


Отправлено Crystallize 01-06-2020 в 17:34:

ncuxonaT т.е. всё сводится к какому-то голому теоретизированию и обвинениям в неидеальности? Что мне, кваку на константный фреймтайм переводить? Ну вот а фреймтайм станет константным если я просто включу всинк или укажу fps_max?


Отправлено ncuxonaT 01-06-2020 в 18:10:

Цитата:
Crystallize писал:
т.е. всё сводится к какому-то голому теоретизированию

Цитата:
Crystallize писал:
вижу что игрок который движется по окружности радиуса 100 оказывается процентов на 20 быстрее игрока который бежит по окружности радиуса 500


Думаешь, Кармак просто так капнул фпс на 60 в думе 3 и в рейдже?


Отправлено Crystallize 01-06-2020 в 18:16:

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


Отправлено ncuxonaT 01-06-2020 в 18:31:

Crystallize мне надоело доказывать. Не хочешь разбираться в теории, хочешь умножать на переменный дельтатайм - пожалуйста.


Отправлено Дядя Миша 01-06-2020 в 18:45:

Интегрирование то дело десятое. Оно больше влияет на воспроизводимость симуляции, чем на её качество. Просто потому что интегратор использует данные от коллижен-детктора, а вот от того как устроен коллижен детектор и зависит вся устойчивость физики. Если он завязан на временные переменные - да, всё посыплется к чертям, если не завязан - дельта может плавать в произвольных пределах. Подсказка - в D3 он не завязан. Но это не мешает физике быть деревянной.

Добавлено 01-06-2020 в 21:45:

Цитата:
ncuxonaT писал:
По-сути, он считал раньше интеграл дискретным суммированием и делать это можно лишь с минимальным возможным шагом времени, но попытка увеличивать этот шаг сразу же дает ошибку.

ошибку даёт во первых конечная точность вещественных и тот занятный факт, что флоаты по сути не аддитивны, ошибка накапливается.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 02-06-2020 в 04:16:

Aynekko ты хочешь запретить прыжок? В player.cpp у тебя этого не выйдет. Только в pm_shared.c. Ну или playermove.cpp в XashXT.

Добавлено 02-06-2020 в 11:16:

Ещё раз повторю. Уровень стамины надо хранить в pev->fuser1 игрока, чтобы к ней был доступ из pm_shared.c. Там есть функция PM_Jump. В самом её начале можешь добавить маленькое условие

C++ Source Code:
if (pmove->fuser1 <= 15)
  return;
И всё. Минимальный уровень стамины укажешь сам.
Мне категорически не нравится запрет возможности двигаться и прыгать при низкой стамине (за это я недолюбливаю СВАЛКЕР). В своём моде я решил использовать стамину как силу в Jedi Academy. Когда её достаточно, игрок может спринтить, высоко и далеко прыгать, долго плавать под водой. Если же её мало - он быстрее утомляется, прыгает чуть ниже, бегает чуть медленнее, быстрее задыхается под водой. Реген здоровья тоже происходит медленнее при низкой стамине.


Отправлено Aynekko 02-06-2020 в 08:45:

Ku2zoff, спасибо. Я помню. Но пока не разобрался, как это сделать, для меня "хранить в pev->fuser1" мало о чем не говорит… Думал, может проще есть способ, как в мультике.

Я вот тоже думаю, может оставить ее, да и все. Просто если часто прыгаешь, то спринтить не получится.


Отправлено Дядя Миша 02-06-2020 в 09:28:

В начале функции PlayerJump поставить какое-то условие.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 04-06-2020 в 03:54:

Цитата:
Crystallize писал:
Там трение большую роль играет и игрока по факту заносит?


лол так и есть, вьюанглесы у превстейта и смещение игрока от превстейта к каррентстейту тоже не совпадают. Там в коде какая-то своя жизнь идёт, скорость и погрешность угла при движении гуляют туда-сюда.


Отправлено JPEG 09-06-2020 в 18:18:



Как убрать ограничение на уровень опускания/поднятий рук? Даже при стандартном cl_pitchdown 89 модель явно не опускает руки до этой отметки (и тут ещё у модели стоит blend XR -90 90, при стандартном значении вместо опускания рук после определённого угла наклоняется по оси ВСЯ модель). Перелопатил StudioModelRenderer.cpp но что-то ничего дельного не нашёл

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 09-06-2020 в 18:31:

Надо все анимации переделывать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 09-06-2020 в 18:35:

Цитата:
Yo Den писал:
и тут ещё у модели стоит blend XR -90 90, при стандартном значении вместо опускания рук после определённого угла наклоняется по оси ВСЯ модель

Цитата:
Дядя Миша писал:
Надо все анимации переделывать.

Наверное не все, а только те, в которых запечены бленды. То есть, придётся в каждой такой анимации ручками задирать и опускать игроку кости до нужных позиций. И наклон модели в коде убрать. Наверное, это где-то в StudioPlayerBlend. Значения надо покрутить.


Отправлено JPEG 09-06-2020 в 18:40:

ах, так вот в чём дело, спасибо) надо будет попробовать

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Crystallize 09-06-2020 в 18:53:

а это не то что питч делится на три?


Отправлено Дядя Миша 09-06-2020 в 19:15:

Цитата:
Ku2zoff писал:
Наверное не все, а только те, в которых запечены бленды

Ну да, я это и имел в виду.

Цитата:
Crystallize писал:
а это не то что питч делится на три?

выше чем запечено в анимации, они всё равно не подымутся. Но можно во вьювере посмотреть максимальный размах рук.

Добавлено 09-06-2020 в 22:15:

C++ Source Code:
1
void CStudioModelRenderer::StudioPlayerBlend( mstudioseqdesc_t *pseqdesc, int *pBlend, float *pPitch )
2
{
3
  // calc up/down pointing
4
  *pBlend = (*pPitch * 3);

Питч восстанавливается для подсчёта правильного бленда.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 09-06-2020 в 19:15:

Цитата:
Crystallize писал:
а это не то что питч делится на три?

если в StudioSetUpTransform angles[PITCH] = -angles[PITCH]; заменить на angles[PITCH] = 0; то перестаёт наклонятся модель, но пока толком не тестировал

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 09-06-2020 в 19:19:

Цитата:
Yo Den писал:
если в StudioSetUpTransform angles[PITCH] = -angles[PITCH]; заменить на angles[PITCH] = 0; то перестаёт наклонятся модель

Добавь условие if( m_pPlayerInfo ) angles[PITCH] = 0;
заменять - не надо.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 09-06-2020 в 19:19:

только я вообще не представляю, зачем они сделали этот наклон самой модели

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 09-06-2020 в 19:25:

Цитата:
Yo Den писал:
зачем они сделали этот наклон самой модели

Наверное потому, что в самих блендах наклона недостаточно.


Отправлено JPEG 09-06-2020 в 19:37:

Цитата:
Ku2zoff писал:
Наверное потому, что в самих блендах наклона недостаточно.

ну просто в qc в анимациях уровень бленда можно увеличить, у них почему-то по дефолту он не выкручен там

Добавлено 09-06-2020 в 22:35:

Цитата:
Дядя Миша писал:
Добавь условие if( m_pPlayerInfo ) angles[PITCH] = 0;
заменять - не надо.

я не учел, что оно на viewmodel влияет

Добавлено 09-06-2020 в 22:37:

отсюда видимо и наклон модели игрока, от вьюмодели хвост тянется

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 09-06-2020 в 19:43:

Цитата:
Yo Den писал:
зачем они сделали этот наклон самой модели

этож из кваки тянется.

Добавлено 09-06-2020 в 22:43:

Цитата:
Yo Den писал:
я не учел, что оно на viewmodel влияет

оно влияет на все модели абсолютно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 10-06-2020 в 18:13:

Цитата:
Дядя Миша писал:
Добавь условие if( m_pPlayerInfo ) angles[PITCH] = 0;
заменять - не надо.

что-то не хочет оно реагировать на это условие

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 10-06-2020 в 18:23:

ну тада if( m_pCurrentEntity->player )

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 10-06-2020 в 18:36:

Цитата:
Дядя Миша писал:
ну тада if( m_pCurrentEntity->player )

работает)

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено JPEG 11-06-2020 в 01:55:

ну шо могу сказать, не так уж и муторно. Через милку, я так понимаю, это вообще невозможно, но animiks выручает, просто волшебная прога

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Crystallize 11-06-2020 в 02:12:

Цитата:
Yo Den писал:
animiks

Надо её где-то забэкапить на форуме потому что не то что прогу а даже инфу о ней трудно загуглить даже если знаешь что искать.


Отправлено JPEG 11-06-2020 в 02:28:

Цитата:
Crystallize писал:
Надо её где-то забэкапить на форуме потому что не то что прогу а даже инфу о ней трудно загуглить даже если знаешь что искать.

даже автор нигде не указан)

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Cybermax 11-06-2020 в 13:37:

Цитата:
Crystallize писал:
Надо её где-то забэкапить на форуме потому что не то что прогу а даже инфу о ней трудно загуглить даже если знаешь что искать.


Самое верное это загрузить на moddb.com, gambanana.com gamer-lab.com потому что аттачи имею свойство исчезать впрочем как и ссылки на облака.


Отправлено Vadiman 14-06-2020 в 12:39:

Пытаюсь добавить новый мощный тип патронов

C++ Source Code:
case BULLET_PLAYER_050:
  pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((iDamage = 30) ? DMG_ALWAYSGIB : DMG_NEVERGIB) );



Можно ли сделать разрыв цели на куски в зависимости от его уровня здоровья? Или хотя бы рандомно?


PS:
C++ Source Code:
// Gargantua is immune to any damage but this
#define GARG_DAMAGE					(DMG_ENERGYBEAM|DMG_CRUSH|DMG_MORTAR|DMG_BLAST|DMG_BULLETU)

Добавил этот тип пули воздействию на Гаргантюа, однако урон по нему не проходит, просто ревет от боли.


Отправлено Ku2zoff 14-06-2020 в 15:42:

Цитата:
Vadiman писал:
Можно ли сделать разрыв цели на куски в зависимости от его уровня здоровья?

Можно. Оно так и есть, на самом деле. Но если хочешь указать какой-то конкретный уровень, то копай TakeDamage. Ставь условие if (bitsDamageType & DMG_BULLETU), а в нём проверку на уровень здоровья. Если здоровье меньше нужного уровня, вызывай GibMonster().
Вроде бы ты всё правильно сделал. Попробуй вместо DMG_BULLETU использовать уже имеющийся бит, например DMG_ENERGYBEAM. И сравни результат.
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_ENERYGEAM | ((iDamage >= 30) ? DMG_ALWAYSGIB : DMG_NEVERGIB) );


Добавлено 14-06-2020 в 22:42:

P.S. эти новые пули от гарга рикошетят?


Отправлено Vadiman 14-06-2020 в 22:30:

Цитата:
Ku2zoff писал:
Можно. Оно так и есть, на самом деле. Но если хочешь указать какой-то конкретный уровень, то копай TakeDamage. Ставь условие if (bitsDamageType & DMG_BULLETU), а в нём проверку на уровень здоровья. Если здоровье меньше нужного уровня, вызывай GibMonster().
Вроде бы ты всё правильно сделал. Попробуй вместо DMG_BULLETU использовать уже имеющийся бит, например DMG_ENERGYBEAM. И сравни результат.
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_ENERYGEAM | ((iDamage >= 30) ? DMG_ALWAYSGIB : DMG_NEVERGIB) );


Добавлено 14-06-2020 в 22:42:

P.S. эти новые пули от гарга рикошетят?


Спасибо, попробую)

Да, рикошетят и заставляют просто реветь. Даже если заменить на DMG_ENERGYBEAM или DMG_BLAST

Добавлено 15-06-2020 в 01:30:

Вообщем с первым вопросом все оказалось проще
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((pev->health < 20) ? DMG_ALWAYSGIB : DMG_NEVERGIB) );

А вот с гаргом пока неясно.

Еще такой вопросец: В player.cpp в TakeDamage решил сделать выкрики игрока при получении урона
C++ Source Code:
1
bool Painsnd = bitsDamage & (DMG_CLUB | DMG_FALL | DMG_CRUSH | DMG_BULLET | DMG_SLASH | DMG_ACID | DMG_SHOCK) ? true : false;
2
 
3
if( Painsnd ) //кричим
4
{
5
  switch (RANDOM_LONG(0,2))
6
  {
7
  case 0:
8
      EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/pain1.wav", 1, ATTN_NORM);
9
    break;
10
  case 1:
11
      EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/pain2.wav", 1, ATTN_NORM);
12
    break;
13
  case 2:
14
      EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/pain3.wav", 1, ATTN_NORM);
15
    break;
16
  }
17
}

Как сделать интервалы между срабатываниями звуков, чтобы при получении какой-нибудь автоматной очереди они не проигрывались слишком часто?


Отправлено Ku2zoff 14-06-2020 в 23:17:

C++ Source Code:
if (gpGlobals->time < m_flPainTime)
  return;

В начало функции CBasePlayer::Pain.
C++ Source Code:
m_flPainTime = gpGlobals->time + 1.0;

В её конец. m_flPainTime только задекларировать в классе игрока, в сейвдату добавлять не надо. Pain вызывать из CBasePlayer::TakeDamage по условию bool Painsnd, вместо продублированного кода.

Добавлено 15-06-2020 в 06:09:

Цитата:
Vadiman писал:
Вообщем с первым вопросом все оказалось проще

Неправильно. Надо так:
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((pEntity->pev->health < 20) ? DMG_ALWAYSGIB : DMG_NEVERGIB) );
А то делаешь проверку по здоровью стреляющего, а не того, в кого стреляют.

Добавлено 15-06-2020 в 06:17:

Цитата:
Vadiman писал:
Да, рикошетят и заставляют просто реветь. Даже если заменить на DMG_ENERGYBEAM или DMG_BLAST

Странно. У гарга большой иммунитет ко всем видам урона, кроме указанных в GARG_DAMAGE. Может быть дело именно в самой функции FireBullets? Не должно ничего рикошетить, если твой тип урона в списке GARG_DAMAGE.


Отправлено Vadiman 15-06-2020 в 14:26:

Цитата:
Ku2zoff писал:
C++ Source Code:
if (gpGlobals->time < m_flPainTime)
  return;

В начало функции CBasePlayer::Pain.
C++ Source Code:
m_flPainTime = gpGlobals->time + 1.0;

В её конец. m_flPainTime только задекларировать в классе игрока, в сейвдату добавлять не надо. Pain вызывать из CBasePlayer::TakeDamage по условию bool Painsnd, вместо продублированного кода.

Добавлено 15-06-2020 в 06:09:


Неправильно. Надо так:
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((pEntity->pev->health < 20) ? DMG_ALWAYSGIB : DMG_NEVERGIB) );
А то делаешь проверку по здоровью стреляющего, а не того, в кого стреляют.


Спасибо, теперь работает как надо
Цитата:

Добавлено 15-06-2020 в 06:17:


Странно. У гарга большой иммунитет ко всем видам урона, кроме указанных в GARG_DAMAGE. Может быть дело именно в самой функции FireBullets? Не должно ничего рикошетить, если твой тип урона в списке GARG_DAMAGE.

Вот то-то и оно. Скорее всего в самой функции надо ковырять.
Кстати по аналогичной схеме, например:
C++ Source Code:
//Броня не защищает от газа и яда
if (pev->armorvalue && !(bitsDamageType & (DMG_FALL | DMG_DROWN | DMG_POISON | DMG_NERVEGAS | DMG_PARALYZE | DMG_CLUB | DMG_SLASH)) )

когда я получаю DMG_POISON у меня все равно отнимается именно броня.

PS как считаешь, снайперская винтовка Barret со своим 0.50 калибром пробила бы шкурку Гарга? Может я зря парюсь просто и не стоит эту пушку так возвышать по мощности. Вон, терминаторам в кино бошки она сносила


Отправлено JPEG 18-06-2020 в 16:01:

хм, а возможно ли в коде гс сделать, чтобы ambient_generic звучал, как бы не располагаясь в 3д-пространстве (с постоянной громкостью каналов). Как, допустим, при воспроизведении его через play в консоли, не заходя в игру. Хочу сделать в кооп-моде динамический саундтрек, с постепенным наложением и убиранием инструментов за счёт касания триггеров

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 18-06-2020 в 16:11:

Ну вот только если всем команду play рассылать по сети, только так.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 18-06-2020 в 20:22:

Цитата:
Дядя Миша писал:
Ну вот только если всем команду play рассылать по сети, только так.

так при вызове play во время уже созданной игры спавнится звук с реагированием на пространство (кароч обычный амб-дженерик). Ну ладно, видимо никак. Можно, конечно, дублировать звуки по-разным концам карты, но это всё равно так себе эффект

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 19-06-2020 в 05:55:

Yo Den прицепи фмод, инициализируй его на несколько каналов, и крути каждый инструмент в отдельном канале. DSP эффектов не будет + формат можно не только лишь wav.


Отправлено Дядя Миша 19-06-2020 в 08:23:

Цитата:
Yo Den писал:
спавнится звук с реагированием на пространство

как ты это определил? play команда именно для локального звука. Она всегда привязана координатами к конкретному игроку.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 19-06-2020 в 09:24:

Цитата:
Vadiman писал:
PS как считаешь, снайперская винтовка Barret со своим 0.50 калибром пробила бы шкурку Гарга? Может я зря парюсь просто и не стоит эту пушку так возвышать по мощности. Вон, терминаторам в кино бошки она сносила

Проведи аналогию с чужими-преторианцами из AvP2. Мелкокалиберное их броню не берёт, а вот миниган и снайперка прошибают. В принципе, неплохой геймплейный ход.


Отправлено JPEG 19-06-2020 в 14:04:

Цитата:
Дядя Миша писал:
как ты это определил? play команда именно для локального звука. Она всегда привязана координатами к конкретному игроку.

возможно в won/xash так, но в стим-версии это не так, достаточно воспроизвести звук и отбежать на пару метров, покрутить головой

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 19-06-2020 в 14:58:

Понял. Он спавнится в точке нахождения игрока, но не следует за ним.
Тогда ой.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 02-07-2020 в 12:12:

Есть ли возможность сделать func_door_rotating моделью?
Проблема вот в чем. Парентом-то я модель двери прикрепляю к door_rotating (которая сама по себе состоит из null-браша (для коллизии) и ориджина. Но дело в том, что модель крепится по имени двери. А если задать двери имя, то по касанию она не будет открываться. Только по триггеру.

Я честно пытался накодить, но ничего не получилось. Закинул в door_rotating функции, скопипащенные из других энтитей - типа precache (void), а так же прекэш и спаун модели, если в энтити прописан параметр model и путь. Пробовал брать из монстров и из env_model. В обоих случаях все компилируется отлично, но в игре модель не появляется ни в какую. Полагаю, это потому, что это брашевая энтитя, а я брал из точечных…

Еще была мысля, что я нигде не задаю координаты спауна модели, думал может она будет по ориджину появляться хотя бы. Наверное я вообще бред сделал))


Отправлено Дядя Миша 02-07-2020 в 20:43:

Цитата:
Aynekko писал:
А если задать двери имя, то по касанию она не будет открываться. Только по триггеру.

Эхх, маладеж. ну приаттачь к двери еще и триггер

Добавлено 02-07-2020 в 23:43:

Цитата:
Aynekko писал:
Я честно пытался накодить, но ничего не получилось.

что именно ты пытался накодить?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 02-07-2020 в 21:07:

Цитата:
Дядя Миша писал:
ну приаттачь к двери еще и триггер

Я не приаттачил, а просто поставил в проеме. Это работает, но дверь открывается только в одну сторону. И приходится отходить назад, чтобы дать двери открыться.
Цитата:
Дядя Миша писал:
пытался накодить

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


Отправлено Дядя Миша 02-07-2020 в 21:27:

Цитата:
Aynekko писал:
пытался завести функцию спауна модели в этой энтити двери

одна энтить = одна модель, потому и не появляется.

Добавлено 03-07-2020 в 00:27:

Цитата:
Aynekko писал:
Это работает, но дверь открывается только в одну сторону

ну так приттачь и будет как будто совсем без триггера.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 12-07-2020 в 16:46:

Собственно, нубский вопрос. Как уменьшить скорость лазания по лестнице?
Просмотрел весь PM_LadderMove, там не нашел. При этом, судя по всему, используется другой вид передвижения, т.к. есть строчка
"pmove->movetype = MOVETYPE_FLY;"
Полез в FLY, там вообще ничего не понятно для меня. Где-то можно значения подшаманить?


Отправлено FreeSlave 12-07-2020 в 16:57:

Aynekko

Цитата:
Aynekko писал:
А если задать двери имя, то по касанию она не будет открываться. Только по триггеру.


Если используешь спирит (судя по наличию парентов и env_model), то там ведь есть флаг Force Touchable, с которым дверь ведёт себя так же, как вела бы без имени.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 12-07-2020 в 17:09:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 12-07-2020 в 18:11:

Цитата:
Дядя Миша писал:
MAX_CLIMB_SPEED

#define MAX_CLIMB_SPEED 200
Есть такое, да. Ставил 100 и даже 10 - ноль реакции почему-то.
Цитата:
FreeSlave писал:
Если используешь спирит

Не, ксаш-мод. Нет такого флага вроде бы. Поставил пустой флаг 1024, все равно не пашет. Наверное нет этой функции.

Добавлено 12-07-2020 в 21:11:

FreeSlave, огромное спасибо за подсказку. Утащил нужный код из спирита, теперь дверь открывается как надо и с моделькой)


Отправлено Дядя Миша 12-07-2020 в 18:20:

Цитата:
Aynekko писал:
Ставил 100 и даже 10 - ноль реакции почему-то.

ниможет быть

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 13-07-2020 в 06:06:

Цитата:
Aynekko писал:
Ставил 100 и даже 10 - ноль реакции почему-то.

И клиент и сервер перекомпиливал? Пробовал Rebuild All? Иногда бывают какие-то небольшие затупки при сборке. Я только что специально проверил - всё работает, скорость меняется. Может быть дело именно в том, что ты юзаешь ксашмод? Я-то на оригинальной халфе (сдк с гитхаба) работаю, а математика в player move там чуть-чуть по-разному написана, но это не должно влиять.


Отправлено Aynekko 13-07-2020 в 07:35:

Ku2zoff, спасибо, еще раз перепроверил. Оказывается строчка #define MAX_CLIMB_SPEED была прописана 2 раза - в playermove.cpp и player.cpp. Я менял только в move. Поставил одинаковое значение в обоих файлах и все заработало.


Отправлено JPEG 15-07-2020 в 10:59:

хм, а как сделать общую модель для p_ и w_ оружия? Сейчас пробовал спавнить вместо ворлд плееровскую модель оружия в void CMP5::Spawn( ) и поворачивать через pev->angles.ось -= и она почему-то только по y-оси крутится, на другие не реагирует (обнуляется где-то/из-за скелета?)

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Chyvachok 15-07-2020 в 13:30:

Yo Den надежнее будет как в ХДМ и последнем HLWE сделано, там тоже p_ модель и для рук и для предмета на земле используеться, там добавлена еще одна анимация для p_ модели где оружие лежит на земле.


Отправлено Ku2zoff 15-07-2020 в 13:58:

Цитата:
Yo Den писал:
поворачивать через pev->angles.ось -=

Не годится. p_модели бывают с разным скелетом и в разном положении. Устанешь вручную подбирать значения. Намного лучше использовать две анимации - первая в руках, вторая на земле. Сделать это можно за пару минут: декомпилишь модель, берёшь анимацию, и опускаешь кость, к которой прикреплено оружие, на пол. Заодно поворачиваешь его как душе угодно. Компишишь обратно с двумя анимациями. Profit!
Я тут вспомнил вот. Маззлфлеши от третьего лица крепятся к аттачменту игрока, и могут не попадать на конец ствола, а торчать чёрти где. Чтобы это исправить, надо завести аттачмент для p_модели и рисовать маззлфлеш на нём. Заодно можно добавить аттачмент для выброса гильз. В DoD так сделано.


Отправлено JPEG 16-07-2020 в 08:54:

Цитата:
Chyvachok писал:
надежнее будет как в ХДМ и последнем HLWE сделано, там тоже p_ модель и для рук и для предмета на земле используеться, там добавлена еще одна анимация для p_ модели где оружие лежит на земле.


Цитата:
Ku2zoff писал:
Не годится. p_модели бывают с разным скелетом и в разном положении. Устанешь вручную подбирать значения. Намного лучше использовать две анимации - первая в руках, вторая на земле. Сделать это можно за пару минут: декомпилишь модель, берёшь анимацию, и опускаешь кость, к которой прикреплено оружие, на пол. Заодно поворачиваешь его как душе угодно. Компишишь обратно с двумя анимациями. Profit!
Я тут вспомнил вот. Маззлфлеши от третьего лица крепятся к аттачменту игрока, и могут не попадать на конец ствола, а торчать чёрти где. Чтобы это исправить, надо завести аттачмент для p_модели и рисовать маззлфлеш на нём. Заодно можно добавить аттачмент для выброса гильз. В DoD так сделано.


спасибо, не знал про такой способ, буду пробовать

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 16-07-2020 в 09:57:

В ксаш-моде в незапамятные времена сделал эту штуку, потом Хвидер к себе утащил в XDM, потом кажется и в SvenCoop ребята утащили, во второй параное оно так же.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 16-07-2020 в 13:51:

Хочу отредактировать эффект при падении, когда экран скашивается вправо. У меня ксаш-мод. Что бы ни делал, изменений в игре ноль. На клиенте в playermove.cpp есть такой код:

C++ Source Code:
1
// Knock the screen around a little bit, temporary effect
2
pmove->punchangle[ 2 ] = pmove->flFallVelocity * 0.013;	// punch z axis
3
if ( pmove->punchangle[ 0 ] > 8 )
4
{
5
  pmove->punchangle[ 0 ] = 8;
6
}

Ну вот оно же по идее? Что я тут только не делал - менял 0.013 на 10.013, менял 8 на 58…эффекта вообще никакого. Такой же скос вправо, как и всегда. Я даже удалял целиком строчку "pmove->punchangle[ 2 ]", все равно скашивает. Уже перерыл все исходники, но ничего более похожего, чем это, не могу найти. Плиз хелп!


Отправлено JPEG 16-07-2020 в 14:10:

Цитата:
Aynekko писал:
Хочу отредактировать эффект при падении, когда экран скашивается вправо. У меня ксаш-мод. Что бы ни делал, изменений в игре ноль. На клиенте в playermove.cpp есть такой код:
C++ Source Code:
1
// Knock the screen around a little bit, temporary effect
2
pmove->punchangle[ 2 ] = pmove->flFallVelocity * 0.013;	// punch z axis
3
if ( pmove->punchangle[ 0 ] > 8 )
4
{
5
  pmove->punchangle[ 0 ] = 8;
6
}

Ну вот оно же по идее? Что я тут только не делал - менял 0.013 на 10.013, менял 8 на 58…эффекта вообще никакого. Такой же скос вправо, как и всегда. Я даже удалял целиком строчку "pmove->punchangle[ 2 ]", все равно скашивает. Уже перерыл все исходники, но ничего более похожего, чем это, не могу найти. Плиз хелп!

http://hlfx.ru/forum/showthread.php?threadid=4047 вроде тут есть ответ

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Aynekko 16-07-2020 в 14:31:

Yo Den, спасибо большое, закомментировал "pev->punchangle.x = 0;" и поставил по оси Х вместо Z (pmove->punchangle[ 0 ]), сделал что хотел.


Отправлено SNMetamorph 17-07-2020 в 04:39:

Цитата:
Дядя Миша писал:
во второй параное оно так же

Да, потому что мы из второй паранои к себе утащили

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Aynekko 19-07-2020 в 18:54:

Добавил у мп5 небольшую тряску при выстреле с подстволки.

C++ Source Code:
UTIL_ScreenShake( GetAbsOrigin(), 5.0, 150.0, 0.5, 0, true );

Не могу понять, как сделать так, чтобы этот шейк срабатывал там, где находится игрок. Столкнулся с проблемой, что после первого выстрела shake остается на том же месте, где был выстрел. Ты уже ушел куда-то, а тряска при выстреле будет только в том месте, где ты первый раз выстрелил. Поставил предпоследний параметр 0, он же радиус и вроде как проблема исчезла. Но есть подозрение, что это неправильно и шейк остается на том же месте, просто не проверяет радиус теперь. Как бы его заставить брать координаты игрока?


Отправлено Дядя Миша 19-07-2020 в 21:25:

m_pPlayer->GetAbsOrigin()

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 20-07-2020 в 14:06:

Спасибо большое, заработало, я пытался использовать m_pPlayer->pev, а про это что-то даже не подумал


Отправлено JPEG 21-07-2020 в 18:13:

Каким образом подружить gl fog со скаем, как это сделали в cs 1.6 и вроде dod? По всем туторам, что я видел https://twhl.info/wiki/history/Tutorial%3A_Coding_Fog небо пропадает, как под водой

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 21-07-2020 в 18:16:

оно не пропадает, оно затуманивается

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Vadiman 23-07-2020 в 20:48:

Цитата:
Ku2zoff писал:
Проведи аналогию с чужими-преторианцами из AvP2. Мелкокалиберное их броню не берёт, а вот миниган и снайперка прошибают. В принципе, неплохой геймплейный ход.


Сделал. В итоге гарг убивается с 4 выстрелов из баррета. Дефолтный дамаг винтовки 80, где-то походу множитель урона стоит, потому, что здоровье гарга 800. В итоге сделал чтобы дамаг от баррета делился на 7, все же пусть винтовка и сильная, но ее калибр такую броню будет с трудом пенетрировать, иначе это слишком имбово выходит.

PS Я вот ютубчик посмотрел, кое-где баррет даже бетонные шары со спортзалов не раскалывает, не говоря уже о бронированном стекле, как я и говорил, возможно зря я с этим парился


Отправлено JPEG 28-07-2020 в 20:46:

качнул отсюда сборник туторов для кингпина http://download.kingpin.info/index..../maps/tutorial/

забавно, всегда думал, что path_corner и лайт-стили (а-ля LIGHT_STYLE(1, "mmnmmommommnonmmonqnmmo") это valve придумали, а там абсолютно всё тоже самое, видимо это наследие кваки 2

Добавлено 28-07-2020 в 23:46:

да и func_door_rotating тоже

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Crystallize 29-07-2020 в 01:16:

JPEG простой поезд есть уже в первокваке, я думаю по патч-корнерам он там и ездит.


Отправлено Дядя Миша 29-07-2020 в 07:40:

Цитата:
JPEG писал:
забавно, всегда думал, что path_corner и лайт-стили (а-ля LIGHT_STYLE(1, "mmnmmommommnonmmonqnmmo") это valve придумали, а там абсолютно всё тоже самое, видимо это наследие кваки 2

первой

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 29-07-2020 в 17:23:

у меня оружие не перезаряжаться как исправить ?

__________________
илья


Отправлено Дядя Миша 29-07-2020 в 18:24:

По Сорсу специалисты еще остались?
В первой халфе как известно эти магические числа intensity^3 * 0.1 для освещённости. В сорсе это дерьмо, понятно выбросили. Можно ли там воспроизвести тот же радиус, что и в голдсорсе и какие параметры надо вбивать в настройки лайта?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 31-07-2020 в 19:16:

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

Пример с одним спрайтом: https://youtu.be/alD70JTA91k



В спавн написал

C++ Source Code:
1
m_p2dNpcIdle = CSprite::SpriteCreate( "sprites/agrunt-idle.spr", pev->origin, TRUE );
2
 
3
m_p2dNpcIdle->SetTransparency( kRenderTransTexture, 255, 255, 255, 255, kRenderFxNoDissipation );
4
m_p2dNpcIdle->SetAttachment( edict(), pev->body );
5
m_p2dNpcIdle->SetScale( 1.0 );
6
m_p2dNpcIdle->pev->framerate = 10.0;
7
m_p2dNpcIdle->TurnOn( );


А как сделать смену анимации, не знаю.
Если, например, прописать в void CHGrunt :: RunTask ( Task_t *pTask )

UTIL_Remove( m_p2dNpcIdle );
m_p2dNpcIdle = NULL;
для удаления старой анимации

и создать новую через аналогичную
m_p2dNpcRun = CSprite::SpriteCreate( "sprites/agrunt-run.spr" в ран-таске, а в спавне соответственно также занулить анимацию бега, то там всё видимо зацикливается и не работает, как это можно правильно реализовать?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 31-07-2020 в 19:32:

У спрайта есть групповые кадры, т.е. 1 кадр - полноценная анимация, но помоему они не работают в голдсорсе.

Добавлено 31-07-2020 в 22:32:

Да и монстру ты модельку спрайтом никак не заменишь, поскольку AI опирается на эвенты в анимации, а у спрайта их нет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 31-07-2020 в 19:46:

Цитата:
Дядя Миша писал:
У спрайта есть групповые кадры, т.е. 1 кадр - полноценная анимация, но помоему они не работают в голдсорсе.

Добавлено 31-07-2020 в 22:32:

Да и монстру ты модельку спрайтом никак не заменишь, поскольку AI опирается на эвенты в анимации, а у спрайта их нет.

так моделька есть, она просто невидимая, а спрайт атачится к ней

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Eljeyna 13-08-2020 в 07:57:

Возможно, подниму древний вопрос, но копаюсь в исходниках совсем недавно и хочу спросить про замедление игрока, когда тот активирует эвент "+use" или, проще говоря, нажимает на "Использовать" (дефолт E). Пробовал убирать флаг и пропуск функции PlayerUse, но ничего не дало – видимо, не там копаю.

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

XashXT 0.82 rev 2 + Half-Life 1

__________________
El. Psy. Kongroo.


Отправлено Дядя Миша 13-08-2020 в 08:28:

Что-то такое в playermove.cpp

C++ Source Code:
1
// Slow down, I'm pulling it! (a box maybe) but only when I'm standing on ground
2
if ( ( pmove->onground != -1 ) && ( pmove->cmd.buttons & IN_USE) )
3
{
4
  VectorScale( pmove->velocity, 0.3, pmove->velocity );
5
}

Это из оригинального SDK. Но комментарий должен остаться таким же.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Eljeyna 13-08-2020 в 08:43:

Дядя Миша, моя благодарность)
Проверил, все работает.

__________________
El. Psy. Kongroo.


Отправлено Aynekko 29-08-2020 в 12:26:

Хочу сделать кастомного гранта с размером 1.15. Все получилось, но есть вопрос. В спауне я задал pev->scale 1.15, так же поменял hull'ы в 1.15 раз. Грант действительно стал больше, как и надо, но хитбокс остался таким же. На уровне носа попадаю, на уровне глаз уже пули сквозь летят. Мне подсказали, что проще отскейлить саму модель - это в общем-то помогло, но можно ли это сделать кодом?


Отправлено Дядя Миша 29-08-2020 в 13:13:

Со скейлом физики там помоему остались проблемы. Лучше саму модельку увеличить - надёжнее.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 29-08-2020 в 15:49:

Цитата:
Aynekko писал:
но хитбокс остался таким же.

Потому что в серверном студиомодельрендерере (внутри движка) то ли нет вообще поддержки скейла, то ли она неправильно работает, как подметил ДМ. Проблему может решить использование функции SV_StudioSetupBones. Можешь дёрнуть её из сорцев ReGameDLL. По крайней мере, тебе будет доступен весь нужный функционал по работе с моделями из серверной дллки.


Отправлено Дядя Миша 29-08-2020 в 16:37:

Цитата:
Ku2zoff писал:
Проблему может решить использование функции SV_StudioSetupBones.

она и так есть в ксаш-моде.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-08-2020 в 07:27:

Всем доброго дня. Ткните пожалуйста носом, как быстро заменить текстуру на свою собственную. Достаточно ли просто подменить gl_texturenum, или же как в Паранойе порядок действий такой:

1. Пробегаемся по сурфейсам (msurface_t).
2. Находим текстуру сурфейса (texture_t).
3. Подменяем её на загруженную извне с помощью Bind2DTexture.


Отправлено Дядя Миша 30-08-2020 в 11:03:

Пробегаемся по model->textures.
Находим текстуру, которую хотим заменить.
Биндим gl_texturenum
Вызываем glTexImage2D, грузим новые данные.
Сделать это надо один раз при загрузке. Ну если монитор, тогда каждый кадр через самбимидж или как-то еще.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-08-2020 в 15:12:

Я обошёлся самым простым вариантом:

C++ Source Code:
surf[i].texinfo->texture->gl_texturenum = texture;
где texture - результат
C++ Source Code:
glBindTexture(GL_TEXTURE_2D, texture);
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, ScreenWidth, ScreenHeight, 0);
Если хочется иметь в игре мониторы с разным соотношением сторон, чтобы картинку в них не плющило, получается нужно задавать соответствующее соотношение сторон для вьпорта, откуда берётся текстура-картинка. А текстуру-монитор натягивать на браш в скейле 1:1. Это такое моё предположение. А как картинку правильно повернуть, чтобы она не была вверх ногами или слева направо, не извращаясь с поворотами текстуры на браше?

Добавлено 30-08-2020 в 22:12:

Чтобы не было путаницы, объясню: первая задача - сделать брашевые мониторы. Вторая - подгрузка внешних полноцветных текстур. Благо, искать ничего нигде не надо, Gigapixel AI неплохо справляется с апскейлом. И третья, необязательная - рисование скайбокса при "убитых" фейсах неба.


Отправлено Дядя Миша 30-08-2020 в 16:46:

а texture чему равен?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 31-08-2020 в 03:22:

Дядя Миша texture равен тому, что выдаёт glCopyTexImage2D. Виду из глаз игрока. Я, можно сказать, повторил эксперимент БУзера, он нечто подобное постил на хлру много лет назад:
https://i.imgur.com/POSxvrX.jpg


Отправлено Дядя Миша 31-08-2020 в 07:46:

C++ Source Code:
glBindTexture(GL_TEXTURE_2D, texture);

texture чему равен?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 31-08-2020 в 10:41:

Вопрос такой, задаю звук текстурам в materials.txt и при добавлении очередной текстуры у предыдущей звук снова сменился на generic, хотя она прописана. Если удалить новую текстуру из списка, то к предыдущей звук возвращается.
Написано, что лимит в файле 512, хотя строчек в файле около 300 - я уже не говорю про то, что между ними пробелы даже есть.
Опытным путем заметил, что можно заставить обе эти текстуры звучать, если удалить еще какие-то строчки. То есть явно идет упор в лимит. Почему, и как его обойти?

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

C++ Source Code:
1
void TEXTURETYPE_Init()
2
{
3
  char buffer[1024];   // поставил 1024 вместо 512
4
  int i, j;
5
  byte *pMemFile;
6
  int fileSize, filePos;
7
 
8
  if (fTextureTypeInit)
9
    return;
10
 
11
  memset(&(grgszTextureName[0][0]), 0, CTEXTURESMAX * CBTEXTURENAMEMAX);
12
  memset(grgchTextureType, 0, CTEXTURESMAX);
13
 
14
  gcTextures = 0;
15
  memset(buffer, 0, 1024);  // 1024 вместо 512
16
 
17
  pMemFile = g_engfuncs.pfnLoadFileForMe( "sound/materials.txt", &fileSize );
18
  if ( !pMemFile )
19
    return;
20
 
21
  // for each line in the file...
22
    while (memfgets(pMemFile, fileSize, filePos, buffer, 1023) != NULL && (gcTextures < CTEXTURESMAX))    // 1023 вместо 511
23
      .............
24
    .........
25
    .....
26
  {


Отправлено Дядя Миша 31-08-2020 в 11:44:

То буффер для чтения, его трогать не надо.
Ищи чему равен CTEXTURESMAX и увеличивай его.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 31-08-2020 в 12:01:

Не помогло. Поставил его и 1024, и 2048.
Заметил вот что: я закомментил три строчки в материалс, начинающиеся на Y (другой материал) - ничего не изменилось. Потом я их вернул на место, и закомментил ОДНУ строчку D (именно там проблема) - текстура зазвучала. Такое ощущение, что достигнут лимит DIRT текстур.

Но их там очень мало, других текстур в 2-3 раза больше


Отправлено Ku2zoff 31-08-2020 в 14:18:

Цитата:
Дядя Миша писал:
texture чему равен?

Странно, gEngfuncs.Con_DPrintf упорно выводит 0.

Добавлено 31-08-2020 в 21:18:

Цитата:
Aynekko писал:
Такое ощущение, что достигнут лимит DIRT текстур.

Ты пробовал переименовывать проблемные текстуры? Может быть проблема с парсингом имени?


Отправлено Дядя Миша 31-08-2020 в 14:55:

Цитата:
Ku2zoff писал:
Странно, gEngfuncs.Con_DPrintf упорно выводит 0.


Переменные с божественной помощью сами-собой заполняются?
Как ты кодишь?....

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 31-08-2020 в 17:19:

Разобрался. Я не инициализировал texture. Что в ксаше, что в паранойе, исходное значение texture_id равно (1<<25). А у меня было 0. Теперь в консоль выдаётся номер в районе 33 миллионов. Проверил на мониторах старого ксаша - так и должно быть. Нарисовал новую текстуру через glBegin, т.к. подмена gl_texturenum теперь не работает. Ну такое себе, фпс упал примерно в три раза со 120 до 45 при восьми мониторах в кадре.
Мониторы оставлю такими, какие есть. Единственная проблема с ними в том, что на новом рендерере (который юзает VBO кажется), glCopyTexImage2D ведёт себя неадекватно: захватывает только уголок экрана. Какая-то трабла с координатами.


Отправлено Дядя Миша 31-08-2020 в 18:06:

Цитата:
Ku2zoff писал:
исходное значение texture_id равно (1<<25)

Скажем так - там было заведомо большое число, которое больше ни с чем не пересекается.

Цитата:
Ku2zoff писал:
glCopyTexImage2D ведёт себя неадекватно: захватывает только уголок экрана. Какая-то трабла с координатами.

норм, он так и должен себя вести.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 31-08-2020 в 18:49:

Цитата:
Ku2zoff писал:
Может быть проблема с парсингом имени?

Так она же работает, если убрать какую-то другую D текстуру.


Отправлено Дядя Миша 31-08-2020 в 19:27:

Механизм подхвата детальных текстур напрочь кривой и косой.
К примеру у него лимит имени - 13 символов почему-то. А текстуры бывают и 15 символов. Вот где-то не влезло и всё. Надо увеличить CBTEXTURENAMEMAX до 16.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 31-08-2020 в 19:37:

Цитата:
Дядя Миша писал:
норм, он так и должен себя вести.

На старом рендерере в мониторе полный кадр, на новом - только крайний угол кадра.
Можно это как-то исправить? Или это принципиально невозможно, т.к. специально захватывается не весь экран, а только часть, чтобы было меньше тормозов?

Добавлено 01-09-2020 в 02:37:

Попутный вопрос: как ни пытался загрузить расширения glLockArraysEXT и glUnlockArraysEXT - не грузятся. Хотя, если прилинковать к клиентке cvaLib.lib - всё работает, там вызовы этих расширений есть. Это какая-то хитрость, или они не юзаются, если не поддерживаются? И обязательно ли локать/анлокать массивы? Без вызова этих функций мониторы продолжают работать.


Отправлено Aynekko 31-08-2020 в 19:47:

Цитата:
Дядя Миша писал:
Надо увеличить CBTEXTURENAMEMAX до 16.

Да увеличивал уже, ставил 26 (раз все вдвое увеличивал, то и тут гуляем), все равно без толку. А текстура, между тем, называется me_grass
В общем, буду уменьшать файл и избавляться от ненужных халфовских текстур, все равно спасибо что пытались помочь.


Отправлено Дядя Миша 31-08-2020 в 20:14:

Цитата:
Ku2zoff писал:
Можно это как-то исправить?

ну вьюпорт так задан, маленький.

Цитата:
Ku2zoff писал:
glLockArraysEXT и glUnlockArraysEXT - не грузятся

а как ты пытался?

Цитата:
Ku2zoff писал:
И обязательно ли локать/анлокать массивы?

это для Compiled Vertex Array. Седая древность.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 31-08-2020 в 20:51:

Цитата:
Дядя Миша писал:
а как ты пытался?

wglGetProcAddress. Все расширения так грузятся. Пробовал юзать glew и glext - без разницы, не поддерживается.


Отправлено Дядя Миша 31-08-2020 в 22:04:

Ну имя ты какое задавал для wglGetProcAddress?
К тому же можно еще попробовать через стандартный виндовый GetProcAddress

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 31-08-2020 в 23:18:

Цитата:
Дядя Миша писал:
Ну имя ты какое задавал для wglGetProcAddress?

C++ Source Code:
SAFE_GET_PROC(glLockArraysEXT, PFNGLLOCKARRAYSEXTPROC, "glLockArraysEXT");
По аналогии с загрузкой других расширений в старом ксашмоде. Через GetProcAddress тоже пробовал. Не получилось.

Добавлено 01-09-2020 в 06:18:

Разобрался. Это я дурак - совал функции glLockArraysEXT в качестве аргументов mon->firstvertex и mon->numvertices без проверки, существует ли mon. В который раз убедился, что надо на этапе загрузки выводить всё в консоль, чтобы не гадать, что поддерживается, а что нет.


Отправлено KorteZZ 01-09-2020 в 06:52:

Такой вопрос:
В Ксаше монстры после смерти ещё некоторое время блокируют путь игроку. Кодер сделал это, но в итоге трупаки перестали разлетаться на ошметки при взрыве. Как от этого избавиться и сделать так, чтобы они не блокировали путь игроку и при этом продолжали разлетаться на ошметки?

__________________

Killing Floor: Horzine Outbreak


Отправлено Ku2zoff 01-09-2020 в 07:29:

Цитата:
KorteZZ писал:
в итоге трупаки перестали разлетаться на ошметки при взрыве.

pev->solid = SOLID_NOT?

Есть один неплохой способ. В pm_shared.c нужно завести функцию int PM_Ignore. Привести её к такому виду:
C++ Source Code:
1
int PM_Ignore(physent_t *pe)
2
{
3
  if (pe->iuser3 == -1)
4
    return 1;
5
 
6
  return 0;
7
}
Потом, согласно моему тутору, вставить вызовы этой функции куда надо, заменяя вызовы каких надо функций. Далее, надо всего лишь поставить мёртвому монстру pev->iuser3 = -1. Можно это сделать в defaultai.cpp, функция GetScheduleOfType, кейс SCHED_DIE:
C++ Source Code:
case SCHED_DIE:
{
  pev->iuser3 = -1;
  return &slDie[ 0 ];
}
А можно в функции CBaseMonster :: Killed. Не знаю, где надёжнее, я не тестировал.

Добавлено 01-09-2020 в 14:29:

Есть ещё один способ: UTIL_SetSize(pev, g_vecZero, g_vecZero). Но он плох тем, что монстр опять же перестаёт получать урон, а потом ему надо заново задавать размеры, когда анимация смерти закончилась.


Отправлено KorteZZ 01-09-2020 в 08:21:

Спасибо большое! Попробуем!

__________________

Killing Floor: Horzine Outbreak


Отправлено Дядя Миша 01-09-2020 в 08:35:

Цитата:
Ku2zoff писал:
"glLockArraysEXT"

попробуй ARB или вообще без EXT.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 01-09-2020 в 09:22:

По мне так проблема с монстрами даже не в том, что они преграждают путь для игрока во время умирания (игрок может и подождать), а в том, что впоследствии их трупы мешают движению всяких брашевых энтить типа дверей и пушаблей. Соответственно для передвижения пушабли приходится эти самые трупы разбивать, а уж сколько раз трупы хедкрабов застревали в дверях - не пересчитать. С одной стороны, в этом есть смысл, но чаще всего лишь мешает. Ku2zoff, может напишешь тутор на этот счёт? Разумеется, с сохранением возможности разбивать/взрывать трупы.

__________________
I'm on github
I'm on opendesktop.org


Отправлено KorteZZ 01-09-2020 в 09:39:

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

__________________

Killing Floor: Horzine Outbreak


Отправлено Ku2zoff 01-09-2020 в 09:52:

Цитата:
FreeSlave писал:
может напишешь тутор на этот счёт?

Даже не знаю, как лучше было бы это сделать. Физика энтить запрятана в движок, интерфейсов для её вызовов из дллки кроме StartFrame в голдсорсе нету. А через то, что имеется, придётся делать хаками. Вообще, для регулировки коллизии есть функция pfnShouldCollide, но она сломана с тех самых пор, как её добавили. Исправлена только в ReHLDS и ксаше. Первый - это выделенный сервер для сраной каэсочки, а во втором есть нормальный интерфейс для физики, так что этот вариант отпадает. Делать через pev->groupinfo такое себе: пушабли перестанут коллайдить не только с трупами, но и друг с другом. А может быть для пушаблей это не сработает, у них ведь вообще уникальный мувтип. Я бы сделал проще: чтобы пушабли и двери наносили трупам дамаг и "кусковали" их мгновенно при касании.

Добавлено 01-09-2020 в 16:52:

Цитата:
Дядя Миша писал:
попробуй ARB или вообще без EXT.

Уже исправил. Поначалу бессмысленно линковал в клиентку то glext, то glew, и вылетало. Я завёл проверку в ините: если wglGetProcAddress не возвращает glLock\UnlockArraysEXT - мониторы не работают. Вылетать перестало. Ну я грешным делом решил, что расширения могли быть дропнуты на уровне драйвера, тащем-то им уже по 20 лет. Оказалось, линковать вообще ничего не нужно, достаточно просто вызвать wglGetProcAddress. После этого вылеты продолжились, как оказалось из-за того, что я загонял NULL аргументы в glLockArraysEXT. Кстати, когда эти функции заработали, фпс упал на 10-15 пунктов.


Отправлено Crystallize 01-09-2020 в 09:57:

Цитата:
KorteZZ писал:
А туториал должен обучать. Какие проблемы? Как их можно решить? Что и для чего делается? И прочие вопросы, которые появляются в головах новичков.

А вы видели когда-нибудь такие туториалы?


Отправлено Дядя Миша 01-09-2020 в 10:04:

Цитата:
Ku2zoff писал:
Кстати, когда эти функции заработали, фпс упал на 10-15 пунктов.

так надо сначала скомпилировать эти арраи. Ксерокс в своё время конечно тоже отжог - монитор это 4 вертекса. Нахрена он этот полигон компилировал в отдельный массив есть величайшая загадка.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено KorteZZ 01-09-2020 в 10:16:

Crystallize
К сожалению, такое - редкость. Видел на ютубе по монтированию видео в Вегасе. Там чел толково объяснял что да как и почему.

__________________

Killing Floor: Horzine Outbreak


Отправлено Ku2zoff 01-09-2020 в 13:33:

Цитата:
Crystallize писал:
А вы видели когда-нибудь такие туториалы?

Туториалы нашего сообщества это, по сути, не обучающие статьи, а примеры работ с описанием. И хорошо, если с описанием, а не просто "Этот код сюда, а этот код туда". Я в последнее время стараюсь описывать что и для чего делается. Внутри своего кода для себя оставляю комменты, чтобы через долгое время быстро вспомнить, что и зачем.


Отправлено Ku2zoff 03-09-2020 в 18:03:

В общем, закончил мониторы. Теперь без зависимости от cvaLib.lib. Обнаружил неприятный бажочек: они видны сквозь стены. Отсечение по фрустуму работает, если отвернуться, фпс вырастает. Как можно это поправить?


Отправлено Дядя Миша 03-09-2020 в 18:54:

включить запись в буффер глубины

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-09-2020 в 20:15:

Дядя Миша нет, это не то. Я не совсем правильно описал проблему. Они на самом деле не видны, но считаются видимыми, когда попали во фрустум, даже если между ними и игроком стенка, и для них рисуются дополнительные проходы, что просаживает фпс. Был бы вменяемый способ проверки видимости (или попадания в PVS) на клиенте, я бы уже исправил.

Добавлено 04-09-2020 в 03:15:

Не нашёл ничего лучше, как просто тупо трейсить все вертексы монитора по очереди. Для экономии сделал так, чтобы при обнаружении хотя бы одного видимого вертекса цикл прерывался.

C++ Source Code:
1
for (int i = 0; i < mon->numvertices; i++)
2
{
3
  vec3_t point = g_MonitorVerts[mon->firstvertex + i].point;
4
 
5
  pmtrace_t trace;
6
  gEngfuncs.pEventAPI->EV_PushPMStates();
7
  gEngfuncs.pEventAPI->EV_SetSolidPlayers(-1);
8
  gEngfuncs.pEventAPI->EV_SetTraceHull(2);
9
  gEngfuncs.pEventAPI->EV_PlayerTrace(point, v_origin, PM_STUDIO_IGNORE | PM_GLASS_IGNORE, -1, &trace);
10
  gEngfuncs.pEventAPI->EV_PopPMStates();
11
 
12
  if (trace.fraction >= 1.0)
13
    break;
14
 
15
  mon->visible = false;
16
}

Прирост фпс хороший.


Отправлено thambs 03-09-2020 в 20:49:

Ku2zoff
А если через дыру в стене смотришь на монитор?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Ku2zoff 03-09-2020 в 21:40:

thambs значит надо добавить пятый трейс из центра. Хотя проще не допускать ситуации с дырами в стенах. Можно конечно отключить все проверки. У меня на дохлой видеокарте GT220 при восьми активных мониторах с вьпортами 512х512 около 140 фпс. Представим, что мониторов во фрустуме будет максимум 4, и сцены в них будут содержать больше полигонов. На любой более-менее современной видеокарте в FullHD будет уж точно больше 100 фпс.


Отправлено Дядя Миша 03-09-2020 в 22:35:

Цитата:
Ku2zoff писал:
Был бы вменяемый способ проверки видимости (или попадания в PVS) на клиенте, я бы уже исправил.

так исправь. Из model_t торчит всё необходимое для реализации PVS.
А в ксаш-моде есть пример как это подключить.

Цитата:
Ku2zoff писал:
Не нашёл ничего лучше, как просто тупо трейсить все вертексы монитора по очереди

а это у тебя получился окклюжен куллинг с растеризацией через трассировку

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено thambs 03-09-2020 в 22:37:

Ku2zoff
Так ведь смотреть можно и не на центр, да и дырка в стене может быть, например щелью, или ещё каким нетривиальным препятствием. Это всё очень ненадёжно.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 04-09-2020 в 09:15:

А вот для того и делают порталы. Портал это как раз случай видимости одного объекта внутри другого.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 04-09-2020 в 10:17:

Цитата:
Дядя Миша писал:
А в ксаш-моде есть пример как это подключить.

Это ты про SV_BoxInPVS? Если да, то что там надо сувать в качестве visbytes функции Mod_DecompressPVS?


Отправлено Дядя Миша 04-09-2020 в 11:12:

Очень странный вопрос. leaf->compressed_pvs очевидно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 04-09-2020 в 12:33:

C++ Source Code:
Mod_DecompressPVS( leaf->compressed_vis, world.visbytes );

Что такое world.visbytes? Это хранится в бсп или формируется на основе данных, полученных из бсп?


Отправлено Дядя Миша 04-09-2020 в 17:18:

Ku2zoff а чуть-чуть ниже промотать в том же файле? Нет надо сразу на форум.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 09-09-2020 в 14:43:

Есть 2 лайта с одинаковыми именами. На одном из них флажок Initially dark. По итогу оба выключены и по имени оба включаются. На деле должно быть, как вы уже поняли, один изначально включенный и по вызову они меняются местами.
При этом, если задать им разные имена, то все нормально. Но приходится вносить еще одно имя в менеджер…
Не то чтобы это сильно напрягает, но из-за чего это может быть? В самом лайте покопался, там про targetname есть одна строчка в спауне, стоит комментарий "inert light".

Еще один знакомый маппер вспомнил, что у него была похожая проблема с несколько door_rotating, когда у всех было одно имя, но у некоторых проставлена галка start open.


Отправлено thambs 09-09-2020 в 14:51:

Aynekko
У них же один лайтстайль тогда получается. По разным именам -- разные, управляй ими через реле или мультиманагер, например.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Aynekko 09-09-2020 в 15:04:

Интересно, а зачем нужно было делать зависимость от имени?
Я собственно так и делаю, как же еще


Отправлено Дядя Миша 09-09-2020 в 15:31:

Цитата:
Aynekko писал:
Интересно, а зачем нужно было делать зависимость от имени?

можешь вручную лайтстили назначать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Vadiman 24-09-2020 в 15:08:

Всем привет!
1) Можно ли сделать хорошо видимые трассеры? Как вообще разнообразить их в более зрелищный вид, насколько первая халфа может? Например хотелось бы у дробовика подчеркнуть мощь выстрела все этой дроби
2) Можно ли сделать более-менее реалистичный боб оружия, а не взад-вперед, или лево-право?


Отправлено Ku2zoff 25-09-2020 в 09:52:

1. Трейсеры и так видимые. Просто у дробовика они не используются. В какой-то старой версии ксаша, несовместимой с халфой был код трейсеров (и вроде бы ещё лучей) в клиентке. Так вот, они визуально мне больше нравились, чем халфовские. А вообще, есть особая темпэнтитя pEfxAPI->R_UserTracerParticle, которой можно задать толщину, цвет, скорость. Вот и получатся кастомные трейсеры.
2. Туторов на эту тему вагон и маленькая тележка. Даже я кое-что по молодости выкладывал здесь на форуме. ИМХО, наилучший результат даёт смешение двух БОБов: один для камеры, второй для оружия. Если сейчас выкопаю древнюю версию своего мода, запишу видео и выложу здесь.

Добавлено 25-09-2020 в 16:52:

Нашёл в загашниках папочку со старым модом, записал видео. Как я выше указал, здесь два боба с разным ритмом.


Отправлено Flash 25-09-2020 в 16:00:

А что это за ассаульт? Мне такой не попадался.

__________________
Tiger! Tiger! burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?


Отправлено Дядя Миша 25-09-2020 в 17:37:

Цитата:
Flash писал:
А что это за ассаульт?

Да ето он сам сделалв магазине купил

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 26-09-2020 в 07:43:

Flash cs_assault_russka. Этих клонов манзионов и ассаултов хоть жопой ешь. Попадаются даже весьма интересные, не просто с новыми деталями и текстурами, но и новыми путями. А ещё рекордсмен по клонам и римейкам - дедаст.


Отправлено Aynekko 26-09-2020 в 10:20:

Плиз хелп. Я успешно перенес shock trooper'а (это который wub-wub говорит) из opfor к себе в мод (напоминаю, что у меня ксаш-мод), работает вроде бы все, но есть проблема с сейв-рестором. Когда монстр стреляет, именно в тот момент когда летит лазер и сохраниться в этот момент, в консоли вылезает:

C++ Source Code:
Saving game to save/quick.sav...
Error: Invalid function pointer in class CShock!

После этого если загрузить игру, из ориджина карты летят лазеры в разные стороны и консоль бесконечно спамится строчкой:
C++ Source Code:
Error: R_BeamComputePoint: invalid entity 4095


Вот что у меня прописано в коде:
shock.cpp
C++ Source Code:
1
BEGIN_DATADESC( CShock )
2
DEFINE_FIELD(m_pBeam, FIELD_CLASSPTR),
3
DEFINE_FIELD(m_pNoise, FIELD_CLASSPTR),
4
DEFINE_FIELD(m_pSprite, FIELD_CLASSPTR),
5
END_DATADESC()
6
 
7
//IMPLEMENT_SAVERESTORE(CShock, CBaseAnimating)


В shock.h я удалил строчки и заменил на declare, не уверен что сделал правильно, но ксаш не понимает строчку IMPLEMENT_SAVERESTORE и не компилит ничего с ней.
C++ Source Code:
1
//	virtual int		Save(CSave &save);
2
//	virtual int		Restore(CRestore &restore);
3
//	static	TYPEDESCRIPTION m_SaveData[];
4
DECLARE_DATADESC();


Где же тут баг засел?

Добавлено 26-09-2020 в 13:20:

Точка с запятой после IMPLEMENT_SAVERSTORE вроде решила проблему только почему-то ее не было в опфорском сдк.


Отправлено Дядя Миша 26-09-2020 в 10:27:

Aynekko ты еще забыл в самом классе прописать наследование, ну типа

DECLARE_CLASS( CBasePlatTrain, CBaseToggle );

только для труппера.

Добавлено 26-09-2020 в 13:27:

Цитата:
Aynekko писал:
только почему-то ее не было в опфорском сдк.

ну так там она и не нужна.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 26-09-2020 в 10:38:

Там у него идет строчка
class CStrooper : public CHGrunt, а ссылается это дело на hgrunt.h, который я взял из опфора. Из-за этого еще пришлось и гранта переделать под этот h.
Или этот CBaseToggle в любом случае надо прописать?


Отправлено Дядя Миша 26-09-2020 в 12:26:

Это просто для примера, в каждом классе эта строчка своя.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Vadiman 06-10-2020 в 20:48:

Привет!
Еще вопросы:
1) Замоделил я новых голов для хгрунта, сделал дефайны в коде, убрал зависимость оружия от головы. В хаммере выставляю виды голов, вроде работают, но некоторые начинают жить своей жизнью: номер 1 путается с номером 11, вместо некоторых конкретных видов упорно ставится 1 (берет). Есть ли там какие-то лимиты на это дело?

2) У того же хгранта в анимациях есть стрейфы влево/вправо, комбатроллы всякие и прочее. Он изначально умел уворачиваться от атак? Даже ивенты остались

C++ Source Code:
$sequence "strafeleft" "strafeleft" LX LY fps 30 loop ACT_STRAFE_LEFT 1


3) По какой-то причине у меня на monster_scientist не работают скрипт_ивенты. Все скриптовые анимации на оригинальных картах через мой мод не работают - ученый в воздухе тупо стоит, или же если это sitting_scientist, то он просто в воздухе висит с анимацией ходьбы. Сам код ученого я не трогал, НО в файле pm_defs.h для нужд мода мне пришлось закомментить одну из строчек, т.к там ограничение на переменные:
C++ Source Code:
// For mods
int				iuser1;
int				iuser2;
int				iuser3;
//int				iuser4;

Может в этом дело?


Отправлено FreeSlave 06-10-2020 в 20:58:

Vadiman, возможно hgrunt становится squad-leader'ом, а там для хгрунтов прописан костыль, выставляющий вариант с беретом. В общем гляди в CSquadMonster::StartMonster

__________________
I'm on github
I'm on opendesktop.org


Отправлено thambs 06-10-2020 в 21:02:

Vadiman

Цитата:
Он изначально умел уворачиваться от атак?

Глянь альфу хл. Они там отрывают задницу стрейфами и уворотами.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 07-10-2020 в 07:07:

Цитата:
Vadiman писал:
НО в файле pm_defs.h для нужд мода мне пришлось закомментить одну из строчек

а ты на её место прописал другую?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 10-10-2020 в 17:20:

Проблем с PlayerUse.
Накодил юзабельную не-solid энтитю: https://github.com/FreeSlave/hlsdk-...149c7abe8b87c76
"Непроходимость" реализуется отдельными клип-брашами на карте. В аттаче карта и исходник с 4-мя энтитями вокруг одного столба. Непосрдественно проблема: если подходить к энтитям вплотную насколько возможно и нажимать use, то вместо южного и западного экземпляра юзаются соседние. С восточным и северным данная проблема не наблюдается. В чём загвоздка?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Vadiman 10-10-2020 в 17:27:

Цитата:
Дядя Миша писал:
а ты на её место прописал другую?

Да, временно закоментил существующую, иначе игра вылетала. Потом и вовсе забыл про это, пока не наткнулся на глюки скриптов.

C++ Source Code:
1
// For mods
2
int				iuser1;
3
int				iuser2;
4
int				iuser3;
5
//int				iuser4;
6
int				iJumpTime;  // время, когда мы начали прыжок
7
float			fuser1;
8
float			fuser2;
9
float			fuser3;
10
float			fuser4;
11
vec3_t			vuser1;
12
vec3_t			vuser2;
13
vec3_t			vuser3;
14
vec3_t			vuser4;


Отправлено Дядя Миша 10-10-2020 в 17:57:

Цитата:
FreeSlave писал:
если подходить к энтитям вплотную насколько возможно и нажимать use, то вместо южного и западного экземпляра юзаются соседние. С восточным и северным данная проблема не наблюдается.

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

Цитата:
Vadiman писал:
Да, временно закоментил существующую, иначе игра вылетала.

так нельзя делать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 11-10-2020 в 00:12:

Цитата:
FreeSlave писал:
Проблем с PlayerUse.
******
В чём загвоздка?

Если не брезгуешь залезть в сорцы серверной дллки, сделай дайрект юз. То есть по трейсу. На какую энтитю смотришь, та и будет юзаться. Дядя Миша тебе правильно подсказывает, игра перебирает ближайшие энтити в радиусе по порядку, как они сохранены в том самом лумпе карты. Изменишь порядок в карте - изменится порядок обращения при юзаньи.

Добавлено 11-10-2020 в 07:12:

Цитата:
Vadiman писал:
Да, временно закоментил существующую, иначе игра вылетала.

А как ты добился вылетов? В итоге у тебя iuser4 никуда не делся, просто теперь называется по-другому: iJumpTime. Так делать крайне не рекомендуется.
Кстати, все эти иузеры, фузеры, вузеры и еузеры надо вручную сохранять. То есть заводить соответствующую переменную для энтити, и оперировать ей в сейв/ресторе.


Отправлено FreeSlave 11-10-2020 в 09:18:

Ku2zoff, Дядя Миша там проблема не в порядке энтить. Если рядом других энтить нет, то и не юзается та, что прямо перед игроком, когда тот стоит вплотную. Это просто какой-то краевой случай, который приводит к тому, что PlayerUse считает, что объект не перед игроком. Я сделал выставление размера в SetSize в зависимости от Yaw-угла и оно заработало как надо.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 11-10-2020 в 11:24:

Цитата:
FreeSlave писал:
там проблема не в порядке энтить

PlayerUse перебирает энтити по сфере перед игроком. А попадание в сферу тестирует с начала списка энтить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 12-10-2020 в 09:23:

Цитата:
Дядя Миша писал:
PlayerUse перебирает энтити по сфере перед игроком. А попадание в сферу тестирует с начала списка энтить.


Есть же ещё проверка на нахождение перед игроком (и выбор объекта с наибольшим dotproduct). Именно её объект не проходит, если подойти вплотную к клипбрашу (в UTIL_ClampVectorToBox получаем нулевой вектор).
То, что Use попадает на соседний объект - следствие непрохода этой проверки и геометрического расположения объектов на карте, а не их порядка в списке энтить. Прикрепляю карту, где объекты расположены в отдалении друг от друга на противоположных стенах, чтобы не было путаницы. Два из них при подходе вплотную неюзабельны, как я и описывал.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Chyvachok 12-10-2020 в 09:35:

Мне интересно можно ли в халве вместо аттачементов использовать положение кости? К примеру для острела конечностей спавнить на месте кости гибс и эффект крови.


Отправлено Дядя Миша 12-10-2020 в 11:54:

Chyvachok можно, но это неудобно. Как ты найдешь нужную кость? По имени? По номеру?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 12-10-2020 в 11:57:

Народ, подскажите. Как изменить размер трейсеров пуль, уж слишком они огромные. Все, что смог нарыть, это вот:
#define TE_TRACER 6 // tracer effect from point to point
и это:

MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, vecTracerSrc );
WRITE_BYTE( TE_TRACER );
WRITE_COORD( vecTracerSrc.x );
WRITE_COORD( vecTracerSrc.y );
WRITE_COORD( vecTracerSrc.z );
WRITE_COORD( tr.vecEndPos.x );
WRITE_COORD( tr.vecEndPos.y );
WRITE_COORD( tr.vecEndPos.z );
MESSAGE_END();


Это же вроде спрайт какой-то или что? Все облазил, не могу найти.

__________________
Мой мод на Xash


Отправлено JPEG 12-10-2020 в 14:00:

Цитата:
Aynekko писал:
Народ, подскажите. Как изменить размер трейсеров пуль, уж слишком они огромные. Все, что смог нарыть, это вот:
#define TE_TRACER 6 // tracer effect from point to point
и это:

MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, vecTracerSrc );
WRITE_BYTE( TE_TRACER );
WRITE_COORD( vecTracerSrc.x );
WRITE_COORD( vecTracerSrc.y );
WRITE_COORD( vecTracerSrc.z );
WRITE_COORD( tr.vecEndPos.x );
WRITE_COORD( tr.vecEndPos.y );
WRITE_COORD( tr.vecEndPos.z );
MESSAGE_END();


Это же вроде спрайт какой-то или что? Все облазил, не могу найти.

можно консольной переменной tracerlength 4 // Чем значение больше, тем уже трейсер

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Aynekko 12-10-2020 в 14:08:

JPEG, большое спасибо.

__________________
Мой мод на Xash


Отправлено Ku2zoff 12-10-2020 в 15:03:

Как можно гарантированно определить на клиенте, что энтитя сдохла? curstate.health всегда 0, хотя в дельту строчка добавлена и в AddToFullPack строчка передачи подправлена. curstate.solid не катит - не меняется, даже когда на энтитю применено UTIL_Remove. GetEntityByIndex всё равно продолжает возвращать несуществующую энтитю, видимо, клиентский массив cl_entities не обновляется при удалении энтити с карты.
Или это только с брашами такая засада?

Добавлено 12-10-2020 в 22:03:

Цитата:
Aynekko писал:
Как изменить размер трейсеров пуль, уж слишком они огромные.

C++ Source Code:
1
TE_USERTRACER:
2
WRITE_COORD - pos1.x
3
WRITE_COORD - pos1.y
4
WRITE_COORD - pos1.z
5
WRITE_COORD - pos2.x
6
WRITE_COORD - pos2.y
7
WRITE_COORD - pos2.z
8
WRITE_BYTE - life
9
WRITE_BYTE - color
10
WRITE_BYTE - scale

Scale должен отвечать за толщину. Life - за длину, чем больше, тем длиннее трейсер и "медленнее" он летит. Color - тут я цифры не помню, тебе придётся подбирать наугад. Life и Scale желательно умножить перед отправкой на 10, т.к. при приёме на клиенте они умножаются на 0.1.


Отправлено Дядя Миша 12-10-2020 в 16:36:

C++ Source Code:
1
if( !alive )
2
{
3
  CL_KillDeadBeams( ent ); // release dead beams
4
#if 0
5
  // this is for reference
6
  if( state->number == -1 )
7
    Con_DPrintf( "Entity %i was removed from server\n", newnum );
8
  else Con_Dprintf( "Entity %i was removed from delta-message\n", newnum );
9
#endif
10
  return;
11
}

В ксаше curstate.number будет равен -1.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 12-10-2020 в 16:44:

Дядя Миша понятно, значит никак. Только каким-нибудь хаком.


Отправлено Дядя Миша 12-10-2020 в 16:57:

Можно от локального игрока взять messagenum и сравнивать с энтитью, которую хочешь проверить. Правда оно не совпадёт, если энтить просто выйдет из PVS. В халфе непросто понять, что энтить реально удалена с сервера.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 12-10-2020 в 17:23:

Поясню, что хочу сделать. Это до сих пор те самые спрайтовые декали из инвазиона. Прекрасно ходят через чейнджлевел, сохраняются, загружаются, двигаются вместе с энтитями. Есть охранный механизм: из ориджина декали делается трейс внутрь браша на полъюнита. Если там пустота - декаль удаляется. То есть разбили брейкаблю - её декали исчезли. Проблема в том, что когда любая энтитя выпадает из PVS, трейс возвращает пустоту, и декали исчезают. Я думаю, это происходит потому, что энтитя пропадает из массива физэнтить. Убрать охранный механизм - нехорошее решение, декали будут висеть в воздухе после исчезновения энтити. Пока что вижу одно решение - не ставить декали на брейкабли и ломаемые пушабли. Остальные энтити вроде дверей, ротатингов, кнопок и прочего не исчезают с карты. Правда, не тестировал ещё с глобальными энтитями, что ходят с карты на карту, непонятно что будет там. Хотелось бы найти способ заставить это дело работать нормально.

Добавлено 13-10-2020 в 00:17:

Дядя Миша а если есть доступ к model_t конкретного браша? Там какая-нибудь информация изменяется, если энтитя исчезает и больше не рендерится?

Добавлено 13-10-2020 в 00:23:

Подумал и придумал. Если совсем ничего не получится, придётся просто запретить определённым энтитям отсечение по PVS. Костыль, но ничего не поделаешь. Да и сколько может быть брейкаблей и пушаблей на карте? Даже если штук 50, это не должно сильно просадить фпс.


Отправлено Дядя Миша 12-10-2020 в 17:36:

Да какие трассы, какие полюнита, зачем такие сложности

Вот тебе очень простое соображение - если не видно бмодели, то значит не видно и декали. Нет ни одной ситуации, когда бы декали было видно, а бмодель - нет. Значит, мы просто напросто проверяем ent->visframe на валидность перед отрисовкой декали. И если энтить не видна - то и декаль не рисуем. И таким образом одним простым условием разрешаем вообще все проблемы. А уж по какой причине она исчезла - вышла из PVS или удалена с карты, нам неважно. Ну может быть еще имеет смысл добавить в декаль указатель на модель, на случай если энтить будет перезаюзана - брекабля-то уже не вернётся на карту назад, значит мы можем на это опираться.

Цитата:
Ku2zoff писал:
придётся просто запретить определённым энтитям отсечение по PVS

вот посмотри в каком ты думаешь направлении - всё изгадить, поломать но добиться своей цели. А ты думай наоборот - как бы одной строчкой решить вообще все проблемы просто и изящно. Неужели тебя не ломает делать какие-то там трейсы и прочую чертовщину? Расскажу историю забавную.
Совет Кодыр, когда выпустил XashXT CB 0.7 добавил же туда травку впервые, придумал концепцию. А я захотел её потестировать и создал grass_test (тогда еще первую версию). Ну и поставил туда этой травы от душы на все деньги. Корочи она у меня спавнилась где-то минут 10.
Оказалось, что он для каждого кустика во первых делал трейс вниз, чтобы найти точку пересечения с поверхностью, а во вторых выделял внутри структуры травы маллоком отдельные области. Движковый маллок из-за дефрагментации не особенно шустрый. Ради интереса можно сравнить его реализацию травы с моей и найти принципиальные отличия.
Ну к примеру зачем делать трассу, если нам надо просто найти псевдослучайную точку на треугольнике?
А это простейшее действие, чисто аналитическое. Раз в 500 быстрее трассы. Ну память ладно, с ней народ боится работать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 12-10-2020 в 17:53:

Цитата:
Дядя Миша писал:
если энтить не видна - то и декаль не рисуем

да уж. И как я сразу не сообразил? Дядя Миша, я же просто скопипастил за французами, а они там удаляют декали насовсем. Удалять не надо, только спрятать от глаз игрока. Проблема с пропаданием при выпадении энтить из PVS решена. Осталось избавиться от трассы.


Отправлено Дядя Миша 12-10-2020 в 18:25:

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

Добавлено 12-10-2020 в 21:25:

Ku2zoff кстати. А ты сделал так, чтобы декаль, выпущенная на границе двух различных энтить, ложилась на обе?

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 13-10-2020 в 17:51:

Глупый вопрос. Есть два массива декалей в классе CDecalManager:

C++ Source Code:
spritedecal_s m_pDecals[MAX_DECALS];
spritedecal_s m_pTempDecals[MAX_DECALS];

Сам менеджер разумеется имеет конструктор и деструктор, которые вызываются соответственно из HUD_Init:
C++ Source Code:
if (!g_pDecalManager)
  g_pDecalManager = new CDecalManager();

И HUD_Shutdown:
C++ Source Code:
if (g_pDecalManager)
{
  delete g_pDecalManager;
  g_pDecalManager = NULL;
}

Надо ли удалять с помощью delete эти массивы в деструкторе CDecalManager? Сейчас довольно много гуглил, и с большим трудом нашёл инфу, что delete необходимо вызывать лишь для объектов, созданных с помощью new. Получается, память из-под этих массивов автоматически высвободится при выходе из игры? И функцию деструктора для CDecalManager мне можно оставить пустой?

Добавлено 14-10-2020 в 00:51:

Цитата:
Дядя Миша писал:
А ты сделал так, чтобы декаль, выпущенная на границе двух различных энтить, ложилась на обе?

Нет, я ещё не добрался до косметики. Но зато решил проблемы с "отваливанием" декалей от энтить после чейнджлевела. Дело было так: возвращаюсь на предыдущую карту, где ранее оставил декали на стенах и дверях. Те двери, что на момент чейнджлевела находятся в PVS, остаются связанными с декалями, и декали вместе с ними ездят. А вот те двери, что не находятся в PVS на момент чейнджлевела, теряют свои декали: те просто перестают двигаться и висят в воздухе. Пришлось завести функцию, которая заново аттачит декали к энтитям, если они попадают в PVS.
Ужос, сколько нюансов.


Отправлено FreeSlave 13-10-2020 в 18:22:

Статические массивы (с заранее заданным размером) не нужно удалять отдельно. Их элементы уже в составе памяти, выделенной под объект. Удаляешь объект - высвобождается память выделенная под его составляющие.

Цитата:
Ku2zoff писал:
память из-под этих массивов автоматически высвободится при выходе из игры?

При выходе из игры вообще вся память процесса высвободится

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 13-10-2020 в 18:43:

Цитата:
Ku2zoff писал:
Надо ли удалять с помощью delete эти массивы в деструкторе CDecalManager?

они же статически объявлены.

Цитата:
Ku2zoff писал:
с большим трудом нашёл инфу, что delete необходимо вызывать лишь для объектов, созданных с помощью new

я и говорю, народ боится с памятью работать.

Цитата:
Ku2zoff писал:
И функцию деструктора для CDecalManager мне можно оставить пустой?

можно пустой, можно там чота полезное сделать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Vadiman 13-10-2020 в 18:48:

Цитата:
Ku2zoff писал:

Добавлено 11-10-2020 в 07:12:


А как ты добился вылетов? В итоге у тебя iuser4 никуда не делся, просто теперь называется по-другому: iJumpTime. Так делать крайне не рекомендуется.
Кстати, все эти иузеры, фузеры, вузеры и еузеры надо вручную сохранять. То есть заводить соответствующую переменную для энтити, и оперировать ей в сейв/ресторе.

Вылеты потому, что есть лимит на переменные, а этот iJumpTime новая переменная для playermove_s, она необходима, т.к я изменил прыжки игрока. Так что тут либо жертвы, либо, хз, хак какой-нибудь.


Отправлено Ku2zoff 14-10-2020 в 03:51:

Цитата:
Vadiman писал:
Вылеты потому, что есть лимит на переменные, а этот iJumpTime новая переменная для playermove_s, она необходима, т.к я изменил прыжки игрока. Так что тут либо жертвы, либо, хз, хак какой-нибудь.

Не новая переменная это у тебя. Ты стёр iuser4 и вместо неё написал iJumpTime. С таким же успехом можно было везде где надо вписать iuser4 вместо iJumpTime. Ты новую переменную не создал. Ты старую переименовал. А это лишний геморой.

Добавлено 14-10-2020 в 10:51:

Цитата:
Дядя Миша писал:
я и говорю, народ боится с памятью работать.

Я проштудировал твою статью по работе с оперативной памятью, и пришёл к такому же мнению.
Цитата:
FreeSlave писал:
При выходе из игры вообще вся память процесса высвободится

Ну только если в деструкторе не накосячишь, и оно не зависнет намертво
Цитата:
Дядя Миша писал:
они же статически объявлены.

Вот кто бы об этом удобочитаемо написал. Если объявлены статически, значит удалятся вместе с удалением класса-родителя. Какие ужосы советуют на stackoverflow, это кащьмар. Я целые сутки убил впустую, пытаясь что-то вразумительное по этой теме отыскать.


Отправлено Дядя Миша 14-10-2020 в 08:53:

Цитата:
Ku2zoff писал:
Вот кто бы об этом удобочитаемо написал

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 18-10-2020 в 20:43:

Даже не вопрос, а скорее просто наблюдение. Ну, если вопрос, то тогда - почему не работает?

Проблему-то я решил, но суть в чем: у монстров есть функция TakeDamage. В нее я по образцу из зомби добавил коэффициенты в зависимости от типа урона и даже от установленного skill. Ну например:

C++ Source Code:
if ( (g_iSkillLevel == SKILL_MEDIUM) && (bitsDamageType == DMG_BLAST) ) // half-dmg from explosions in medium mode
{
  flDamage *= 0.5;
}

Это было прописано в функции монстра. В конце нее там всегда идет return CBaseMonster::TakeDamage. Как я предположил, измененный в монстре flDamage уйдет в основную функцию и там продолжится выполнение. Но он не уходит. Я задолбался отлаживать, выставил алерты в консоль, но коэффициент не применялся. И тут я сделал по-другому. Я пошел прямехонько в combat.cpp и заменил
C++ Source Code:
flTake = flDamage;

на такую конструкцию:
C++ Source Code:
1
if (FClassnameIs( pev, "monster_barney" ))
2
{
3
  if ( (g_iSkillLevel == SKILL_MEDIUM) && (bitsDamageType == DMG_BLAST) ) // half-dmg from explosions in medium mode
4
  {
5
    flDamage *= 0.5;
6
  }
7
  else
8
  {
9
    flTake = flDamage;
10
  }

И оно работает как часы.
А у зомби ведь прописан коэффицинт дамага от пуль. Я проверил алертами - тоже не работает. Нужно в комбат переносить вот таким макаром. В обычной халфе тоже не работает. Проверить в халфе никак нельзя, поэтому я проверял по количеству пуль. Одинаково. А коэффициент там 0.3, то есть в 3 раза больше должен был потратить пуль.
Интересно, почему так.

__________________
Мой мод на Xash


Отправлено Ku2zoff 19-10-2020 в 13:03:

Цитата:
Aynekko писал:
В конце нее там всегда идет return CBaseMonster::TakeDamage.

У барника там CTalkMonster::TakeDamage. И внимательно посмотри условия, когда возвращается int ret. Может твоё условие просто игнорится?


Отправлено Aynekko 19-10-2020 в 14:08:

В конце функции CTalkMonster::TakeDamage все равно идет переадресация на CBaseMonster::TakeDamage. Там просто проверяется наличие дамага, чтобы например ученый комментировал. Само повреждение там не выполняется, так что это без разницы. У барни вроде окей все, я там почти все подчистил под себя.
Так или иначе, вот здесь у зомби коэффициент не работает - я его вообще не трогал.

C++ Source Code:
1
int CZombie :: TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType )
2
{
3
  // Take 30% damage from bullets
4
  if ( bitsDamageType == DMG_BULLET )
5
  {
6
    Vector vecDir = GetAbsOrigin() - (pevInflictor->absmin + pevInflictor->absmax) * 0.5;
7
    vecDir = vecDir.Normalize();
8
    float flForce = DamageForce( flDamage );
9
    SetAbsVelocity( GetAbsVelocity() + vecDir * flForce );
10
    flDamage *= 0.3;
11
  }
12
 
13
  // HACK HACK -- until we fix this.
14
  if ( IsAlive() )
15
    PainSound();
16
  return CBaseMonster::TakeDamage( pevInflictor, pevAttacker, flDamage, bitsDamageType );
17
}

В халфе тоже никакого 30% дамага от пуль не заметил. Еще не совсем понимаю, для чего эти векторы тут стоят.
Алерты я ставил, flDamage выводился и менялся. А в итоговом дамаге не учитывался, пока я все в комбат не перетащил.

__________________
Мой мод на Xash


Отправлено Ku2zoff 19-10-2020 в 23:03:

Цитата:
Aynekko писал:
не совсем понимаю, для чего эти векторы тут стоят.

Чтобы труп получал ускорение и толкался взрывами и пулями.


Отправлено Chyvachok 24-10-2020 в 08:08:

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

Мне вот интересно есть ли вообще туториалы с описанием как что работает на создание подобных клиентских эффектов как здесь: https://www.moddb.com/mods/b-def/im...ffects#imagebox или взрывы здесь: https://www.moddb.com/mods/b-def/im...action#imagebox

Рендерсистем выглядит интересно, в Tyrian GS эффекты на ее основе неплохие, много чего интересного, кольца в стиле матрицы для гаусс пушки и прочее, правда моя попытка прикрутить чисто ее к халве не увенчалась успехом, уж сильно код там перелопачен, да и если в сервере с горем пополам более менее понятно, то на клиенте для меня вообще тихий ужас, смотря в код абсолютно не понимаю как он вообще работает.

Добавлено 24-10-2020 в 10:08:

По мелочи еще, в сети есть некие попытки воссоздать код ОпФора, с боссами и прочим, интересно какая из них лучше? Где те же боссы нормально работают с веревками.


Отправлено Ku2zoff 24-10-2020 в 09:35:

Цитата:
Chyvachok писал:
правда моя попытка прикрутить чисто ее к халве не увенчалась успехом, уж сильно код там перелопачен

Всё прикручаемо. Нинада. Вот сорцы HLSDK 2.4 (с гитхаба) с прикрученной RS от XDM 3.0.3.4. Компилится без ошибок. Пробегись виндиффом, я там мог кое-что закомментить, т.к. прикручивал чисто для проверки по-быстрому. Ну и из эффектов - только взрывы, естественно, остальное надо копипастить из XDM.


Отправлено Дядя Миша 24-10-2020 в 09:54:

Цитата:
Chyvachok писал:
По поводу эффектов, интересно есть ли вообще описание какое либо как их делать?

Эффекты очень широкое понятие.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 24-10-2020 в 15:17:

Ku2zoff Спасибо, гляну, мож хоть сейчас разберусь с ними, единственное что у меня выходило это с горем пополам переделать wallpuff из паранои под эффект попадания плазмы, по типу синих кольц при попадании у плазмогана из Инвазиона, которые там были через декали сделаны, правда оно бывало глючило и спрайт на всю карту рисовался.


Отправлено JPEG 24-10-2020 в 18:59:

Цитата:
Ku2zoff писал:
Всё прикручаемо. Нинада. Вот сорцы HLSDK 2.4 (с гитхаба) с прикрученной RS от XDM 3.0.3.4. Компилится без ошибок. Пробегись виндиффом, я там мог кое-что закомментить, т.к. прикручивал чисто для проверки по-быстрому. Ну и из эффектов - только взрывы, естественно, остальное надо копипастить из XDM.

а чем кстати 2.4 отличается от 2.3 кроме того, что пересобрана для новой версии студии?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 24-10-2020 в 19:17:

JPEG ну как чем? Поддержка линукса и макоси, использование SDL, новые интерфейсы стим-версии, исправлены некоторые старые баги, посажены новые. Дллки собранные из 2.4 не работают в вон-версии и под оригинальным ксашем как раз именно поэтому. Ну то есть интерфейсы в ксаше вроде бы есть, а вот SDL нету. Собсно, там надо только над клиенткой поколдовать в плане инпута, чтобы выкинуть SDL, и оно почти точно заведётся на вон-версии. Ещё кое-какие мелочи есть, но я этим не интересовался. Если охота изучить, есть сорцы XDM 3.0.3.8, там Мастер всё ifdef'ами обернул под каждую версию движка.


Отправлено Chyvachok 24-10-2020 в 22:20:

Ku2zoff по поводу рендерсистем, под СДК 2.4 код скомпилировался, но я забыл что он не пашет на ксаше и на торрент эдишн халве, поэтому проверить не удалось, а на 2.3 сервер скомпилился, а на клиенте файлы от рендер систем пишут такую ошибку: cl_dll\rendersystem\particle.cpp(1) : fatal error C1083: Cannot open include file: 'hud.h': No such file or directory

И она вводит меня в недоумение, т.к. hud.h есть в проекте.

Добавлено 24-10-2020 в 22:18:

Скомпилил, тем инклюдам, на которые ругалась студия поменял с #include "hud.h" на #include "..\hud.h", и так с другими где ругалась, и там где на VectorAngles ругалась добавил после инклюдов void VectorAngles( const float *forward, float *angles ); добавил - заработало, у гранаты появились дополнительные эффекты, спасибо.

Добавлено 25-10-2020 в 00:20:

Ku2zoff кстати по поводу исходников ХДМ 3.0.3.4., их где-то можно скачать? А то на моддб только последняя версия, а на сайт ХДМ-а браузер не хочет пускать мол опасный сайт.


Отправлено Ku2zoff 25-10-2020 в 06:11:

Chyvachok я давно (в 2008-2009 годах) качал эти сорцы с x.netheaven.ru, когда сайт ещё работал. Потом благополучно потерял. Мастер мне их скинул пару лет назад, когда я попросил. Думаю, никакой военной тайны в них нет, т.к. версия старая, а на моддб доступна новая 3.0.3.8. Выкладываю аттачем, пусть будет доступна народу.
Раз уж пошла такая пьянка про старые потерянные сорцы, нет ли у кого случайно старого ксаша 0.39. Именно самого архива с модом, сорцы-то у меня есть. А вот ресурсов нет. Крайне нужно протестировать поведение оригинала в сравнении с адаптированным в мой мод кодом. В идеале бы конечно хотелось ещё сорцы ксаша 0.45, где кроме зеркал и мониторов ещё и порталы есть, но это уж точно навряд ли у кого осталось, тем более, что официального релиза не было


Отправлено Дядя Миша 25-10-2020 в 07:45:

У автора-то осталось, наверное.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 25-10-2020 в 11:21:

Дядя Миша ну так было бы здорово, если бы автор выложил. Всё равно старое и неактуальное.


Отправлено Дядя Миша 25-10-2020 в 14:04:

Дык профита никакого

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 25-10-2020 в 14:35:

Дядя Миша а какой профит ты получил от разработки всех ксашей, кроме опыта, повышения ЧСВ, и просто удовольствия в процессе работы? Я конечно понимаю, что за все свои наработки хочется что-то получить. Если не донаты, то хотя бы благодарность или авторитет в сообществе. Собственно говоря, ты вполне сможешь монетизировать XashNT, если с лицензиями всё будет в порядке. Что касается старых ксашмодов, учитывая, что они - проба пера, и так или иначе есть или были в открытом доступе, не вижу смысла не выложить их. Ты ведь даже более ценную вещь - сорцы паранойи 2 и Xash3D отдал народу на растерзание, что уж беспокоиться о старье, которое нужно паре-тройке человек на почитать.


Отправлено Дядя Миша 25-10-2020 в 15:15:

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

Цитата:
Ku2zoff писал:
не вижу смысла не выложить их

Смысл такой, если кому-то что-то надо и этого нигде нет, значит дефицит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 26-10-2020 в 16:40:

Нубский вопрос, как получить в ev_hldm аттачемент оружия в виде вектора? К примеру у R_BeamEntPoint аттачемент оружия указывается в виде idx | 0x1000, но у меня эффект принимает позицию в виде только вектора, я не нашел как можно idx | 0x1000 конвертировать в вектор.


Отправлено Дядя Миша 26-10-2020 в 17:02:

ent->attachment[номер]

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 26-10-2020 в 17:20:

Еще нубский вопрос, как получить entindex самого оружия в эвенте, а не игрока? args->entindex как я понял это игрок передавший клиент, а то теперь луч сравнится из паха игрока...

Добавлено 26-10-2020 в 19:20:

ну и чисто вопрос для общего развития, для чего в некоторых местах добавлено "(float*)&"?


Отправлено Дядя Миша 26-10-2020 в 17:37:

Цитата:
Chyvachok писал:
как получить entindex самого оружия в эвенте

что значит - самого оружия?

Цитата:
Chyvachok писал:
(float*)&

приведение типов.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 26-10-2020 в 17:45:

Дядя Миша все разобрался, там где координата начала я указал gun->attachment[0], потом в начале добавил const struct cl_entity_s *gun = gEngfuncs.GetEntityByIndex(args->entindex);, оно начало спавнить луч не из ствола оружия, а из паха игрока, потом поменял на const struct cl_entity_s *gun = gEngfuncs.GetViewModel(); и заработало.


Отправлено Ku2zoff 26-10-2020 в 19:57:

Цитата:
Chyvachok писал:
cl_entity_s *gun = gEngfuncs.GetViewModel(); и заработало.

Учти, луч берёт углы от вьюмодели. То есть такое годится только для эффекта от первого лица. Если захочется рисовать от третьего, например другим игрокам в мультиплеере, получится бред.


Отправлено Chyvachok 26-10-2020 в 21:34:

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

Я смотрел код лучевой пушки из ХДМ-а, там аж 3 мессаги у оружия, одна для звука выстрела и анимации, потом отдельной мессагой рисуется луч, и третим эффект попадания. У меня все в одной мессаге.

Вот, видно где прицел: https://imgur.com/a/KeGnp7F
Вблизи оно не так бросается в глаза: https://imgur.com/a/WMpiKTq

По поводу отрисовки от 3 лица, if ( EV_IsLocal( idx ) ) вроде как проверяет игрок от 1 лица или от 3?

Сам код выглядит так, не знаю насколько он ужастно написан:

code:
void EV_BlasterSniperFire( event_args_t *args ) { int idx, iFireMode/*, m_iMuzzleFlash*/; vec3_t origin, angles, vecSrc, vecEnd, forward, right, up; pmtrace_t tr; const struct cl_entity_s *gun = gEngfuncs.GetViewModel(); static char decalname[ 32 ]; idx = args->entindex; VectorCopy( args->origin, origin ); VectorCopy( args->angles, angles ); iFireMode = args->iparam1; AngleVectors( angles, forward, right, up ); EV_GetGunPosition( args, vecSrc, origin ); VectorMA( vecSrc, 8192, forward, vecEnd ); // if ( iFireMode == 0 ) // { int m_iRing, m_iGlow, m_iBeam/*, m_iBalls*/; m_iBeam = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/laserbeam.spr" ); //m_iBalls = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/blaster_spark.spr" ); m_iGlow = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/blaster_flash.spr" ); m_iRing = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/blaster_wall_ring.spr" ); // Store off the old count gEngfuncs.pEventAPI->EV_PushPMStates(); // Now add in all of the players. gEngfuncs.pEventAPI->EV_SetSolidPlayers ( idx - 1 ); gEngfuncs.pEventAPI->EV_SetTraceHull( 2 ); gEngfuncs.pEventAPI->EV_PlayerTrace( vecSrc, vecEnd, PM_STUDIO_BOX, -1, &tr ); /*gEngfuncs.pEfxAPI->R_BeamEntPoint( idx | 0x1000, tr.endpos, m_iBeam, 0.1, 1.0, 0.0, 250, 0, 0, 0, 0, 255, 128 );*/ g_pRenderManager->AddSystem(new CRSSprite((float*)&gun->attachment[0], m_iGlow, kRenderTransAdd, 0,255,128, 1.0, -1.2, 2.0, 16.0, 2.0)); g_pRenderManager->AddSystem(new CRSBeam((float*)&gun->attachment[0], tr.endpos, m_iBeam, kRenderTransAdd, 0,255,128, 1.0, -1.2, 0.1, 8.0, 0.0)); //beam effect // g_pRenderManager->AddSystem(new CPSFlatTrail((float*)&gun->attachment[0], tr.endpos, m_iRing, kRenderTransAdd, 255,255,255, 1.0, -0.75, 0.1, 4.0, 16.0, 0.0)); //matrix/HLWE gauss style rings gEngfuncs.pEfxAPI->R_BeamPoints((float*)&gun->attachment[0], tr.endpos, m_iBeam, 0.25f, 0.25, 0.0f, 0.25f, 10.0, 0, 30, 0,255,128); //Tyne Beam //We hit something if ( (tr.fraction < 1.0) && (gEngfuncs.PM_PointContents( tr.endpos, NULL ) != CONTENTS_SKY)) { gEngfuncs.pEfxAPI->R_BulletImpactParticles( tr.endpos ); gEngfuncs.pEventAPI->EV_PlaySound( -1, tr.endpos, 0, "weapons/blaster_spritesmall.wav", 1.0, ATTN_NORM, 0, PITCH_NORM ); /*{ vec3_t fwd; VectorAdd( tr.endpos, tr.plane.normal, fwd ); gEngfuncs.pEfxAPI->R_Sprite_Trail( TE_SPRITETRAIL, tr.endpos, fwd, m_iBalls, 3, 0, 8 / 32.0, 32, 255, 200 ); }*/ physent_t *pe = gEngfuncs.pEventAPI->EV_GetPhysent( tr.ent ); //Not the world, let's assume we hit something organic ( dog, cat, uncle joe, etc ). if ( pe->solid != SOLID_BSP ) { g_pRenderManager->AddSystem(new CRSSprite((float*)&gun->attachment[0], m_iGlow, kRenderTransAdd, 0,255,128, 1.0, -1.2, 2.0, 16.0, 2.0)); //CObject *pObjRing = new CBlasterRing( tr.endpos, tr.plane.normal, 0.5, 1, 10, "sprites/blaster_wall_ring.spr" ); //g_objmanager.AddObject(pObjRing); } else { //CObject *pObjRing = new CBlasterRing( tr.endpos, tr.plane.normal, 0.5, 1, 10, "sprites/blaster_wall_ring.spr" ); //g_objmanager.AddObject(pObjRing); vec3_t normal, spot; VectorCopy(tr.plane.normal, normal); VectorAdd(tr.endpos, normal, spot); normal[0] *= -1; normal[1] *= -1; VectorAngles(normal, angles); g_pRenderManager->AddSystem(new CRenderSystem(tr.endpos, angles, m_iRing, kRenderTransAdd, 255,255,255, 1.0,-2.0, 16.0,64, 0.0)); if ( CVAR_GET_FLOAT( "r_decals" ) ) { int rnd = gEngfuncs.pfnRandomLong( 0, 4 ); sprintf( decalname, "{bigshot%i", rnd + 1 ); gEngfuncs.pEfxAPI->R_DecalShoot( gEngfuncs.pEfxAPI->Draw_DecalIndex( gEngfuncs.pEfxAPI->Draw_DecalIndexFromName( decalname ) ), gEngfuncs.pEventAPI->EV_IndexFromTrace( &tr ), 0, tr.endpos, 0 ); } } } gEngfuncs.pEventAPI->EV_PopPMStates(); //Only play the weapon anims if I shot it. if ( EV_IsLocal( idx ) ) { //V_PunchAxis( 0, gEngfuncs.pfnRandomFloat( -1.2, 1.2 ) ); gEngfuncs.pEventAPI->EV_WeaponAnimation ( BLASTER_SNIPER_FIRE, 1 ); } gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_WEAPON, "weapons/blaster_unzoom_fire.wav", 1, ATTN_NORM, 0, 100 ); /*} else { }*/ }


Отправлено Ku2zoff 27-10-2020 в 07:03:

Цитата:
Chyvachok писал:
с этим клиентом я кстати заметил еще проблему, трасса на клиенте с сервером расходится

А с каким клиентом не расходится?
Цитата:
Chyvachok писал:
По поводу отрисовки от 3 лица, if ( EV_IsLocal( idx ) ) вроде как проверяет игрок от 1 лица или от 3?

Да, проверяет. Поэтому, когда эвент нелокальный, vecSrc должен быть EV_GetGunPosition. А когда локальный, то &gun->attachment[0].


Отправлено Aynekko 28-10-2020 в 09:26:

Цитата:
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 текстуры. ЧТО ЗА

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 10:05:

Очень ублюдский михонизм, да.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 10:38:

Я разобрался кажется и текстуры заработали.
У меня в 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 строчек, текстура снова отвалилась. Черт его знает. В общем, путем манипуляции с фейковыми строчками можно заставлять работать текстуры, если они не хотят.

__________________
Мой мод на Xash


Отправлено Ku2zoff 28-10-2020 в 10:53:

Цитата:
Aynekko писал:
При этом в файле прописаны активные 343 текстуры. ЧТО ЗА

Удали неактивные. Или все 343 используются?


Отправлено Aynekko 28-10-2020 в 10:58:

Цитата:
Ku2zoff писал:
Удали неактивные

Так я удалял. И поведение непредсказуемо - удалишь, одна заработает, отвалится другая. Сейчас по моей методе у меня вообще более 800 неактивных текстур в файле (текстура NONE прописана 700 с чем-то раз) и пока все окей вроде.

__________________
Мой мод на Xash


Отправлено Ku2zoff 28-10-2020 в 11:14:

Цитата:
Aynekko писал:
Неужели алгоритму сортировки не нравился пустой конец файла?
Может быть там ненужные непечатаемые символы есть где-то? Посмотри файл через ворд с отображением этих символов.


Отправлено Aynekko 28-10-2020 в 11:52:

Нет, все чисто.

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 12:47:

Я когда-то разбирался где там ошибка, но уже запамятовал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 14:50:

Цитата:
Дядя Миша писал:
Я когда-то разбирался где там ошибка, но уже запамятовал.

Жалко, что не пофиксил. Я ж на ксаш-моде и тут все вот так вот.

Добавлено 28-10-2020 в 17:03:

Возможно, проблема где-то здесь?
C++ Source Code:
1
void PM_SortTextures( void )
2
{
3
  // Bubble sort, yuck, but this only occurs at startup and it's only 512 elements...
4
  for( int i = 0; i < gcTextures; i++ )
5
  {
6
    for( int j = i + 1; j < gcTextures; j++ )
7
    {
8
      if( Q_stricmp( grgszTextureName[i], grgszTextureName[j] ) > 0 )
9
      {
10
        // Swap
11
        PM_SwapTextures( i, j );
12
      }
13
    }
14
  }
15
}


После добавления новых текстур все равно идут отвалы. Так вот я попробовал заменить i < gcTextures и j < gcTextures на знак меньше или равно. В итоге все текстуры, кроме одной (из тех что я тестирую) вернулись в строй. Но тут метод тыка, ибо я здесь что-то понимаю очень отдаленно.

Добавлено 28-10-2020 в 17:50:

Нашел другой, пока что безотказный, метод без спама строчками. Просто прописываем текстуру в файл повторно, пока она не заработает.

__________________
Мой мод на Xash


Отправлено ncuxonaT 28-10-2020 в 15:49:

gcTextures чему равно?


Отправлено Дядя Миша 28-10-2020 в 15:55:

Цитата:
Aynekko писал:
Возможно, проблема где-то здесь?

чем тебе сортировка не угодила?

Я подозреваю, что там калечный парсер, не всегда видит перенос строки.
Ты каком блокноте заполняешь этот файлик?

Добавлено 28-10-2020 в 18:55:

А. Вот что я вспомнил. У тебя есть имена текстур более 13 символов?
Если да - вот они-то всё и портят.

C++ Source Code:
#define CBTEXTURENAMEMAX	13			// only load first n chars of name

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 16:03:

Цитата:
ncuxonaT писал:
gcTextures чему равно?

static int gcTextures = 0;
Потом в инит тоже gcTextures = 0.
Цитата:
Дядя Миша писал:
Увеличь до 16 символов и по идее все баги пропадут.

Поставил 24, не помогло. Текстура была прописана 1 раз. Прописал ее 2 раза - заработала. Для одной текстуры вообще 3 раза пришлось прописать.
Блокнот самый обычный виндовый.

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 16:04:

Цитата:
Aynekko писал:
Поставил 24, не помогло

Потому что перед тем как совать циферки поскорее сперва надо было ответить на вышезаданные вопросы.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 28-10-2020 в 16:09:

Цитата:
Aynekko писал:
static int gcTextures = 0;
Потом в инит тоже gcTextures = 0.

на момент сортировки чему равно?
кстати зачем вообще сортировать текстуры?


Отправлено Дядя Миша 28-10-2020 в 16:11:

Там еще strcpy этот. Хотя по идее и не должен влиять.
ну ок, перед strcpy пихни вот такую строчку

C++ Source Code:
1
buffer[j] = 0;
2
 
3
ALERT( at_console, "#%i %s [%d]\n", gcTextures, buffer, j );
4
 
5
strcpy(&(grgszTextureName[gcTextures++][0]), &(buffer[i]));

надеюсь понятно куда. И выложи лог.

Добавлено 28-10-2020 в 19:11:

Цитата:
ncuxonaT писал:
кстати зачем вообще сортировать текстуры?

не текстуры, а их имена. Чтобы бинарный поиск заработал, зачем жы еще.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 16:15:

ncuxonaT, в PM_InitTextureTypes() в начале задается 0. Статик это вообще в самом начале файла прописано.

Дядя Миша да, есть, навскидку внешне вот например - T FIFTIES_FLR02C - 14 символов.

Сейчас попробую, спасибо!

__________________
Мой мод на Xash


Отправлено ncuxonaT 28-10-2020 в 16:23:

Цитата:
Дядя Миша писал:
не текстуры, а их имена

Не может быть такого, только имена и сортируются, а всё остальное остается на старом месте?


Отправлено Aynekko 28-10-2020 в 16:25:

Блин, пишет ALERT незадекларирован. Он в playermove вообще нигде не используется. Если util.h добавить, то начинает ругаться на enginecallback.h

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 16:51:

Цитата:
Aynekko писал:
Блин, пишет ALERT незадекларирован

о господи. Ну замени алерт на pmove->Con_Printf

Добавлено 28-10-2020 в 19:51:

Цитата:
ncuxonaT писал:
Не может быть такого, только имена и сортируются, а всё остальное остается на старом месте?

что остальное? Там нет ничего кроме имён от текстур.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 17:04:

Цитата:
Дядя Миша писал:
замени алерт на pmove->Con_Printf

Спасибо, не знал что есть такое. Вот лог с текстурами. Вроде бы все на своих местах. Ту текстуру, что 3 раза прописывал - прописал 1 раз специально, т.к. с ней проблема. В логе она есть - #176 T ME_BRICK [10]
А в игре никакого tile, звучит обычный concrete. Если прописать 3 раза - в логе тоже будет 3 раза, а звучит уже как надо.

Добавлено 28-10-2020 в 20:04:

Цитата:
Дядя Миша писал:
что остальное? Там нет ничего кроме имён от текстур.

А как же буковки CHAR_TEX? Которые T, M, G и т.д.
Хотя судя по логу он берет полностью как имя текстуры вместе с буквой…

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 17:29:

Цитата:
Aynekko писал:
Хотя судя по логу он берет полностью как имя текстуры вместе с буквой…


Вот так переправь и снова выложи лог
C++ Source Code:
pmove->Con_Printf( "#%i %s [%d]\n", gcTextures, buffer + i, j );

Кстати. У тебя нет текстур имён с пробелами?

Цитата:
Aynekko писал:
А как же буковки CHAR_TEX? Которые T, M, G и т.д.

они в отдельном массиве хранятся.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 28-10-2020 в 17:29:

Цитата:
Aynekko писал:
Поставил 24, не помогло. Текстура была прописана 1 раз. Прописал ее 2 раза - заработала. Для одной текстуры вообще 3 раза пришлось прописать.
Блокнот самый обычный виндовый.

хм, вроде ты уже поднимал эту тему месяца полтора назад и вроде как было решение? Попробуй всё-таки через notepad++ открыть, в виндовом блокноте вполне можно похерить перенос строк

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Дядя Миша 28-10-2020 в 17:39:

Ладно, всё что я хотел увидеть - я увидел. Увеличение CBTEXTURENAMEMAX обязано помочь. Если не помогло, значит ты где-то там еще натворил, может быть как раз своими хитрыми дублированиями строк.
Бинарный поиск такое очень не любит.
Для начала убедись что у тебя вообще нет дубликатов в скрипте.
Потом увеличивай CBTEXTURENAMEMAX
и всё должно заработать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 17:40:

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

JPEG, не было, я потом забил тогда. Сейчас просто добавил очередную текстуру, она не заработала, ну и пошли пляски.

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 17:41:

Цитата:
Aynekko писал:
Текстур таких нет

каких?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 17:43:

С пробелами.
Сейчас через прогу удалил дубликаты строчек. Не помогло.

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 17:44:

Можно еще вот так попробовать

C++ Source Code:
strcpy(&(grgszTextureName[gcTextures++][0]), &(buffer[i]));
pmove->Con_Printf( "%с %s\n", grgchTextureType[gcTextures-1], grgszTextureName[gcTextures-1] );

И тоже приложить лог. Ну или самому убедиться, что
а) имена корректные
б) нет дубликатов.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 17:45:

Ну чего ходить вокруг да около. Вот сам файл материалс. Я не могу там найти ничего странного, может вы найдете. Кроме одной закомменченой строчки //unbreakable crates

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 17:53:

Меня не интерисует файл materials, мне интересно как оно выглядит в памяти. Выкладывай лог с последним куском кода.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 17:58:

Сверил выведенный лог с последним кодом и файл материалс. Отсутствует последняя текстура.

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 19:10:

До меня дошло. Мы же сперва смотрим что там записывается, а портится оно уже после. Я еще и думал, что же меня так смущает.

C++ Source Code:
1
for( i = 0; i < gcTextures; i++ )
2
  pmove->Con_Printf( "%с %s\n", grgchTextureType[i], grgszTextureName[i] );
3
// вставить здесь
4
pmove->COM_FreeFile ( pMemFile );


Сделай вот так и выложи лог.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 19:24:

Тонна красных строчек "sprintf throw exception" в консоли.
На всякий случаю показываю, как вставил код:

Блин косяк там. Ща

Добавлено 28-10-2020 в 22:24:

Там была русская с в %c.
Все то же самое. Последней текстуры нет.

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 19:33:

Ну ладно, раз ты игноришь мои просьбы, разбирайся сам.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 19:38:

Ну вот лог. Только в чем смысл? Сверил список диффчекером, последней текстуры нет, а так все совпадает...

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 20:41:

Дай-ка подумать. У бинарного поиска могут быть некоторые фейлы вот как раз в тех случаях, что ты привёл.

Замени PM_FindTextureType вот на это

C++ Source Code:
1
char PM_FindTextureType( char *name )
2
{
3
  for( int i = 0; i < gcTextures; i++ )
4
  {
5
    if( !Q_stricmp( name, grgszTextureName[i] ))
6
      return grgchTextureType[i];
7
  }
8
  return CHAR_TEX_CONCRETE;
9
}

пока для теста. И приведи materials.txt в нормальный вид, без дубликатов, если еще не привёл.

Добавлено 28-10-2020 в 23:37:

Если заработает - верни старый код на место и замени вот эту строку
C++ Source Code:
val = strnicmp( name, grgszTextureName[ pivot ], CBTEXTURENAMEMAX-1 );

на
C++ Source Code:
val = Q_stricmp( name, grgszTextureName[ pivot ] );


Добавлено 28-10-2020 в 23:38:

Ну и CBTEXTURENAMEMAX оставь 24, лишним не будет.

Добавлено 28-10-2020 в 23:41:

Цитата:
Aynekko писал:
последней текстуры нет, а так все совпадает...

Это баг memfgets. Последняя строка должна быть пустой, чтобы он смог прочитать эту текстуру.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-10-2020 в 20:47:

И впрямь заработало О.о старый код вернул и строчку поменял, тоже работает. Последняя текстура так появилась в консоли только после того, как я добавил пустую строчку в тхт.
Файл чистый, без дубликатов и прочего. Большое спасибо!!!

Добавлено 28-10-2020 в 23:47:

Цитата:
Дядя Миша писал:
Это баг memfgets. Последняя строка должна быть пустой, чтобы он смог прочитать эту текстуру.

А, хых, ну вот я это и сделал

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-10-2020 в 20:56:

Да я понял. В сортировке Q_stricmp, а в поиске strnicmp, они отличаются.
Т.е. я там заменил, а тут просто забыл. Но CBTEXTURENAMEMAX всё равно надо было увеличить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 29-10-2020 в 07:53:

В халве есть какое либо ограничение на кол-во бодигрупп у модели? А то добавил солдату боди для отстреленных конечностей, поврежденный и уничтоженный торс, и у него SetBodygroup перестал корректно работать, то есть оно боди просто рандомно меняет, к примеру при смерти вместо того чтобы убрать боди оружия SetBodygroup( GUN_GROUP, GUN_NONE ); меняет голову на голову негра у солдата, и боди ноги на отстреленную, та же фигня с головой офицера, SetBodygroup( HEAD_GROUP, HEAD_COMMANDER ); вместо того чтобы выставить голову в берете, меняет боди торса на поврежденный. Номера боди я уверен что правильные использую.

Я вообще заметил в халве эти SetBodygroup и GetBodygroup не корректно работают, первый тупит если у модели много бодигрупп, второй вообще не пашет, я его пробовал юзать для проверки какая голова солдата - хрен, пришлось через pev->body.

Вот в код самого hgrunta и модель, может кто подскажет как быть.

Добавлено 29-10-2020 в 09:53:

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


Отправлено Дядя Миша 29-10-2020 в 08:23:

В модельвьювере такая моделька нормально выглядит и у нее нормально всё меняется? Лучше смотреть в моём, потому что он пишет число-комбинацию для определённого набора боди. Посмотри, если всё нормально, скажи, какое там максимальное число было.

Добавлено 29-10-2020 в 11:23:

Вот я стрелочкой отметил

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 29-10-2020 в 08:41:

Да все нормально, у модели которая работает максимально число 239, хотя я там убрал только 1 бодигруппу и поубирал у боди конечностей blank боди, а у той за 4000 переваливает, строка даже не помещается и переносится из-за чего точно число сложно разобрать, наверное этот setbodygroups не рассчитан на такие числа.


Отправлено Дядя Миша 29-10-2020 в 09:13:

SetBodyGroups рассчитан. Надо delta.lst подкорректировать.

В секции Entity_Encode

C++ Source Code:
DEFINE_DELTA( body, DT_INTEGER, 8, 1.0 ),

8 мало, это всего 256 комбинаций. 12 - уже 4096.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 29-10-2020 в 10:03:

Дядя Миша теперь ясно где править, если еще боди понадобятся, спасибо.

Еще хотел по поводу трассы спросить, я ее вчера так и сяк мандровал, так и не вымандровал в итоге, идея в чем, я все еще тот лазер мучаю, решил попровать рисовать луч на сервере, допустим координата выстрела у меня
vecSrc = vecSrc + gpGlobals->v_forward * 8 + gpGlobals->v_right * 7.25 - gpGlobals->v_up * 6;.

То есть точку выстрела я сместил, и я хотел бы как-то подвернуть трассу, чтобы она тоже шла из сдвинутого vecSrc в прицел, то есть ровно центр экрана, а не из m_pPlayer->GetGunPosition(), и тут загвостка, как vecDir у трассы повернуть так чтобы она не тупо прямо шла, т.к. она тоже сместилась от прицела, а подвернуть чтобы она прямо в прицел смотрела.

Вот видно насколько он ниже прицела попадает: https://imgur.com/a/3ZmGyaJ

Вопрос, почему мне просто в начале луча не указать смещенный vecSrc, а в конце tr.vecEndPos который идет из трассы которая идет из m_pPlayer->GetGunPosition(), тут тоже есть загвозда, да луч, идет из ствола прямо в центр экрана, но есть сбоку от прицела есть преграда, через которую луч проходит, он проходит сквозь нее, не нанося ей урона, и не останавливаясь на ней, тоже не порядок: https://imgur.com/a/6fDkj4c

Такая же проблема кстати у ванильного гаусса: https://imgur.com/a/F7FiHON

Добавлено 29-10-2020 в 12:03:

У меня есть код, который подправляет VecDir для снарядов, чтобы они тоже летели ровно в центр экрана, но он не хочет никак работать для трассы, оно ее направляет куда попало, но не в центр экрана.

Он выглядит таким образом для снарядов:

code:
Vector vecDir = m_pPlayer->GetAimForwardWithOffset(); float rightOffset = 6.0; float downOffset = 2.7; //addition to UTIL_VecSkew vecDir = UTIL_VecSkew( vecSrc, vecDir, rightOffset, downOffset, ENT( pev ) ); vecSrc = vecSrc + gpGlobals->v_right * rightOffset - gpGlobals->v_up * downOffset; И сами функции, позаиствовал из Халф Пейна: Vector CBasePlayer::GetAimForwardWithOffset( bool degrees ) { Vector vecDirShooting; Vector crosshairAngle = Vector( 0, 0, 0 ); Vector angles = pev->v_angle + crosshairAngle; if ( degrees ) { return angles; } g_engfuncs.pfnAngleVectors( angles, vecDirShooting, NULL, NULL ); return vecDirShooting; } // Offset the source of trace to the right\left alittle, and then rotate the aim to the left\right according to the distance Vector UTIL_VecSkew( const Vector &vecSrc, Vector vecAiming, float rightOffset, float downOffset, edict_t *shooter ) { TraceResult tr; Vector vecEnd; float traceDistance = 8192; UTIL_TraceLine( vecSrc, vecSrc + gpGlobals->v_forward * traceDistance, dont_ignore_monsters, shooter, &tr ); float hitDistance = ( tr.vecEndPos - vecSrc ).Length(); double yawRotation = ( atan( rightOffset / hitDistance ) * 180 ) / M_PI; double pitchRotation = ( atan( downOffset / hitDistance ) * 180 ) / M_PI; //addition rotate vertically, not just left/right g_engfuncs.pfnAngleVectors( UTIL_VecToAngles( vecAiming ) + Vector( pitchRotation, yawRotation, 0.0 ), vecAiming, Vector(), Vector() ); vecAiming.z *= -1.0; return vecAiming; }


Отправлено Дядя Миша 29-10-2020 в 10:13:

angles.x который передаёшь в UTIL_MakeVectors подкрути чуть-чуть.

Но если луч на клиенте проще высчитать угол самого аттачмента, я тутор писал как это сделать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 29-10-2020 в 10:27:

Он на сервере, по поводу anglesAim.x, у прожектайль пушек использующие VecSkew есть anglesAim.x = -anglesAim.x;, но этому лазеру и это не помогает, все равно луч куда-то в небо идет.

Не знаю может я что-то не то делаю:

code:
void CSniperBlaster::FireBeam() { edict_t *pentIgnore; TraceResult tr; pentIgnore = m_pPlayer->edict(); Vector anglesAim = m_pPlayer->GetAimForwardWithOffset( true ) + m_pPlayer->pev->punchangle; UTIL_MakeVectors( anglesAim ); anglesAim.x = -anglesAim.x; //что с ним что без Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecDir = m_pPlayer->GetAimForwardWithOffset(); float rightOffset = 7.25; float downOffset = 6; vecDir = UTIL_VecSkew( vecSrc, anglesAim, rightOffset, downOffset, ENT( pev ) ); //vecDir = UTIL_VecSkew( vecSrc, vecDir, rightOffset, downOffset, ENT( pev ) ); // резальтат тот же vecSrc = vecSrc + gpGlobals->v_forward * 8 + gpGlobals->v_right * rightOffset - gpGlobals->v_up * downOffset; UTIL_TraceLine( m_pPlayer->GetGunPosition( ), vecDir, dont_ignore_monsters, pentIgnore, &tr ); if (tr.fAllSolid) return; #ifndef CLIENT_DLL CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit); if (pEntity == NULL) return; Vector tmpSrc = vecSrc + gpGlobals->v_forward * 34; MESSAGE_BEGIN(MSG_PVS, gmsgFireBeam, tmpSrc); WRITE_COORD(tmpSrc.x); WRITE_COORD(tmpSrc.y); WRITE_COORD(tmpSrc.z); WRITE_COORD(tr.vecEndPos.x); WRITE_COORD(tr.vecEndPos.y); WRITE_COORD(tr.vecEndPos.z); WRITE_SHORT(m_iRing); WRITE_SHORT(m_iBeam); WRITE_BYTE(m_fireMode); MESSAGE_END(); Vector vecSend = tr.vecPlaneNormal * 2048; //buz: client side will normalize it again PLAYBACK_EVENT_FULL( 0, ENT(pev), m_usBlasterImpact, 0, tr.vecEndPos, vecSend, 0.0, 0.0, 0, 1, 0, 0 ); // Narrow mode only does damage to the entity it hits ClearMultiDamage(); if (pEntity->pev->takedamage) { pEntity->TraceAttack( m_pPlayer->pev, 40, vecDir, &tr, DMG_ENERGYBEAM ); } ApplyMultiDamage(m_pPlayer->pev, m_pPlayer->pev); #endif }


Отправлено Дядя Миша 29-10-2020 в 10:41:

Цитата:
Chyvachok писал:
есть anglesAim.x = -anglesAim.x;

это для компенсации ступид квейк бага, не трогай.

Цитата:
Chyvachok писал:
Не знаю может я что-то не то делаю:

у тебя там чёрт ногу сломит. Откуда это вообще?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 29-10-2020 в 12:36:

Сам код переделанная функция fire из Егона вроде, домучал таки, добавил Vector vecDest = vecSrc + vecDir * 8192; после vecDir = UTIL_VecSkew( vecSrc, vecDir, rightOffset, downOffset, ENT( pev ) ); и оно заработало. Хотя я раньше пхал его и оно не пахало. Осталось еще ревизию проверсти и убрать лишнее.

Добавлено 29-10-2020 в 14:36:

Еще вопрос, сколько вообще у модели аттаче-ментов может быть?


Отправлено Дядя Миша 29-10-2020 в 13:08:

В халфе четыре, в Ксаше сколько угодно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 30-10-2020 в 21:02:

Попробовал сделать подобие расчлененки в стиле Брутал Халвы, пока только зомбе и хгрунт, хотелось бы чтобы кто-то посоветовал по поводу кода, не сильно ли я его перемутил? Плюс сами модельки, куски и боди Гранта из Брутал ХЛ, и боди конечностей оттуда, распиленные пополам НПС, отстреленное место головы у зомби уже мои, плюс есть еще Гомом из ОпФора, боди тоже уже чисто мои, не позаимствованные.

Вот эта вся шняга: https://files.gamebanana.com/bitpit/_gib.rar

Гном: https://files.gamebanana.com/bitpit..._bodygroups.rar


Отправлено Дядя Миша 31-10-2020 в 08:09:

В геймплейных вещах термин "перемутил" некорректен. Там все извращаются как могут.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 01-11-2020 в 10:08:

По поводу спрайтов менюшки выбора оружия, в них есть ли какое-либо ограничение на размер самой текстуры, к примеру взять 640hud-ы, в оригинальной игре они имеют масштаб 256х256 пикселей, они такого размера должны быть или их можно смело до 512х512 увеличивать? И они должны быть кратные 16-ти или можно любые размеры указывать?

В текстуру 256х256 влезает всего лишь 5 иконок для оружия такого же размера как в халвеб 170х45, в то время как в текстуру 512-512 уже огого сколько всего можно засунуть.


Отправлено Дядя Миша 01-11-2020 в 11:27:

Что мешает взять и проверить?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 01-11-2020 в 12:17:

Chyvachok ограничения на размер нет. Но нет и вменяемого масштабирвания.

Цитата:
И они должны быть кратные 16-ти или можно любые размеры указывать?
Насколько я знаю, нет. Но должны быть кратны двум, чтобы не было пиксельной размазни.


Отправлено Дядя Миша 01-11-2020 в 12:44:

Цитата:
Ku2zoff писал:
Насколько я знаю, нет.

старые радионы вылетали с занятой ошибкой GL_Upload8: s&3
Я её даже в ксаше сохранил в виде варнинга. На память.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 01-11-2020 в 12:52:

Цитата:
Chyvachok писал:
Попробовал сделать подобие расчлененки в стиле Брутал Халвы, пока только зомбе и хгрунт, хотелось бы чтобы кто-то посоветовал по поводу кода, не сильно ли я его перемутил?

Нормально. Я давным-давно маялся подобным делом - сам делал модельки кусков в милке. Руки, ноги, щупальца и т.д. Часть из них запоролась - похерились текстуры при восстановлении удалённых файлов. Часть осталась в норме. Если не будет лениво, снова сделаю, когда определюсь, какие модели монстров буду юзать.
Единственное, что я бы сделал в коде - так это уменьшил бы шанс отстрела конечностей из мелкокалиберного оружия. Вон, в Инвазионе довольно смешно отстреливать грантам ноги и руки из 9мм МП5. Если уж отстреливать, то из гаусса или пулемёта.
Вообще, игра хорошо преображается, когда у каждого монстра свои куски, так что продолжай в том же духе. Если осилишь, чтобы они ещё и ползали с отстреленными частями тела, как в БХЛ, будет вообще классно.

Добавлено 01-11-2020 в 19:52:

Цитата:
Дядя Миша писал:
старые радионы вылетали с занятой ошибкой GL_Upload8: s&3

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


Отправлено Chyvachok 02-11-2020 в 22:50:

Цитата:
Ku2zoff писал:
Единственное, что я бы сделал в коде - так это уменьшил бы шанс отстрела конечностей из мелкокалиберного оружия. Вон, в Инвазионе довольно смешно отстреливать грантам ноги и руки из 9мм МП5. Если уж отстреливать, то из гаусса или пулемёта.


Я еще не придумал как это по лучше реализовать, в БХЛ кстати там у конечностей ХП есть, то есть слабое оружие отстреливает, но с нескольких попаданий, плюс еще с RadiusDamage в идеале чет придумать надо, чтобы оно рандомом конечности отрывало, а то взрывчатка либо совсем на части, просто убивает. Кстати так оно в игре выглядит, пока только зонбе и солдаты, сделал боди и для зомби охранников и солдат из опфора: https://www.youtube.com/watch?v=HSNv59O0qCE


Отправлено Ku2zoff 18-11-2020 в 11:24:

Всем привет. У меня для заинтересованных форумчан (которые делают сингловые моды) две новости. Хорошая и плохая, по классике. Начну с плохой: ходяче-атакующие монстры мне ещё не поддались, я пока не разобрался с переключением гейта и активностей. Ситуацию особенно портит m_fSequenceFinished, что отлавливается кодом далеко не всегда. Это я буду починить потом.
Но есть и хорошая. Я порылся в коде AI и навигации монстров, и дал ума барнику. Теперь зомбаки (тестировал код на них) практически не могу его забить, т.к. не могут подойти достаточно близко для удара - засранец фкаске отваливает при сокращении дистанции. В общем, как в Свенкоопе. Позже сегодня заведу новую тему, где всё распишу и покажу видео с примерами. Там и выслушаю ваши предложения, как и каких монстров исправить, или что им добавить, используя стандартный AI.


Отправлено Crystallize 18-11-2020 в 11:41:

Я в конфиге задираю число эдиктов до максимума в 8К но уже когда я ставлю на карту больше 4К энтитей, эдикты заканчиваются. Это что, лимит MAX_EDICTS это число эдиктов на сервере ПЛЮС столько же их копий на стороне клиента?


Отправлено Дядя Миша 18-11-2020 в 12:27:

Цитата:
Ku2zoff писал:
Ситуацию особенно портит m_fSequenceFinished, что отлавливается кодом далеко не всегда

Дык этож самая главная бага и есть. В ксаш-моде посмотри, я исправлял вроде.

Цитата:
Crystallize писал:
Я в конфиге задираю число эдиктов до максимума в 8К но уже когда я ставлю на карту больше 4К энтитей, эдикты заканчиваются

Там вообще-то выпадает ошибка.

C++ Source Code:
ED_AllocEdict: no free edicts (max is <max_edicts> )

И вот что оно там пишет в этом max is. Есть команда edict_usage еще.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 18-11-2020 в 14:28:

Ku2zoff, а саму навигацию улучшал как-то? Я у себя для поиска пути вместо триангуляции (расчёт обхода препятствия по одной промежуточной точке) делал расчёт по двум и трём дополнительным точкам. Проблема в том, что это оказалось довольно затратно. Может, есть другой более оптимальный способ.

А в плане фичей для ИИ монстров, я добавлял восстановление здоровья монстрам, когда те кушают трупы врагов (буллсквиды, агрунты и т.д. Хаундаи тоже стали кушать), возможность ученым лечить своих союзников (как медики в опфоре).
Отступление, как ты описал, тоже было бы неплохо.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 18-11-2020 в 15:33:

Цитата:
Дядя Миша писал:
В ксаш-моде посмотри, я исправлял вроде.

По-моему нет. Или я плохо смотрел. Кажется StudioFrameAdvance, ResetSequenceInfo и DispatchAnimEvents идентичны халфовским. Намекни, что сравнивать.
Цитата:
FreeSlave писал:
а саму навигацию улучшал как-то?

Пока не трогал. Я ковырял поиск пути по нодам. Там всего одна нода ищется, и если её невозможно достичь - весь таск фейлится. В сорсе есть выбор из целевой ноды и её линков. Какой путь ближайший и свободный - тот и выбирается. У меня барник с тыщей жизней минут 15 бегал по карте от зомбаков с 10 тыщами жизней и стрелял в них. В итоге застрял в неудачном месте и подох.

Добавлено 18-11-2020 в 22:33:

Цитата:
FreeSlave писал:
восстановление здоровья монстрам, когда те кушают трупы врагов (буллсквиды, агрунты и т.д. Хаундаи тоже стали кушать

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


Отправлено thambs 18-11-2020 в 15:45:

Цитата:
барник с тыщей жизней минут 15 бегал по карте

Прямо без застреваний и протоптываний ножкой?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Ku2zoff 18-11-2020 в 16:13:

Цитата:
thambs писал:
Прямо без застреваний и протоптываний ножкой?

Раз на раз не приходится, зависит от того, в каком месте укроется. Всё сильно зависит от геометрии и грамотной расстановки нодов. Ну и ещё может быть, что его весьма удачно блокируют противники. Но даже если затупит, то с большой вероятностью выберется.

Добавлено 18-11-2020 в 23:13:


Отправлено Дядя Миша 18-11-2020 в 16:14:

Цитата:
Ku2zoff писал:
Кажется StudioFrameAdvance, ResetSequenceInfo и DispatchAnimEvents идентичны халфовским

проверь

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено thambs 18-11-2020 в 16:37:

Ku2zoff
Красиво. Но ему явно не хватает возможности пинка ногой.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено FreeSlave 18-11-2020 в 18:54:

Цитата:
Ku2zoff писал:
Да это чисто фичи, либо вырезанные, либо недописанные, это не сложно. Я про исправления/улучшения, чтобы монстры не тупили.


В свен купе ещё монстры могут спрыгивать вниз. Хотя в теории это может иметь печальные последствия в виде застрявшего внизу ученого, который нужен был для открытия какой-нибудь двери. Но как опциональная фича может пригодиться.

Из общего по ИИ, что сделано у меня, помимо выше названного, и что было бы полезно:

В поиске укрытия от опасности монстры пытаются просто убежать подальше, если укрытие не найдено. В HL монстры пытаются именно найти то, что считают укрытием, и фейлят, если ничего такого не нашли. В том же Свен Купе монстры довольно резво бегают от гранат. Хотя именно резвость там скорее от увеличенной скорости поворота.

Проверки на наличие на линии огня и в области поражения гранаты союзников не только из своего сквада, но и вообще любых, в том числе игрока (если игрок союзник для монстра). В HL барники не проверяют на friendly fire и поэтому могут попадать в игрока. Особенно больно получать от отисов

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 18-11-2020 в 21:51:

Цитата:
Дядя Миша писал:
проверь

Идентичны, за исключением мелочей: немного переписаны GetSequenceInfo и GetAnimationEvent. А все цифры и операции одинаковые.


Отправлено Дядя Миша 19-11-2020 в 06:09:

Цитата:
Ku2zoff писал:
немного переписаны GetSequenceInfo и GetAnimationEvent

вот там-то и бага.

Тебе бы освоить механизмы анимации из сорса, благо теперь полный набор доступен, вот если бы это всё подключить, чтобы не было деревянности в перемещениях. Множественные блендинги, поз-параметры.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Lev 19-11-2020 в 07:12:

Ku2zoff Отличная новость, из фитч - если барник с пистолетом разрывает дистанцию с меллишными монстрами, то против ренжовых ему бы научиться сейвиться во время перезарядки или когда мало хп - за ближайшим непрозрачным(для трассы?)укрытием. Браш или енв_статик.


Отправлено Ku2zoff 19-11-2020 в 09:10:

Цитата:
Lev писал:
против ренжовых ему бы научиться сейвиться во время перезарядки или когда мало хп - за ближайшим непрозрачным(для трассы?)укрытием

SCHED_TAKE_COVER_FROM_ENEMY именно так и работает. Сначала монстр пробует использовать FindLateralCover - спрятаться за углом слева или справа. Если это не срабатывает, используется FindCover - попытка уйти из поля зрения m_hEnemy. Если и это не работает, то FindCover использует последний доступный алгоритм, который юзается в SCHED_TAKE_COVER_FROM_ORIGIN - свалить к ближайшей от собственной позиции ноде. Что и видно на моём видео, т.к. место открытое.
Цитата:
Дядя Миша писал:
вот там-то и бага.

А что, есть принципиальная разница между 256.0 и 256.0f? Или там ещё что-то?
Цитата:
Дядя Миша писал:
Множественные блендинги, поз-параметры.

Мне кажется, достаточно будет плавно блендить анимацию движения и стрельбы, чтобы монстров не дёргало. Можно не морочиться и оставить гейт, но выглядит он, мягко говоря, убого.


Отправлено Дядя Миша 19-11-2020 в 09:45:

Ku2zoff что-то еще должно быть. Там именно вот в эвентах бага.

Добавлено 19-11-2020 в 12:44:

Может убрать из эвентов m_fSequenceFinished, я просто уже не помню.
Корочи оно там проскакивает иногда.

Добавлено 19-11-2020 в 12:45:

В этой истории самое смешное, что у вальвы оно проскакивает в однопоточном коде. это вообще днище.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 19-11-2020 в 10:34:

Цитата:
Дядя Миша писал:
Может убрать из эвентов m_fSequenceFinished, я просто уже не помню.

Так оно исправлено в ксашмоде или нет? Я пробежался поиском по проектам - количество строк с m_fSequenceFinished одинаковое. Вызовы DispatchAnimEvents и ResetSequenceInfo тоже совпадают во всех общих файлах. Ладно, буду посмотреть в сорс сдк, искать в чём там отличие.


Отправлено Ku2zoff 19-11-2020 в 18:06:

Цитата:
FreeSlave писал:
В HL барники не проверяют на friendly fire и поэтому могут попадать в игрока.

Кстати да. В свене это исправлено. Надо тоже починить. А то барники у меня и перезаряжаться умеют, и пистолет в кобуру убирают, но стреляют в спину игроку. Если найду подходящие анимации, вооружу их ещё до кучи дробовиками. Но сначала навигация и укрытия.


Отправлено Chyvachok 19-11-2020 в 20:10:

Ku2zoff в БХЛ есть разные анимации для барников, даже для РПГ, делал у себя чтобы они были вооружены разным оружием - с РПГ это получается ультимативный тимкиллер, союзник похуже любого врага

А если враг подойдет то и себя до кучи на воздух отправит.

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

Добавлено 19-11-2020 в 22:10:

Насчет НПС с базуками, в Свен Коопе заметил что солдаты там тоже как игрок юзают лазерный прицел.


Отправлено Ku2zoff 19-11-2020 в 21:01:

Цитата:
Chyvachok писал:
в БХЛ есть разные анимации для барников

Не годится, мне надо для HD пака. Самое хорошее сочетание - тела от HD пака + головы от обычных моделей + апскейленные текстуры. Первое даёт более качественные анимации и нормальную детализацию без излишеств. Второе даёт олдскульность (как же я ненавижу эти уродливые морды охраны и учёных из HD пака и дикея!). Третье даёт нормальный вид (отсутствие мыла) на современных мониторах. Буду поискать, должны быть HD паки для любительских модов. Так-то я нашёл несколько моделей, но там не все анимации нормально подогнаны под дробовик или мп5: иногда барник держит такое тяжёлое оружие одной рукой.


Отправлено KorteZZ 20-11-2020 в 10:57:

Вам, наверно, нужна отдельная тема по редактированию ИИ в халве\ксаше.
А так все это звучит и выглядит классно. Реально монстров надо прокачивать. А это это действительно нынче сильно бросается в глаза. Меня вот заботит такая трабла: надо сделать так, чтобы монстры шли друг за дружкой в плотной толпе, как зомби в лефте или киллинг флуре. А то они ждут, пока один дойдет до точки или сдохнет и только после этого начинают идти. А это печаль. Это хотя бы в теории можно реализовать?

__________________

Killing Floor: Horzine Outbreak


Отправлено Ku2zoff 22-11-2020 в 03:43:

Цитата:
KorteZZ писал:
А то они ждут, пока один дойдет до точки или сдохнет и только после этого начинают идти. А это печаль. Это хотя бы в теории можно реализовать?

Монстр не идёт, если у него на пути есть препятствие. Другие монстры тоже считаются за препятствия. Первое, что приходит в голову - уменьшить расстояние проверки до минимума, чтобы ближайшие монстры не считались препятствиями. Второе - поглядеть код alien_flock (или как их там), и написать для зомбей похожий алгоритм движения в группе/стае.


Отправлено KorteZZ 22-11-2020 в 10:45:

А если просто убрать другого монстра из списка препятствий, чтобы монстр пытался просто пройти дальше? Если вся толпа будет так идти, то зацепов не должно быть

__________________

Killing Floor: Horzine Outbreak


Отправлено Lev 22-11-2020 в 13:25:

KorteZZ Возможо они будут ходить друг через друга


Отправлено Crystallize 22-11-2020 в 13:50:

Lev я думаю они просто начнут толкаться


Отправлено Lev 22-11-2020 в 15:41:

Crystallize Кстати да, ббоксы никто не отменял.


Отправлено KorteZZ 24-11-2020 в 06:52:

В Killing Floor'e они постоянно пытаются пройти вперед, даже когда перед ними стоит целая толпа монстров) Постоянно проигрывается анимация ходьбы. Хотя из-за этого они начинают порой застревать в дверях. Особенно в узких, одиночных, не пропуская друг-друга.

__________________

Killing Floor: Horzine Outbreak


Отправлено Aynekko 28-11-2020 в 07:02:

Плиз хелп. Делаю энтитю выпускающую шары наподобие ХЛ2 (prop_combine_ball). Энтитя 1 (спаунер) создает энтитю 2 (шар). Направление Шара задается через angles Спаунера (сделал). Также Спаунер задает начальную велосити Шара.
Шар представляет собой спрайт с осязаемым боксом (util_setsize).
Шар создается и летит. А потом начинаются проблемы. Я не могу сделать отскок! Попытался сделать наподобие шаров нихиланта (они там тоже отскакивают), но что-то не то. Смотрел как сделано в ксаше отражение лучей от поверхностей. Делал по подобию, но все равно не получается. Тут какая-то математика, а я в ней честно сказать не силен.

Спаунер :: Use

C++ Source Code:
1
...........
2
UTIL_MakeVectors ( GetAbsAngles() );
3
Vector vecShootDir = gpGlobals->v_forward;
4
Vector Angle = UTIL_VecToAngles(vecShootDir);
5
 
6
CBaseEntity *pBall = Create( "env_ballentity", GetAbsOrigin(), Angle);
7
pBall->SetAbsVelocity( gpGlobals->v_forward * 400 );


Шар :: Spawn
C++ Source Code:
1
............
2
UTIL_SetSize( pev, Vector(-4,-4,0), Vector(4,4,4) );
3
SetTouch( BounceTouch );
4
m_vecIdeal = Vector( 0, 0, 0 );


Шар :: BounceTouch (тут вся проблема судя по всему)
C++ Source Code:
1
void CEnvBallEntity::BounceTouch( CBaseEntity *pOther )
2
{
3
  Vector m_vecIdeal = GetAbsVelocity();
4
  m_vecIdeal = m_vecIdeal + (m_vecIdeal - GetAbsOrigin()).Normalize() * 100;
5
 
6
  Vector vecDir = m_vecIdeal.Normalize( );
7
  TraceResult tr = UTIL_GetGlobalTrace( );
8
  float n = -DotProduct(tr.vecPlaneNormal, vecDir);
9
  vecDir = 2.0 * tr.vecPlaneNormal * n + vecDir;
10
  m_vecIdeal = vecDir * m_vecIdeal.Length();
11
  SetAbsVelocity(m_vecIdeal);
12
}


В идеале должен быть отскок наподобие зеркала. Текущее положение вещей на видео. Нужно чтобы отскочил точно назад, а он прилипает и ведет себя странно (можно ногам футболить и придать ускорение вдобавок). В BounceTouch наверняка бред полный, поэтому и прошу помощи.

https://youtu.be/owIOWsyNYSQ

__________________
Мой мод на Xash


Отправлено FreeSlave 28-11-2020 в 07:39:

Aynekko, а зачем ты вычитаешь позицию из скорости? Убери вторую строчку из BounceTouch и должно заработать.

Ну и определись m_vecIdeal у тебя локальная переменная функции или составная часть объекта. У тебя сейчас получается перекрытие символа.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 28-11-2020 в 08:14:

FreeSlave, без второй строчки они просто исчезают в стене. Я сделал три спаунера под разными углами (вверх, вбок, вверх по диагонали 45 градусов). Все три исчезают. Если строчку оставить, то они адекватно реагируют на толкание игрока, летят куда толкаешь. А от стены не отскакивают. Прилипают и летят судя по всему на origin мира вдоль стен.

C++ Source Code:
1
Vector m_vecIdeal = pOther->GetAbsVelocity(); // поменял эту строчку
2
m_vecIdeal = m_vecIdeal + (m_vecIdeal - GetAbsOrigin()).Normalize() * 100;
3
SetAbsVelocity(m_vecIdeal);
4
Vector vecDir = m_vecIdeal.Normalize( );
5
TraceResult tr = UTIL_GetGlobalTrace( );
6
float n = -DotProduct(tr.vecPlaneNormal, vecDir);
7
vecDir = 2.0 * tr.vecPlaneNormal * n + vecDir;
8
m_vecIdeal = vecDir * m_vecIdeal.Length();


У контроллера в movetotarget есть такие строчки... vecTarget это m_hEnemy->Center т.к. там шар все время пытается догнать врага. Я уже не помню, почему я решил туда велосити засунуть, наверное эксперимента ради
C++ Source Code:
m_vecIdeal = m_vecIdeal + (vecTarget - GetAbsOrigin()).Normalize() * 100;
SetAbsVelocity( m_vecIdeal );

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-11-2020 в 09:20:

Может лучше SetLocalVelocity поставить?

Добавлено 28-11-2020 в 12:18:

Но вообще да, вторая строчка или совсем не нужна или нужна, но в другом виде, впрочем без нее должно работать, но шар будет утопать в стене до точки оригина.

Добавлено 28-11-2020 в 12:20:

У тебя там где GetGlobalTrace надо взять trace_endpos и отнять от позиции шара и считать отскок с этим оффсетом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-11-2020 в 12:39:

Post

Проблема решилась одной строчкой

C++ Source Code:
#define MOVETYPE_BOUNCEMISSILE	11	// bounce w/o gravity

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-11-2020 в 13:38:

Ну это ты просто заюзал встроенный тип физики. Но можно было и самому сделать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 28-11-2020 в 18:09:

Цитата:
Ku2zoff писал:
Самое хорошее сочетание - тела от HD пака + головы от обычных моделей + апскейленные текстуры.


Кстати кто-то прочитал твои мысли: https://gamebanana.com/skins/183408
По поводу моделей мне самому не нравятся из ХД пака, лица уродские согласен, по поводу анимаций с другим оружием для моделей из ХД пака, в Zombie Edition есть вроде для барников, и даже для ученого вроде.


Отправлено Aynekko 29-11-2020 в 14:23:

Задаю размер через UTIL_SetSize - 0,0,0, 8,8,8 - нормальный квадратный размер. Задаю 0,0,0 9,8,8 (к примеру) - увеличился осязаемый размер примерно в 2 раза. Проверил и поставил второй вектор 16,16,16 - да, такой же. Можно ли как-то задать скажем 12,12,12?
Может в дельте что-то поменять? Я на ксаше.

__________________
Мой мод на Xash


Отправлено Ku2zoff 29-11-2020 в 16:36:

Цитата:
Chyvachok писал:
Кстати кто-то прочитал твои мысли

Учёный страшненький, а вот барник хорош. У меня почти такой же, только текстуры тела от HD, а не от LD. Ну да поправимо, перекрасим. Охота, чтобы персы выглядели олдскульно (по раскраске и бошкам), но чтобы анимации были получше и текстуры почётче. Благо, сейчас сервисов по апскейлу пикчей вагон и маленькая тележка. Можно все старые модели "проапгрейдить".


Отправлено Дядя Миша 29-11-2020 в 16:51:

Aynekko ты неправильно задаёшь размер.
Надо вот так: UTIL_SetSize( Vector( -4, -4, -4 ), Vector( 4, 4, 4 ));

Да и потом, не забывай, что там всё-таки фиксированные хуллы. Вот он и увеличивается скачкообразно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено JPEG 01-12-2020 в 18:00:

Цитата:
Aynekko писал:
Задаю размер через UTIL_SetSize - 0,0,0, 8,8,8 - нормальный квадратный размер. Задаю 0,0,0 9,8,8 (к примеру) - увеличился осязаемый размер примерно в 2 раза. Проверил и поставил второй вектор 16,16,16 - да, такой же. Можно ли как-то задать скажем 12,12,12?
Может в дельте что-то поменять? Я на ксаше.

если не ошибаюсь UTIL_SetSize(pev, Vector(-6, -6, 0), Vector(6, 6, 12));

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 01-12-2020 в 18:14:

JPEG точно подмечено. Для игроков размер по Z указывается как -4 и 4, например, а для монстров как 0 и 8. Всё потому, что у монстров оригин в ногах, а у игрока на уровне пояса.


Отправлено Aynekko 01-12-2020 в 18:46:

Один фиг там ломается все. То, что Дядя Миша предложил, лучше всего оказалось. Но хотелось бы расширить до объема 10-12, а не 8, а он сразу на 16 прыгает.

__________________
Мой мод на Xash


Отправлено Ku2zoff 12-12-2020 в 15:22:

А посоветуйте какие-нибудь моды, в которые вы играли или просто видели, чтобы там HUD был нестандартный. Ну то есть не полупрозрачный подкрашенный. Overturn и Паранойи не надо, я их видел. И ещё желательно, чтобы менюшки оружий были нестандартные. У меня уже есть идеи на собственный худ, но охота проверить, как нестандартные варианты выглядят прямо в игре, и удобно ли это.


Отправлено Crystallize 12-12-2020 в 20:41:

Mech mod с роботами, там и меню и худ.


Отправлено Cybermax 13-12-2020 в 08:56:

https://gamebanana.com/guis/32344


Отправлено Decay 13-12-2020 в 09:32:

https://www.youtube.com/watch?v=oj9eXUNUVCs


Отправлено Cybermax 13-12-2020 в 14:47:

Лидерами по кастомизации худа являются fast-peced FPS.
https://playmorepromode.com
https://playmorepromode.com/guides/cpma-super-hud
https://xonotic.org/
https://store.steampowered.com/app/671610/Warfork/
https://store.steampowered.com/app/328070/Reflex_Arena/
Интересный худ в токсик, он движется вместе с игроком. https://www.youtube.com/watch?v=OtorwDYZJ_k

Добавлено 13-12-2020 в 17:47:

Цитата:
Decay писал:
https://www.youtube.com/watch?v=oj9eXUNUVCs


Пустил скупую мужскую слезу от ностальгии.


Отправлено Дядя Миша 13-12-2020 в 18:32:

Цитата:
Cybermax писал:
Интересный худ в токсик, он движется вместе с игроком

если худ перестал двигаться вместе с игроком, очевидно слетел режим перехода в 2D. Так-то он вполне может висеть где-нибудь на уровне в нулевой точке.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Eljeyna 18-12-2020 в 15:01:

Как сделать прошивание НПС через трассировку выстрелом?
Пример: стоят в ряд 5 зомби, стреляешь под прямым углом в тело первого и дамаг наносится всем остальным.

P.S. пытался сделать через цикл и заново заданную трассировку, но после первой трассировки остальные будто прерываются и не работают. Какой подорожник нужен этой трассировке, чтобы она работала адекватно?

__________________
El. Psy. Kongroo.


Отправлено Ku2zoff 18-12-2020 в 17:00:

Eljeyna найди сорцы HLWE. Там, насколько я помню, есть прострелы через стены. Я в своё время делал прострелы циклом, у меня работали. В цикле надо использовать while. Вот мой старый код:

C++ Source Code:
1
Vector CBaseEntity::FireBulletsPlayer(ULONG cShots, Vector vecSrc, Vector vecDirShooting, Vector vecSpread, float flDistance, int iBulletType, int iTracerFreq, int iDamage, entvars_t *pevAttacker, int shared_rand)
2
{
3
  float x, y;
4
 
5
  Vector vecDir;
6
  Vector vecEnd;
7
 
8
  edict_t	*pentIgnore;
9
  TraceResult tr;
10
  CBaseEntity *pEntity;
11
 
12
  if (!pevAttacker)
13
    pevAttacker = pev;
14
 
15
  ClearMultiDamage();
16
  gMultiDamage.type = DMG_BULLET | DMG_NEVERGIB;
17
 
18
  for (ULONG iShot = 1; iShot <= cShots; iShot++)
19
  {
20
    x = UTIL_SharedRandomFloat( shared_rand + iShot, -0.5, 0.5 ) + UTIL_SharedRandomFloat( shared_rand + ( 1 + iShot ) , -0.5, 0.5 );
21
    y = UTIL_SharedRandomFloat( shared_rand + ( 2 + iShot ), -0.5, 0.5 ) + UTIL_SharedRandomFloat( shared_rand + ( 3 + iShot ), -0.5, 0.5 );
22
 
23
    vecDir = vecDirShooting + x * vecSpread.x * gpGlobals->v_right + y * vecSpread.y * gpGlobals->v_up;
24
    vecEnd = vecSrc + vecDir * flDistance;
25
 
26
    pentIgnore = ENT(pev);
27
 
28
    UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, pentIgnore, &tr);
29
 
30
    if (iDamage)
31
    {
32
      UTIL_BubbleTrail(vecSrc, tr.vecEndPos, (flDistance * tr.flFraction) / 64.0);
33
 
34
      if (tr.flFraction != 1.0)
35
      {
36
        pEntity = CBaseEntity::Instance(tr.pHit);
37
        pEntity->TraceAttack(pevAttacker, iDamage, vecDir, &tr, DMG_BULLET);
38
 
39
        DecalGunshot(&tr, iBulletType);
40
 
41
        float m_flDamageSaved = iDamage;
42
        float m_flDamageMin = iDamage / 10;
43
 
44
        while (m_flDamageSaved > m_flDamageMin)
45
        {
46
          float n = -DotProduct(tr.vecPlaneNormal, vecDir);
47
 
48
          if (n < 0.5f)
49
          {
50
            if (!pEntity->IsBSPModel())
51
              break;
52
 
53
            Vector saveSrc = vecSrc;
54
            Vector vecRic = 2.0f * tr.vecPlaneNormal * n + vecDir;
55
 
56
            vecDir = vecRic;
57
            vecSrc = tr.vecEndPos + vecDir * 8.0f;
58
            vecEnd = vecSrc + vecDir * flDistance;
59
 
60
            UTIL_Ricochet(vecSrc, 1.0);
61
 
62
            if (n == 0) n = 0.1f;
63
            m_flDamageSaved = m_flDamageSaved * (0.55f - (n / cShots));
64
 
65
            pentIgnore = NULL;
66
 
67
            UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, pentIgnore, &tr);
68
 
69
            if (tr.flFraction != 1.0)
70
            {
71
              pEntity = CBaseEntity::Instance(tr.pHit);
72
              pEntity->TraceAttack(pevAttacker, m_flDamageSaved, vecDir, &tr, DMG_BULLET);
73
 
74
              DecalGunshot(&tr, iBulletType);
75
            }
76
 
77
            vecSrc = saveSrc;
78
          }
79
          else
80
          {
81
            Vector endPos = tr.vecEndPos;
82
 
83
            UTIL_TraceLine(tr.vecEndPos + vecDir * m_flDamageSaved, vecEnd, dont_ignore_monsters, pentIgnore, &tr);
84
 
85
            if (tr.fAllSolid)
86
              break;
87
 
88
            UTIL_TraceLine(tr.vecEndPos, endPos, dont_ignore_monsters, pentIgnore, &tr);
89
 
90
            float t = (tr.vecEndPos - endPos).Length();
91
 
92
            //						ALERT(at_console, "Wall thickness: %f\n", t);
93
 
94
            if (t > m_flDamageSaved)
95
              break;
96
 
97
            if (t == 0)
98
              break;
99
 
100
            DecalGunshot(&tr, iBulletType);
101
 
102
            m_flDamageSaved -= (t / cShots);
103
 
104
            UTIL_TraceLine(tr.vecEndPos, vecEnd, dont_ignore_monsters, pentIgnore, &tr);
105
 
106
            if (tr.flFraction != 1.0)
107
            {
108
              pEntity = CBaseEntity::Instance(tr.pHit);
109
              pEntity->TraceAttack(pevAttacker, m_flDamageSaved, vecDir, &tr, DMG_BULLET);
110
 
111
              DecalGunshot(&tr, iBulletType);
112
            }
113
          }
114
        }
115
      }
116
    }
117
  }
118
  ApplyMultiDamage(pev, pevAttacker);
119
 
120
  return Vector( x * vecSpread.x, y * vecSpread.y, 0.0 );
121
}


Добавлено 19-12-2020 в 00:00:

Обрати внимание на pEntity->IsBSPModel() - там код рикошетов, только от брашей. Я на сто процентов не помню, простреливались ли у меня монстры, вроде бы да.


Отправлено Eljeyna 18-12-2020 в 18:34:

Спасибо! Оно наконец заработало (тут от силы понадобилось 10% кода для понимания). Моей самой большой ошибкой было то, что я проверял на NULL энтити (не халфер и лишь малость разбираюсь в двигле) и не до конца понимал, как работает мультидамаг

__________________
El. Psy. Kongroo.


Отправлено FreeSlave 01-01-2021 в 17:06:

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

__________________
I'm on github
I'm on opendesktop.org


Отправлено JPEG 01-01-2021 в 17:52:

Цитата:
FreeSlave писал:
Вы встречали такой баг, что оружие, сбрасываемое хгрунтами при смерти, иногда падает очень медленно, а затем и вовсе проваливается сквозь пол? Кто-нибудь это исследовал?

если падает медленно, то это наверное оно в нпс застревает, можно такого же эффекта добиться, если ввести много раз impulse 102. Тут Кутузоф расписывал, как удалять хулл нпс сразу после убивания, возможно, это поможет

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 01-01-2021 в 18:27:

FreeSlave это распространённый баг. Обычно проявляется, когда ориджин заспавненного оружия находится в стене. Здесь поможет проверка на tr.allSolid, чтобы точка спавна ствола не была внутри БСП-геометрии. Нужно просто сдвигать точку спавна в сторону от стены. Ещё одно проявление этого бага - когда батарейки или аптечки спавнятся из разбитых коробок внутри полки, а потом медленно проваливаются сквозь пол. Причина та же самая - спавн с ориджином внутри браша.

Добавлено 02-01-2021 в 01:21:

Цитата:
JPEG писал:
если падает медленно, то это наверное оно в нпс застревает

Никогда не видел, чтобы стволы застревали в НПС. Только в стенах. Но если так, то грамотным решением будет придать стволу ускорение в сторону от стены или НПС, чтобы он хоть на 10-20 юнитов отлетал.

Добавлено 02-01-2021 в 01:27:

Цитата:
JPEG писал:
Тут Кутузоф расписывал, как удалять хулл нпс сразу после убивания

Есть два варианта этого решения. Первое через UTIL_SetSize, что приводит к тому, что падающий трупак нельзя бить монтировкой. Второе через модификацию трассы в pm_shared.c (см. мой последний тутор по ползанию или сорцы Рикошета). Во втором случае пропадает только коллизия с игроком. Чтобы убрать коллизию с заспавненным оружием, надо юзать grouptrace и groupinfo. Я уже точно не помню, как там правильно это делается, но обоим энтитям нужна одинаковая группа. Вообще, в голдсорсе есть движковая функция регулировки коллизии, pfnShouldCollide, но, как это не удивительно, она не работает. Потому что умное тело, которое её писало, поставило в коде return вместо continue, или наоборот. Кому интересно, можете глянуть фикс в сорцах ReHLDS.


Отправлено FreeSlave 01-01-2021 в 18:33:

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


Я это правил выставлением у предметов и аммуниции UTIL_SetSize в нулевой вектор и задаванием размера через SetObjectCollisionBox по аналогии с оружием (т.к. с CBasePlayerWeapon такого бага нет).

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 01-01-2021 в 18:37:

FreeSlave ситуации с ящиками на полках и оружием грантов немного разные. Если в случае полок итем рано или поздно "выпадет" из браша, когда провалится сквозь полку, то в случае с застрявшим в стене стволом это не прокатит.


Отправлено FreeSlave 01-01-2021 в 18:48:

Цитата:
Ku2zoff писал:
Если в случае полок итем рано или поздно "выпадет" из браша, когда провалится сквозь полку, то в случае с застрявшим в стене стволом это не прокатит.


Да вроде такое может произойти, когда монстр и в открытом поле стоит, не около стен. Может, и правда в самом монстре застревает. Например, у шоковых тараканов в опфоре прописан хак, по которому размер шокроача задается только через две секунды после его спавна, чтобы избежать застревания в шок трупере.

Цитата:
JPEG писал:
Тут Кутузоф расписывал, как удалять хулл нпс сразу после убивания, возможно, это поможет


Это отдельный туториал или где-то в этой теме?

Цитата:
Ku2zoff писал:
Второе через модификацию трассы в pm_shared.c (см. мой последний тутор по ползанию или сорцы Рикошета). Во втором случае пропадает только коллизия с игроком. Чтобы убрать коллизию с заспавненным оружием, надо юзать grouptrace и groupinfo. Я уже точно не помню, как там правильно это делается, но обоим энтитям нужна одинаковая группа.


Было бы неплохо тутор по этим вещам заиметь. У нас на форуме есть ещё тутор по прохождению игроков сквозь друг друга https://hlfx.ru/forum/showthread.php?s=&threadid=4789 но там Дядя Миша тоже пишет, что нужно груп трейсы юзать.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 01-01-2021 в 18:53:

Цитата:
FreeSlave писал:
Это отдельный туториал или где-то в этой теме?

https://hlfx.ru/forum/showthread.php?s=&threadid=5405
Влияет только на коллизию игрока. То есть, игрок не коллайдит с энтитей PM_Ignore. Задаешь дохлому монстру параметр, который справедлив для PM_Ignore, и можно будет сразу после смерти монстра проходить через его трупак, не дожидаясь окончания анимации смерти. Я это дело завёл, когда меня выбесили очень долго подыхающие буллсквиды. Там капец длинная анимация. Ну и ещё всегда бесило, что невозможно проползти по вентиляции некоторое время после смерти хедкраба, трупак которого перегородил путь.


Отправлено JPEG 01-01-2021 в 23:45:

Цитата:
FreeSlave писал:
Это отдельный туториал или где-то в этой теме?

я брал отсюда

http://hlfx.ru/forum/showthread.php...3&postid=147536

ещё связанное есть тут https://hlfx.ru/forum/showthread.ph...&pagenumber=164

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Crystallize 02-01-2021 в 15:58:

Цитата:
Дядя Миша писал:
дело еще и в том, что менять местами клиппинг и гамму нельзя, тогда у теней появляется белая окантовка.

Я сейчас попробовал, не заметил такого. Может это только при использовании какого-нибудь бампа и делюксмапы?
При клиппинге до 196 есть разница в цвете солнышка и в размере зашкаливающего пятна под лайтспотом. При 255 разницы не заметил. Зато заметил что директ от лайтспота идёт кольцами чисто белого и чуть подкрашенного цвета.

Добавлено 02-01-2021 в 22:58:

я не помню где что но видимо с пятном это дефолт.


Отправлено Crystallize 02-01-2021 в 16:03:

гамма раньше клиппинга


Отправлено Crystallize 02-01-2021 в 16:05:

дефолт?


Отправлено Crystallize 02-01-2021 в 16:07:

гамма до клиппинга, клип 196, даёт красноватый оттенок


Отправлено Crystallize 02-01-2021 в 16:13:

мои эксперименты с подтяжкой под сорс, в том числе клиппинг 255 дают чуть более бледный оттенок чем дефолт


Отправлено Crystallize 02-01-2021 в 16:15:

аналогично, внимание на кружки на лайтмапе


Отправлено Crystallize 02-01-2021 в 16:45:

а это если пересчитывать цвет ещё раньше, в даблах, но тогда непонятно что делать с желтушным солнцем


Отправлено Crystallize 06-01-2021 в 16:17:

Почему возникает эффект бензиновой плёнки когда у очень тёмных и очень светлых люкселей подскакивает насыщенность и появляются красные, синие, зелёные пятна? Такое даже в ХЛ2 на тенях есть. А вот в лайтбейкере вроде нету
И вот здесь ещё, что имелось в виду? Смысл сравнения с нулём?

C++ Source Code:
#define Q_rint(x)		((x) < 0 ? ((int)((x) - 0.5)) : ((int)((x) + 0.5)))


Отправлено ncuxonaT 06-01-2021 в 18:18:

Потому что в лайтбейкере есть тонмаппинг, и он включен по умолчанию


Отправлено Crystallize 06-01-2021 в 19:09:

А почему вообще изменение яркости приводит к тому что в цвете начинает доминировать то одна то другая компонента и изображение идёт радугой?


Отправлено ncuxonaT 06-01-2021 в 19:30:

Из-за округления наверное


Отправлено Crystallize 06-01-2021 в 20:15:

ну ок а в ХЛ2 почему это проявляется?


Отправлено ncuxonaT 06-01-2021 в 20:19:

Crystallize а почему бы не проявляться? Там лайтмапа как-то иначе хранится/записывается?


Отправлено Crystallize 07-01-2021 в 10:02:

ncuxonaT ну она же там с четвертым компонентом отвечающим за возведение в степень.


Отправлено ncuxonaT 07-01-2021 в 14:20:

Crystallize какая там формула перевода из трех флоатов в четыре байтовых компонента?


Отправлено Crystallize 07-01-2021 в 15:57:

void VectorToColorRGBExp32

https://github.com/ValveSoftware/so..._conversion.cpp


Отправлено ncuxonaT 08-01-2021 в 05:48:

Crystallize экспонента всё-таки шаренная и выбирается по самому яркому каналу, поэтому, например, если лампочка светит желтым, то гуляние точности в синем канале будет заметнее. И еще, либо у меня голова не соображает, либо они используют только половину диапазона.


Отправлено Crystallize 08-01-2021 в 11:04:

Цитата:
ncuxonaT писал:
Из-за округления наверное

У меня была такая мысль, я поменял чтобы директ писался сразу в byte. Появился некий высокочастотный дефект, типа масляной краски, но эти разводы еле заметны и явно не того же порядка что и цветовая аберрация. Вот мы пишем в байт:


Отправлено Crystallize 08-01-2021 в 11:04:

А вот во флоат или дабл, не помню:


Отправлено ncuxonaT 08-01-2021 в 12:25:

Crystallize на первом скрине цветные пятна прям хорошо видно. Я наверное неправильно понимал, что ты имеешь в виду под эффектом бензиновой пленки. Щас померял цвет пипеткой в месте этого странного перехода, там почему-то меняются оттенок и насыщенность. Какой цвет у лампочки? И без радиосити то же самое?


Отправлено Crystallize 08-01-2021 в 13:08:

ncuxonaT я не могу понять откуда берутся большие пятна: вон сначала жёлто-оранжевое и вокруг него более крупное но менее яркое красно-зелёно-синее.
Это и есть чистый директ без радиосити, даже без неба.
лампочка 254 216 146 150


Отправлено ncuxonaT 08-01-2021 в 13:48:

Crystallize а серый свет откуда светит?
Красно-оранжевое пятно 1 - это из-за пересвета, одна или две компоненты больше 255, тонмаппинг бы это убрал.
Странный переход цвета в зоне 2 - вот тут я без понятия.


Отправлено Дядя Миша 08-01-2021 в 14:49:

Цитата:
Crystallize писал:
И вот здесь ещё, что имелось в виду? Смысл сравнения с нулём?

где ты там увидел сравнение с нулём?

Цитата:
Crystallize писал:
ну она же там с четвертым компонентом отвечающим за возведение в степень.

RGBE это: https://translate.yandex.ru/transla...BE_image_format
четвертый байт - экспонента.

Добавлено 08-01-2021 в 17:49:

Цитата:
ncuxonaT писал:
Странный переход цвета в зоне 2 - вот тут я без понятия.

да гамма это

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 08-01-2021 в 14:51:

Цитата:
Дядя Миша писал:
да гамма это

шта


Отправлено Crystallize 08-01-2021 в 16:14:

Цитата:
ncuxonaT писал:
Crystallize а серый свет откуда светит?

ок там был ещё один лайт, вот без него:

Добавлено 08-01-2021 в 23:13:

Цитата:
ncuxonaT писал:
Красно-оранжевое пятно 1 - это из-за пересвета, одна или две компоненты больше 255, тонмаппинг бы это убрал.

Интересно, как же именно накручивание яркости параллельно задирает насыщенность. Ну то есть правда интересно.
Добавлено 08-01-2021 в 23:14:

Цитата:
Дядя Миша писал:
где ты там увидел сравнение с нулём?

#define Q_rint(x) ((x) < 0 ? итд


Отправлено Дядя Миша 08-01-2021 в 17:43:

Цитата:
Crystallize писал:
#define Q_rint(x) ((x) < 0 ? итд

я повторяю вопрос - где здесь сравнение с нулём?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 08-01-2021 в 20:25:

Цитата:
Crystallize писал:
Интересно, как же именно накручивание яркости параллельно задирает насыщенность. Ну то есть правда интересно.

Но насыщенность не растет. Яркость увеличивается, первым в 255 упирается красный цвет, дальше растут зеленый и синий, из-за этого оттенок сдвигается в желтый. Красный круг вокруг желтого пятна - это оптический обман. Можешь взять пипеткой цвет с круга и замазать им желтое пятно, и внезапно окажется, что снаружи желтого пятна был равномерный градиент одного оттенка. Ну точнее так бы было, если бы не странные сдвиги цветов дальше.
Вот референс из блендера для лампочки твоего цвета. Слева - если переводить цвет в линейное пространство, справа - если оставить как есть.


Отправлено Дядя Миша 08-01-2021 в 21:19:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 08-01-2021 в 22:05:

Дядя Миша ну так не нужны ни нормализация, ни клампинг. Ты объясни, почему цвет плавает там, где нет пересветов. И почему он не соответствует ни одному, ни другому референсу.

Цитата:
Crystallize писал:
И вот здесь ещё, что имелось в виду? Смысл сравнения с нулём?
C++ Source Code:
#define Q_rint(x)		((x) < 0 ? ((int)((x) - 0.5)) : ((int)((x) + 0.5)))

Это округление до ближайшего целого. Каст из флоата в инт просто отбрасывает дробную часть, поэтому, чтобы получить ближайшее целое, нужно сначала прибавить 0,5. А если число отрицательное, то вычесть.


Отправлено Дядя Миша 09-01-2021 в 07:41:

Цитата:
ncuxonaT писал:
Ты объясни, почему цвет плавает там, где нет пересветов

я ж говорю, гамма даёт этот эффект поидее.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 09-01-2021 в 13:35:

Цитата:
Дядя Миша писал:
я ж говорю, гамма даёт этот эффект поидее.

А не должна. И на референсе гамма правильная, а цвет не скачет.


Отправлено Дядя Миша 09-01-2021 в 15:40:

Вообще надо будет в своём лайтмаппере посмотреть, у меня вроде нет этих пятен.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 10-01-2021 в 10:42:

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

C++ Source Code:
1
VectorScale( lb, 1/255.0f, lb );
2
 
3
float Lmnce, tonedowntimes;
4
Lmnce = Luminance( lb );
5
tonedowntimes = ( 1.0f + Lmnce ) / ( 1.0f + ( Lmnce / wpointpow2 ) );
6
VectorScale( lb, 1/tonedowntimes, lb );
7
if( lb[0]>=1 || lb[1]>=1 || lb[2]>=1 )
8
  VectorScale( lb, 1/VectorMax( lb ), lb );
9
 
10
VectorScale( lb, 255.0f, lb );

Тут возникает пара вопросов: значение белой точки считать через люминанс или просто брать максимум от rgb? Если я нашёл отношение люминанса до и после тонмаппинга, можно ли просто отскейлить rgb цвет на него? В статье об этом не уточняют.


Отправлено ncuxonaT 10-01-2021 в 12:25:

Crystallize рейнхард мерзкий, попробуй экспоненциальный
color.rgb = vec3(1.0) - exp(- color.rgb);
И это, тонмаппинг должен идти до гамма-коррекции.


Отправлено Дядя Миша 10-01-2021 в 13:02:

я бы на вашем месте хранил вообще интенсивность в 24-х битах, взаместо цвета, тогда и разводов не будет. А источники можно в реалтайме накладывать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 10-01-2021 в 13:43:

а дот и затухание по дистанции тоже в 24 битах считать?


Отправлено Дядя Миша 10-01-2021 в 13:54:

Crystallize ты считай во флоатах, как обычно. Но монохром.
А потом как лайтмапу на диск сохранять - уже пиши вместо RGB 24-битное значение интенсивности. И потом в шейдере его смешивай с реальными источниками.
Вот у Хумуса даже демка была: http://humus.name/3D/ModernLightMapping.zip
Хотя что в ней модернового, так с незапамятных времён делают.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 10-01-2021 в 14:06:

Разводов и так быть не должно. Если есть разводы, значит что-то не так считается.


Отправлено Crystallize 10-01-2021 в 16:15:

Цитата:
ncuxonaT писал:
Crystallize рейнхард мерзкий, попробуй экспоненциальный
color.rgb = vec3(1.0) - exp(- color.rgb);

На ярких лайтах вообще как будто клампинг без тонмаппинга, ну тут хоть это не так заметно. А есть вариант с указанием белой точки? А че зря её считал?


Отправлено ncuxonaT 10-01-2021 в 20:47:

Crystallize я без понятия, что это за белая точка и зачем она нужна. Но по крайней мере теперь нет желто-красного пятна на стене.

Дядя Миша непонятно, как хумус кластеры рассчитывал. В кластер пихаются все непересекающиеся источники? А что делать с глобалкой?

Добавлено 10-01-2021 в 23:47:

Раз уж речь про компиляторы, скажите мне, как рассчитывается яркость ареа лайтов? В lights.rad записана яркость чего? Одного квадратного юнита?


Отправлено Дядя Миша 10-01-2021 в 21:39:

Цитата:
ncuxonaT писал:
А что делать с глобалкой?

глобалку на отдельную страничку. Ну или в соседний канал, как в UE.

Цитата:
ncuxonaT писал:
В lights.rad записана яркость чего?

абстрактных чисел. Оно мало того что нефизичное, так еще и внутри компилятора умножается на какой-то от балды подобранный множитель.
Причём он свой в халфе и свой в ку3. Кстати, я тут выяснил любопытную вещь. В сталкере были ареа-лайты, но без PTPFF. Неудивительно что их так никто и не юзал.

Добавлено 11-01-2021 в 00:38:

Цитата:
ncuxonaT писал:
В кластер пихаются все непересекающиеся источники?

кластеры там скорее для оптимизации. Да вон же сорцы в комплекте и там код генерации этих кластеров. Оно там просто флажочки накапливает за какой пиксель лайтмапы отвечают какие источники.

Добавлено 11-01-2021 в 00:39:

Да и как я уже говорил, во всех подобных технологиях суть очень проста, а больше всего времени отнимает разная подготовительная возня.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 11-01-2021 в 02:06:

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

В голде там множитель 0.1, но он такой маленький видимо просто чтобы скомпенсировать дикое усиление яркости вызванное Valve weird divider = x^3/10. А в сорсе дивайдера нет и множитель уже адекватный 100*100, чтобы при квадратичной затухании, на 100 юнитов под лампой, т.е. на полу, свет примерно равнялся тому что маппер выставил в настройках лайта(текслайта)


Отправлено ncuxonaT 11-01-2021 в 02:37:

Но яркость в итоге зависит от площади? Если я хочу заменить ареалайт одним или несколькими спотлайтами, как высчитать их яркость?


Отправлено Crystallize 11-01-2021 в 03:26:

по-моему зависит, да.

C++ Source Code:
VectorScale(dl->intensity, p->area, dl->intensity);
VectorScale(dl->intensity, DIRECT_SCALE, dl->intensity);


Отправлено ncuxonaT 11-01-2021 в 04:33:

Crystallize а Valve weird divider как нужно применять?


Отправлено Crystallize 11-01-2021 в 06:56:

ncuxonaT

C++ Source Code:
1
l1 = max(dl->intensity[0], max(dl->intensity[1], dl->intensity[2]));
2
l1 = l1 * l1 / 10;
3
 
4
dl->intensity[0] *= l1;
5
dl->intensity[1] *= l1;
6
dl->intensity[2] *= l1;

у ДМ ещё и radius из l1 берётся емнип

Добавлено 11-01-2021 в 13:56:

лол почему появилась нумерация строчек


Отправлено Дядя Миша 11-01-2021 в 07:17:

Цитата:
Crystallize писал:
но он такой маленький видимо просто чтобы скомпенсировать дикое усиление яркости вызванное Valve weird divider = x^3/10.

Это только для точечных и направленных источников. Ареалайты не домножаются.

Цитата:
ncuxonaT писал:
Но яркость в итоге зависит от площади?

естественно зависит.

Цитата:
ncuxonaT писал:
Если я хочу заменить ареалайт одним или несколькими спотлайтами, как высчитать их яркость?

что значит "хочу" ? Можно подумать есть какой-то другой способ симулировать ареалайты. Ареалайт, это грубоговоря такой же направленный источник но с хитростью. Он использует PTPFF. Из-за чего свет исходит не из одной точки, а оказывается равномерно размазанным по всей площади, т.е. именно то, что нам и надо.
Яркость их поидее вычислять никак не надо. В ку3 яркость каждого такого источника умножается на 3 и на 0.25, но это повторюсь от балды подобранные значения. А саму яркость делить на кол-во источников не надо, они же не точечные. PTPFF сам это сделает. Но ему нужно иметь доступ к геометрии, а саму поверхность желательно нарезать на небольшие квадратики.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 11-01-2021 в 16:22:

Как найти люксели вокруг люкселя samp->light[k]?


Отправлено Дядя Миша 11-01-2021 в 16:45:

Цитата:
Crystallize писал:
Как найти люксели вокруг люкселя samp->light[k]?

ну этож условно двухмерный массив. Посдвигай по ядру, выбери которое тебе больше нравится. Я так понимаю, ты просто хочешь найти 8 люкселей вокруг заданного?
C++ Source Code:
1
-1, -1
2
0, -1
3
1, -1
4
-1, 0
5
1, 0
6
-1, 1
7
0, 1
8
1, 1

Это оффсеты для текущего x, y. Но смотри, чтобы не выйти за границы массива. И не пиши результ в тот же массив.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 11-01-2021 в 19:51:

а, там размеры конкретного массива и текущая координата на виду лежат? Ну ок, присмотрюсь, спасибо.

Что увидел. Чел учит маппать точка к точке.


Отправлено Дядя Миша 11-01-2021 в 20:52:

Цитата:
Crystallize писал:
а, там размеры конкретного массива и текущая координата на виду лежат?

k = x * width + y; или что-то такое, я всё время забываю правильную формулу. Ну да увидишь - не ошибешься.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 14-01-2021 в 07:27:

Цитата:
Crystallize писал:
Чел учит маппать точка к точке.

Не знаю, насколько это актуально для современных движков, но GSC вообще не стеснялись оставлять "за кадром" кучу ненужново гавна, когда делали Свалкера. Для меня зогадко, почему они не замутили 3д-скай. За границами локаций торчит реальная геометрия и реальные деревья. А небо статичное, облака по нему не плывут. Для 2007 года весьма печально, учитывая, что в хл2 2004 года Цытадэль была в 3д небе. Да чё уж говорить про хл2, когда в первом анриле было полноценное 3д небо. А это, на минуточку 98 год.


Отправлено Crystallize 14-01-2021 в 08:08:

Ku2zoff ХЛ2 в принципе упирает больше на геймплей чем на контент самой игры. К тому же у меня впечатление что славяне и азиаты не талантливы в программировании настолько массово как англосаксы, мы как раз больше по контенту.


Отправлено Дядя Миша 14-01-2021 в 08:34:

Ku2zoff 3D небо - это наоборот костыль, который юзали не от хорошей жизни, а от ограниченного пространства.
Быстрее всё нарисовать в одном проходе, чем тратить его на два.
Проход сам по себе удовольствие недешевое.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 14-01-2021 в 15:38:

Цитата:
Дядя Миша писал:
Быстрее всё нарисовать в одном проходе, чем тратить его на два.

Ну это верно. Но, 3д небо даёт кучу возможностей. Я в своё время был в восторге от Facing Worlds из UT99, как там небо крутится.

Добавлено 14-01-2021 в 22:38:

Цитата:
Crystallize писал:
К тому же у меня впечатление что славяне и азиаты не талантливы в программировании настолько массово как англосаксы, мы как раз больше по контенту.

Ну не знаю. У меня обратное впечатление. Взгляни на Сру от Страха - куча офигенного контента и ущербный код. А The Gate? Хорошие карты, неплохой сюжет, даже музыку из Инди Джонса украли. А анимации у пушек не соответствуют коду, и панцершрек с лазерным наведением. Только недавно нашёл на моддб исправленную версию. Может быть это только в моддинге так, а с крупными ААА-проектами дела обстоят хуже.


Отправлено Crystallize 14-01-2021 в 15:38:

Ku2zoff ну можно по методу доктора Тресни поместить в центр карты большую анимированную модель.


Отправлено Ku2zoff 14-01-2021 в 15:44:

Crystallize это ж не от хорошей жизни, а от того, что доступа к коду нет. Да и не всё можно моделью сделать. Партикли, к примеру, так не добавить. Чтоб дым из трубы завода шёл.


Отправлено Дядя Миша 14-01-2021 в 16:26:

Цитата:
Ku2zoff писал:
Но, 3д небо даёт кучу возможностей

да ничего оно не даёт абсолютно. В ку2 тоже небо крутилось, хотя никакого 3д скайбокса там не было.
Единственный повод его использовать - это если ты на небе собрался разыгрывать какие-то представления перед изумлоънным игроком.

Цитата:
Ku2zoff писал:
Партикли, к примеру, так не добавить. Чтоб дым из трубы завода шёл.




зачем делать фейковый завод, если масштабы карты позволяют сделать настоящий? У 3д неба есть одна проблема - его сложно состыковать с обычной геометрий, так чтобы юзер ничего не заподозрил. Возьми тот же Lost Coast, там прямо видно где небо начинается. А в Сталкере такого ощущения нет.

Добавлено 14-01-2021 в 19:24:

В q3map2 была кстати опция - комнатка скайбокса средствами компилятора превращалась в гигантскую, вокруг уровня. И это довольно много кто юзал.
Хотя оно выглядело так же отвратно как и само 3д небо, потому что маленькая модель скейлится в десятки раз и все её косяки видны невооруженным взглядом.

Добавлено 14-01-2021 в 19:26:

Тьху, как же я мог забыть. В халфе-то вокруг уровня ничего и не налепишь - компилятор начнёт на утечки ругаться. А в сталкере вообще нет ограничивающей геометрии, там просто полигоны в пространстве висят.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 14-01-2021 в 16:41:

Цитата:
Дядя Миша писал:
в сталкере вообще нет ограничивающей геометрии

Да там вообще ничего ограничивающего нет. Поднимай лимиты сколько влезет, пока не получишь вылет из-за нехватки памяти. В инструкции к лост альфе так и написано: "не выкручивайте сильно радиус и плотность травы - может вылететь". Она ж 32-битная, эта альфа.
Цитата:
Дядя Миша писал:
компилятор начнёт на утечки ругаться

Ну размер уровня можно же увеличить. Только в лимиты бсп упрёшься. Быстрее всего вылезет AllocBlock: Full. Вальва так и не хочет убирать ограничение в движке. Хотя в свенкоопе убрали и лимиты повысили. Сингловые моды под svengine играются без проблем, про мультиплеерные не знаю.

Добавлено 14-01-2021 в 23:41:

В свендвижке есть опция в либлисте largemap_aware. Вроде как должна включать поддержку больших карт в модах с закрытыми сорцами. Думаю, что модифицирует WRITE_COORD, чтоб темпэнтити за границей +/-4096 работали. Но засада в том, что READ_COORD находится в клиентке, и её хоть как надо править ручками в сорцах.


Отправлено Дядя Миша 14-01-2021 в 17:26:

Цитата:
Ku2zoff писал:
Да там вообще ничего ограничивающего нет

ну без скайбокса плохо. Мне совершенно не улыбается рисовать его программно. К тому жы он предотвращает вываливание в пустоту, лайтмаппер в него лучи испускает, чтобы убедится, что луч прошёл до неба.
Наконец это позволяет сделать под землей еще одну комнатку с небом.

Цитата:
Ku2zoff писал:
Думаю, что модифицирует WRITE_COORD, чтоб темпэнтити за границей +/-4096 работали

типа того

Добавлено 14-01-2021 в 20:26:

Я уже когда окончательно закончил с работами над Xash3D мне в голову пришла простая мысль. WRITE_COORD надо передавать как half-float.
И точность не потеряется и как раз в 2 байта уложимся. Ну теперь уже не актуально.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 14-01-2021 в 18:30:

Цитата:
Дядя Миша писал:
ну этож условно двухмерный массив. Посдвигай по ядру, выбери которое тебе больше нравится. Я так понимаю, ты просто хочешь найти 8 люкселей вокруг заданного?
C++ Source Code:
1
-1, -1
2
0, -1
3
1, -1
4
-1, 0
5
1, 0
6
-1, 1
7
0, 1
8
1, 1

Это оффсеты для текущего x, y. Но смотри, чтобы не выйти за границы массива. И не пиши результ в тот же массив.

Вычисляю размеры массива, но там нужно что-то еще кроме как поделить на степ и прибавить еденичку. Буквально еще 1, иногда 2 прибавить. Бывает что под экстент 9 юнитов выделено 4 люкселя, хотя хватило бы двух. Ты там еще какой-то гаппинг прибавляешь к совсем тонким лайтмапам? Оно как-то непредсказуемо, одна и та же лайтмапа 16*231 юнит может быть как 3*16 люкселей так и 3*17.


Отправлено Дядя Миша 14-01-2021 в 23:23:

Почему непредсказуемо?
К каждой лайтмапе обязательно добавляется по одному люкселю, чтобы минималка получилась 1 х 1.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 15-01-2021 в 06:50:

Да там и после этого несовпадение между w*h и fl->numsamples.

C++ Source Code:
1
facenum_t *fn;
2
fn = &g_faceneighbor[facenum];
3
texture_step = GetTextureStep( &g_ )
4
w = ceil( fn->extents[0] / texture_step ) + 1;
5
h = ceil( fn->extents[1] / texture_step ) + 1;

скажем 6*6=36 а реально fl->numsamples = 42, или 5*6=30 а реально 35


Отправлено Дядя Миша 15-01-2021 в 08:07:

Crystallize ты боишься посмотреть как fl->numsamples вычисляется?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 15-01-2021 в 17:37:

Посмотрел лайтмапу через Crafty, там красивый кремовый цвет без радуги. Может в ксаше в glsl что-то происходит?


Отправлено Дядя Миша 15-01-2021 в 19:02:

Гамма там происходит. Сколько еще раз мне повторить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 15-01-2021 в 21:45:

С гаммой 1.0 цвет должен быть нормальный?


Отправлено Дядя Миша 15-01-2021 в 21:52:

Оно не даст выставить гамму 1.0
Гамма регулируется от 1.8 до 3.0

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Hmoory 16-01-2021 в 19:19:

del


Отправлено Crystallize 16-01-2021 в 20:39:

Цитата:
Дядя Миша писал:
Crystallize ты боишься посмотреть как fl->numsamples вычисляется?

Там где она вычисляется, в функцию изначально передается указатeль на lightinfo_t по которому можно сразу посмотреть l->texsize. А в FinalLightFace передан только facenum, и сама функция запускается многопоточно, так что я не знаю как дописать новый переметр. Можно наверное сдвигаться на facenum*sizeof(lightinfo_t) или искать совпадение facenum и l->surfnum, но пока не получалось.


Отправлено Дядя Миша 16-01-2021 в 22:18:

А, я понял, тебя наверное вот это смутило, да?

C++ Source Code:
pFaceLight->numsamples = pSamples - samples;


Добавлено 17-01-2021 в 01:17:

Это апчхимизатор такой. Пытается по рёбрам полигона подрезать лайтмапу и сэкономить немного люкселей.

Добавлено 17-01-2021 в 01:18:

Вообще там много устаревшего кода, никто уже так лайтмапы не считает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SNMetamorph 17-01-2021 в 12:31:

Можно ли в голдсурсе как-то на стороне клиента узнать classname энтити? Может быть для этого надо что-то в delta.lst подкруть? Знает кто нибудь?


Отправлено Ku2zoff 17-01-2021 в 13:40:

SNMetamorph если есть доступ к сорцам - передавай класснейм мессагой. Если сорцев нету - тады ой. Даже пев->хелс не передаётся на клиент. На мой взгляд весьма сомнительная оптимизация. Пиши я сам движок, я бы все энтварсы передавал на клиент. И выборочно бы регулировал для каждой энтити, какие точно передавать через delta.lst, без лазания в код дллок. Да вообще, по-хорошему, лучше было бы иметь не фиксированный набор энтварсов, зашитый в движок, а изменяемый средствами дллок и дельты.


Отправлено Дядя Миша 17-01-2021 в 13:43:

Цитата:
SNMetamorph писал:
Можно ли в голдсурсе как-то на стороне клиента узнать classname энтити?

заведи какие-нибудь типы энтить, сохрани в iuser1.
TYPE_WORLDSPAWN
TYPE_PLAYER
TYPE_FUNCDOOR

Но вообще я не представляю, зачем класснейм на клиенте.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 17-01-2021 в 15:34:

Цитата:
Дядя Миша писал:
А, я понял, тебя наверное вот это смутило, да?
C++ Source Code:
pFaceLight->numsamples = pSamples - samples;


Это апчхимизатор такой. Пытается по рёбрам полигона подрезать лайтмапу и сэкономить немного люкселей.

Ты думаешь поэтому у меня площадь лайтмапы по экстентам немного не совпадала с fl->numsamples?
Что-то я там даже близко ничего похожего не наблюдаю. Либо его там нет, либо оно записано совершенно иначе.


Отправлено Дядя Миша 17-01-2021 в 17:14:

Я смотрю исходники source 2007.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 17-01-2021 в 17:25:

А, ну я-то тут с p2rad уже.


Отправлено KorteZZ 17-01-2021 в 21:39:

Ванильная халва. Есть вышка - func_door_rotating, которая должна упасть от взрыва, когда func_button получает урон. Вышка в высоту 500 юнитов: 64х64х64 юнита - origin браш, на котором стоит простой браш высотой 436 и сторонами 64 юнитов. Общая высота вышки ровно 500 юнитов. На расстоянии в 500 юнитов от центра этой вышки поставил два func_pushable размерами 64х64х64. Вышка отказывается падать. Оказывается, дело в том, что эти пушабли стояли впритык друг к другу и углами соприкасались, из-за чего вышка не падала. Стоило отодвинуть эти пушабли на расстояние более 500 юнитов от его центра, как вышка стала падать. Или разнести пушабли подальше друг от друга на расстояние более 3 юнитов. Это что за баг такой и почему так происходит? На ксаше работает все отлично.

__________________

Killing Floor: Horzine Outbreak


Отправлено Дядя Миша 17-01-2021 в 21:41:

Да что тут сделаешь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 18-01-2021 в 08:02:

Я таки сделал динамическую смену тумана
https://youtu.be/NNCDCs2i93Y
Но в одном не могу никак разобраться. Как мне достать 4 заветные числа тумана из g_pWorld->pev->impulse? И если доставать надо не оттуда, то откуда, и как?
На данный момент в моей энтити 2 поля - стартовый туман и конечный.
Это костыльно, но хотя бы уже работает. Энтитя прописывает туман в Update-packed-fog и в g_pWorld (чтобы в сейвресторе сохранялось). Так вот как мне достать текущее значение тумана из карты?

__________________
Мой мод на Xash


Отправлено KorteZZ 18-01-2021 в 09:17:

Дядя Миша
Объясни, плиз, в чем дело. Ты же пофиксил это в ксаше

__________________

Killing Floor: Horzine Outbreak


Отправлено Дядя Миша 18-01-2021 в 19:47:

Цитата:
Aynekko писал:
Как мне достать 4 заветные числа тумана из g_pWorld->pev->impulse?

как записывается, только наоборот.

C++ Source Code:
1
r = (pev->impulse & 0xFF000000) >> 24;
2
g = (pev->impulse & 0xFF0000) >> 16;
3
b = (pev->impulse & 0xFF00) >> 8;
4
density = (pev->impulse & 0xFF) >> 0;


Цитата:
KorteZZ писал:
Ты же пофиксил это в ксаше

написал движок и там исправил. Делов-то.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 18-01-2021 в 20:10:

Цитата:
Дядя Миша писал:
как записывается, только наоборот.

Спасибо, попробую переделать. Так-то я уже сделал отдельную простую энтитю, куда запоминаю туман и откуда его беру потом (iuser1-4). На большее меня не хватило

Добавлено 18-01-2021 в 23:10:

Цитата:
Дядя Миша писал:
C++ Source Code:
1
r = (pev->impulse & 0xFF000000) >> 24;
2
g = (pev->impulse & 0xFF0000) >> 16;
3
b = (pev->impulse & 0xFF00) >> 8;
4
density = (pev->impulse & 0xFF) >> 0;


Спасибо еще раз. Все четко сработало.

__________________
Мой мод на Xash


Отправлено Crystallize 24-01-2021 в 10:23:

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

И она работает достаточно неплохо: для радиуса в 500 юнитов погрешность полтора юнита, для 200 - 3-4 юнита, для 150-175 что-то около 5, но дальше начинается трэш и для 100 юнитов реальный радиус движения оказывается 120, для 30-50 - 116.

Т.е. налицо рукалицо какое-то мягкое ограничение: мгновенное изменение YAW (2.9 градуса в кадр или 208 градусов в секунду, немало) не означает мгновенного изменения вектора моментальной скорости, даже близко. Большие или малые значения sv_stopspeed ситуацию не спасают. Игрок как-то проскальзывает, чтоли.

Добавлено 24-01-2021 в 17:23:

Fitzquake это.


Отправлено Дядя Миша 24-01-2021 в 11:57:

И мы увидим в этой тишине
Как далеко мы были друг от друга,
Как думали, что мчимся на коне,
А сами просто бегали по кругу.
А думали, что мчимся на коне.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 25-01-2021 в 06:46:

Цитата:
Crystallize писал:
мгновенное изменение YAW

Столкнулся с этой фигнёй, когда делал мониторы, которые можно поюзать, и камера плавно к ним "подъезжает". Иногда YAW меняется не в ту сторону, откуда меньше поворачиваться, а наоборот. NormalizeAngles немного помогает, но не на 100%.


Отправлено Crystallize 25-01-2021 в 08:45:

Ku2zoff да я про другое. Я поворачиваю игрока а он поворачивается в нужную сторону, но не до конца, и накапливается ошибка.

Добавлено 25-01-2021 в 15:44:

причём эту проблему можно обойти, если игрок будет идти медленнее.

Добавлено 25-01-2021 в 15:45:

случайно каламбур вышел))


Отправлено Crystallize 25-01-2021 в 16:07:

Вы не поверите, я сделал кармаковский фикс на отключение баннихопа и у меня баг уменьшился в разы(!), теперь при заданном радиусе 50 он послушно бегает не по кругу 115 а по 55 юнитов!!! при 100 юнитах-по 103.


Отправлено Дядя Миша 25-01-2021 в 17:05:

Афтар маладец за проделаную работу!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 30-01-2021 в 17:43:

У меня с кодом Фитцквейка давно ещё была такая проблема что переменную нельзя объявить в произвольном месте функции одновременно с присваиванием: error C2143: syntax error : missing ';' before 'type' Поэтому сначала объявить все переменные и только потом пишешь логику.

Сейчас ещё вылезло что при объявлении void-функции всегда возникает ошибка 4027 declared without formal parameter list хотя входные переменные там есть. Причём если опять нажать компиляцию то ошибка исчезает.


Отправлено Ku2zoff 30-01-2021 в 21:38:

А подскажите, реально ли отловить нажатие клавиши escape в коде VGUI меню? Вроде как есть такая возможность, но при нажатии игра всё равно ставится на паузу, и открывается главное меню. Ещё в инвазионе бесило, что кодовые замки и терминалы управления надо закрывать, кликая мышкой. В TFC этот код почти работает: при видимой кнопке CANCEL в открытых TeamMenu и ClassMenu на первое нажатие esc открывается главное меню, на второе нажатие главное меню закрывается, и следом закрывается уже открытое VGUI меню. Может быть есть способ как то блокировать движковую команду? Или такое дурацкое поведение только в стим-версии?


Отправлено Дядя Миша 31-01-2021 в 06:40:

Есть две команды: cancelselect и escape.
Вот первая как раз закрывает всякие менюшки. Всё зависит от того, какую команду повесить на кнопку escape.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 31-01-2021 в 07:39:

Дядя Миша по-умолчанию в конфиге всегда к esc привязана cancelselect. Я корочи хукнул обе и подменил командами с вызовом gEngfuncs.ConDPrintf, чтобы отследить, какая когда используется. При вбивании в консоль в обоих случаях срабатывает escape. То есть в стим-халфе внутри движка cancelselect перенаправлена на неё. Но засада в том, что при нажатии клавиши esc в консоль ничего не выводится - такое впечатление, что тут GameUI.dll перехватывает нажатие клавиши, и уже потом выполняет команду в движке. Хотя я ещё не пробовал EngineCMD - только ClientCMD.

Добавлено 31-01-2021 в 14:39:

Глянул сорцы движка HL2 Beta. Ну точно, так и есть. GameUI перехватывает escape, и нажатие клавиши не доходит до клиента:

C++ Source Code:
if ( key == K_ESCAPE && VGui_GameUIKeyPressed() )
{
  // game ui handled it, so don't pass on
  return;
}

Это конечно же никак не лечится, потому что зашито в движок. Ну и сорцев GameUI.dll нету. Будем прицеплять закрытие VGUI-менюшек на пробел.


Отправлено Дядя Миша 31-01-2021 в 07:57:

В Key_Event должен приходить сигнал от искейпа поидее. Н у в ксаше точно приходит.

Цитата:
Ku2zoff писал:
Ну и сорцев GameUI.dll нету

где-то я их видел.

Добавлено 31-01-2021 в 10:57:

У Солокиллера кажется.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 31-01-2021 в 09:40:

Цитата:
Дядя Миша писал:
где-то я их видел.

Я про официальные сорцы. Отреверсенные я тоже где-то видел, но не вижу особого смысла собирать самому, если не нужно сильно модифицировать меню. Да и истерики на почве копиразма у буржуев никто не отменял. Могут только из-за этого обосрать мод.
Цитата:
Дядя Миша писал:
В Key_Event должен приходить сигнал от искейпа поидее.

Так он и приходит. А там ретёрн стоит, и нажатие клавиши не доходит до интерпретатора, если VGui_GameUIKeyPressed() == true.


Отправлено Shiber 02-02-2021 в 15:59:

Треск в начале и в конце зацикленного звука

Никак не могу избавиться в зацикленных звуках от треска при их повторном проигрывании. Как я понимаю, проблема где-то здесь (обведено жёлтым). Кто подскажет, как от этого грамотно избавиться?

UPD: вырезаю звуки из больших звуковых файлов со стоков.


Отправлено JPEG 02-02-2021 в 21:24:

Re: Треск в начале и в конце зацикленного звука

Цитата:
Shiber писал:
Никак не могу избавиться в зацикленных звуках от треска при их повторном проигрывании. Как я понимаю, проблема где-то здесь (обведено жёлтым). Кто подскажет, как от этого грамотно избавиться?

UPD: вырезаю звуки из больших звуковых файлов со стоков.


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

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Shiber 04-02-2021 в 10:49:

Цитата:
JPEG писал:
проблема в другом, волна ниточкой тянется, когда лупишь звук, то из-за неправильно поставленного места соединения конца лупа ниточка обрывается. Т.е. участок соединения двух концов должен иметь одну громкость, легче всего это сделать в точке качания нуля (горизонтальная линия)


Да, это я уже понял, но проблема, пока что, остаётся, даже если обрезать по нулям. Со звуком никогда не работал, буду думать!


Отправлено JPEG 04-02-2021 в 11:29:

Цитата:
Shiber писал:
Да, это я уже понял, но проблема, пока что, остаётся, даже если обрезать по нулям. Со звуком никогда не работал, буду думать!

могу попробовать заloopить

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Shiber 04-02-2021 в 13:19:

Цитата:
JPEG писал:
могу попробовать заloopить


Благодарю, но звуков будет очень много, мне надо самому понять методику


Отправлено FreeSlave 27-02-2021 в 10:58:

Вопрос связанный с размером энтить и столкновением.
Большинство прожектайлов (наверно даже все) в HL имеют нулевой размер, выставляемый через

code:
UTIL_SetSize( pev, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ) );


Однако в Opposing Force снаряд shockrifle'а имеет размер -4,4,4 4,4,4. При наличии реимплемантации я заметил странное поведение при стрельбе по гаргу. Снаряды попадают только если стрелять в ноги.
В самом опфоре такой проблемы нет. Там, оказывается, увеличили физический размер гарга, выставляемый через UTIL_SetSize, чтоб он соответствовал размеру модельки (в Half-Life у гарга тот же размер, что у агрунта). В опфоре снаряды задевают гарга по всей высоте, но не задевают руки.
Если выставить размер снаряда в нулевой, как и у остальных прожектайлов, то они корректно задевают хитбоксы гарга (включая руки) без необходимости изменения его физических размеров.
Собственно, проблема скорее всего касается не только гарга, просто на нём её легче всего отследить из-за несоответствия его физического размера и размера модельки.

Не знаю почему shock_beam'ы в опфоре имеют ненулевой размер, но тут вопрос в другом. Почему снаряды с нулевым размером корректно попадают в монстров по хитбоксам, а с ненулевым размером - попадают только в параллепипед, обозначенный UTIL_SetSize? Что за особые правила?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 27-02-2021 в 11:33:

Хитбоксы трейсятся только для трейслайна, для трассы боксом они игнорируются, если не задано обратное через флаг 512 при компиляции самой модели. Если исходник модели не доступен, можно выставить флажок
Hitbox Collision в моём модельвьювере и пересохранить модель.
Судя по всему это такая оптимизация. В халфе есть некоторые модельки, с которыми можно коллидить по их хитбоксам, оспри, например.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 01-03-2021 в 15:21:

Маркируются ли как-нибудь в халфе подводные сурфейсы? Может флаг какой есть? Глядел сорцы ксаша - там нашёл. Кое-что есть и в первой паранойе. А вот насчёт голдсорса ничего не понятно.


Отправлено Дядя Миша 01-03-2021 в 17:56:

Ku2zoff на кой они тебе?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 01-03-2021 в 18:04:

Дядя Миша захотел доделать подводные каустики. А то начатый код с 2016 года валяется недописанный. Так и не нашёл удобного способа пометить нужные сурфейсы. Метод от некоего Патрика с wavelength.net годится только для мировой воды, там он шарит по листьям с CONTENTS_WATER, и помечает нужные сурфейсы. Для воды-энтити это не катит.


Отправлено Дядя Миша 01-03-2021 в 18:19:

не юзай воду-энтить

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 01-03-2021 в 19:16:

Дядя Миша не, вода должна быть прозрачной. Как иначе ихтиозавров стрелять? А ещё мировая вода не умеет двигаться, сливать/наливать её не получится. Ну раз никак без извратов подводные сурфейсы не отфильтровать, то не будет никаких каустиков. Применю код для чего-нибудь другого.


Отправлено Дядя Миша 02-03-2021 в 10:10:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 02-03-2021 в 10:57:

Цитата:
Дядя Миша писал:
если вода с изменяемым уровнем, там вообще без вариантов что-то сделать без попиксельного эффекта

Для воды с изменяемым уровнем каустики можно не рисовать.
Цитата:
Дядя Миша писал:
через верхнюю плоскость в пиксельном шейдере, по аналогии с туманом можно сделать

Меня посетила идея создать браш с особыми контентсами (я решил юзать CONTENTS_TRANSLUCENT - всё равно в халфе не используется) в том же месте, что и энтитя воды. И читать именно эти контентсы, а не водные. Таким образом, можно будет размещать каустики выборочно, например там, где вода неподвижна или только там, где достаточно яркое освещение. Нужно только сделать этот браш невидимым. Если применить к его фейсам FSIDE_NODRAW, на верхней грани появляется эффект hall of mirrors. А так же он преспокойно отбрасывает тень. Копание в сорцах csg быстрого результата не дало, я в компиляторах ноль.


Отправлено Дядя Миша 02-03-2021 в 12:03:

Мне кажется проще рисовать каустики у мировый воды, и сделать её прозрачной. В кваке-то мировая вода вполне прозрачна.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 02-03-2021 в 12:15:

Дядя Миша а как её сделать прозрачной без вторжения в движок?


Отправлено Дядя Миша 02-03-2021 в 12:46:

Я не могу понять какие ты цели преследуешь. Ты хочешь стандартными средствами SDK замутить нечто такое, чтобы все ахнули? Поздравляю, ты опоздал на 15 лет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 02-03-2021 в 12:54:

Цитата:
Дядя Миша писал:
Поздравляю, ты опоздал на 15 лет.

Ну и что? В этом есть определённый шарм, что ли. Ксашмод это конечно хорошо, но у него свои 3,5 пользователя и свои проблемы. Не вижу пока ни малейшей нужды уходить с голдсорса. Что не получится под ним - на это можно забить, а что другие сделали даже под голдсорсом, но никто не сделал под ксашем, доказывает, что потенциал у древнего движка ещё есть.


Отправлено Дядя Миша 02-03-2021 в 12:58:

Но ты себя намеренно загоняешь в еще более узкие рамки. С одной стороны - не трогаем движок, с другой стороны - никаких кастомных рендереров.
XWider придерживался примерно такой же стратегии, ну и где он сейчас? Слёг с воспалением мозга, так ничего нормального и не сделав.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 02-03-2021 в 13:04:

Дядя Миша да, согласен. Но кастомный рендерер - слишком избыточно для моих целей. Тащить его ради каустиков, декалей, теней от моделей и фонарика нет никакого смысла. 3д небо возможно без него, красивые анимирированные декали тоже. Правильные тени опять же не нужны, можно обойтись спрайтом под ногами, как в кс. Нужно соблюсти баланс детализации моделей/уровней и графических плюшек. Чтобы не выглядело кубично и деревянно, но зато с шейдерами.


Отправлено Дядя Миша 02-03-2021 в 13:09:

И я почему-то подозреваю, что у вас с Мастером и мотивация схожая. Ты, как и он не хочешь осваивать ничего нового, тебе комфортнее ковыряться в том что ты уже понял. Это ни хорошо, ни плохо, но зачем же ставить себе задачи, выходящие за рамки компетентности?

Чтобы реализовать то, что ты хочешь, надо как минимум досконально понимать принципы работы движка и уметь это всё реализовывать на его уровне. И вот тогда уже можно поразмыслить, как перенести в дллки.
Да, многое возможно, когда ты понимаешь что делаешь.

Добавлено 02-03-2021 в 16:09:

Цитата:
Ku2zoff писал:
Чтобы не выглядело кубично и деревянно, но зато с шейдерами.

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

Шейдеры сейчас это неотъемлимая часть графического конвейера, а не специальный полигон с эффектом, который рисуется иначе, чем остальные.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 02-03-2021 в 17:09:

р

Добавлено 02-03-2021 в 20:09:

извините что отвлекаю не мог файл выложить просто проверка. Почему здесь бывают проблемы с выкладыванием фалов ?

__________________
илья


Отправлено Ku2zoff 03-03-2021 в 03:14:

Цитата:
Дядя Миша писал:
Ты, как и он не хочешь осваивать ничего нового, тебе комфортнее ковыряться в том что ты уже понял.

Так у меня цель просто сделать мод, а не переписать все сорцы на uint32 и не отсортировать строчки в delta.lst. Ещё я тоже люблю аниме, но лоли в кач-ве игроков в мультиплеере - это перебор Главное сейчас для меня - заниматься маппингом. Остальное - побочка. Если есть возможность сделать какую-то кодинговую фичу, то почему бы нет? Не будет лениво - поштудирую сорцы компиляторов, может чего придумаю. Не получится - или откажусь от каустиков, или сделаю для мировой воды. Может быть, придумаю решение позже, и останется только немного модифицировать код, чтобы оно работало и для воды-энтити.


Отправлено Дядя Миша 03-03-2021 в 06:27:

В последнее время какая-то нездоровая тенденция. Вместо того чтобы делать мод, люди начинают сосредотачиваться на графических эффектах, хотя всё что им нужно - это просто нарисовать новые текстуры.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 10-03-2021 в 15:57:

Такой вопрос, спавню турели вот так:

C++ Source Code:
CBaseMonster *pSentry = (CBaseMonster*)Create( "monster_sentry", TurretSpawnPosition, g_vecZero, edict() );

И вот в чем загвоздка - если вместо edict() (он же "владелец") прописать m_pPlayer->edict(), то турель будет несолидной для игрока, но солидной для всего остального.
Тот же хорнет спавнит мух подобным способом. Видимо, чтобы игрок не застревал в своих же мухах.
Не могу найти, где эта проверка находится. Нужно как-то исключение прописать для моего оружия с турелями.

__________________
Мой мод на Xash


Отправлено Дядя Миша 10-03-2021 в 16:43:

Так логично, для овнера объект всегда несолиден.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 13-03-2021 в 11:12:

Цитата:
Aynekko писал:
edict() (он же "владелец") прописать m_pPlayer->edict()

edict - это эдикт CBasePlayerWeapon, из которого стреляешь. m_pPlayer->edict - эдикт игрока. Вот турель и становится несолидной.


Отправлено Aynekko 13-03-2021 в 12:42:

Это я знаю. Мне как раз нужен player был. В общем, выставил там NULL. Турель должна быть солидной все-таки.

__________________
Мой мод на Xash


Отправлено SNMetamorph 14-03-2021 в 06:15:

Цитата:
Ku2zoff писал:
Ксашмод это конечно хорошо, но у него свои 3,5 пользователя и свои проблемы.

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

Добавлено 14-03-2021 в 10:15:

А вот эти строки внутри BSP в entdata каким образом сопоставляются с энтитями в игре? Первая энтити в entdata будет иметь индекс 0, следующая 1 и т.д. или же нет? Как мне зная энтдату сопоставить её с теми энтити, которые в данный момент есть в игре?

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 14-03-2021 в 07:50:

Цитата:
SNMetamorph писал:
А вот эти строки внутри BSP в entdata каким образом сопоставляются с энтитями в игре?

энтити по ним и генерятся.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 14-03-2021 в 10:47:

Цитата:
SNMetamorph писал:
Еще и недавно ребята в ксаше несколько багов пофиксили, что-то связанное с предиктом, oldbuttons кажется были невалидные.

Какие ребята, кто их видел? ©Ставь птицу!
На другом форуме каком-то?


Отправлено SNMetamorph 14-03-2021 в 15:14:

Цитата:
Crystallize писал:
Какие ребята, кто их видел? ©Ставь птицу!
На другом форуме каком-то?

Ребята из FWGS, альбатрос в частности и кто-то еще. Ну я тоже пулл реквесты с фиксами багов отправлял несколько раз.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Aynekko 25-03-2021 в 09:39:

Вопрос по punchangle. Взял код из паранои 2, он же сорсовский, поставил себе в ксаш. Все работает, но...он как будто лагает что ли? Когда панч большой, то это не так заметно. Но если выставить маленький, то когда панч при возврате в центр движется совсем медленно, заметны некие рывки в движении. Не знаю, как еще лучше объяснить. В хл2 такого не наблюдается.
Вот код который у меня сейчас:

C++ Source Code:
1
#define PUNCH_DAMPING		9.0f
2
#define PUNCH_SPRING_CONSTANT		65.0f
3
 
4
void PM_DropPunchAngle ( Vector &punchangle )
5
{
6
  float damping;
7
  float springForceMagnitude;
8
 
9
  if ( punchangle.Length() > 0.001 || pmove->vuser3.Length() > 0.001 )
10
  {
11
    punchangle += pmove->vuser3 * pmove->frametime;
12
    damping = 1.0f - (PUNCH_DAMPING * pmove->frametime);
13
 
14
    if ( damping < 0.0f )
15
    {
16
      damping = 0.0f;
17
    }
18
    pmove->vuser3 *= damping;
19
 
20
    // torsional spring
21
    // UNDONE: Per-axis spring constant?
22
    springForceMagnitude = PUNCH_SPRING_CONSTANT * pmove->frametime;
23
    springForceMagnitude = bound( 0, springForceMagnitude, 2 );
24
 
25
    pmove->vuser3 += punchangle * -springForceMagnitude;
26
 
27
    // don't wrap around
28
    punchangle[0] = bound( -89, punchangle[0], 89 );
29
    punchangle[1] = bound( -179, punchangle[1], 179 );
30
    punchangle[2] = bound( -89, punchangle[2], 89 );
31
  }
32
}


Вот код из соурс сдк 2013:
C++ Source Code:
1
void CGameMovement::DecayPunchAngle( void )
2
{
3
  if ( player->m_Local.m_vecPunchAngle->LengthSqr() > 0.001 || player->m_Local.m_vecPunchAngleVel->LengthSqr() > 0.001 )
4
  {
5
    player->m_Local.m_vecPunchAngle += player->m_Local.m_vecPunchAngleVel * gpGlobals->frametime;
6
    float damping = 1 - (PUNCH_DAMPING * gpGlobals->frametime);
7
 
8
    if ( damping < 0 )
9
    {
10
      damping = 0;
11
    }
12
    player->m_Local.m_vecPunchAngleVel *= damping;
13
 
14
    // torsional spring
15
    // UNDONE: Per-axis spring constant?
16
    float springForceMagnitude = PUNCH_SPRING_CONSTANT * gpGlobals->frametime;
17
    springForceMagnitude = clamp(springForceMagnitude, 0.f, 2.f );
18
    player->m_Local.m_vecPunchAngleVel -= player->m_Local.m_vecPunchAngle * springForceMagnitude;
19
 
20
    // don't wrap around
21
    player->m_Local.m_vecPunchAngle.Init(
22
    clamp(player->m_Local.m_vecPunchAngle->x, -89.f, 89.f ),
23
    clamp(player->m_Local.m_vecPunchAngle->y, -179.f, 179.f ),
24
    clamp(player->m_Local.m_vecPunchAngle->z, -89.f, 89.f ) );
25
  }
26
  else
27
  {
28
    player->m_Local.m_vecPunchAngle.Init( 0, 0, 0 );
29
    player->m_Local.m_vecPunchAngleVel.Init( 0, 0, 0 );
30
  }
31
}


Добавил ломику схожие значения, но все равно панч какой-то заедающий слегка. Вот соурс сдк у ломика:
C++ Source Code:
1
QAngle punchAng;
2
 
3
punchAng.x = random->RandomFloat( 1.0f, 2.0f );
4
punchAng.y = random->RandomFloat( -2.0f, -1.0f );
5
punchAng.z = 0.0f;
6
 
7
pPlayer->ViewPunch( punchAng );

У меня:
C++ Source Code:
m_pPlayer->pev->punchangle.x = RANDOM_FLOAT( 1.0f, 2.0f );
m_pPlayer->pev->punchangle.y = RANDOM_FLOAT( -2.0f, -1.0f );


Может что-то упустил где-то...

__________________
Мой мод на Xash


Отправлено Дядя Миша 25-03-2021 в 09:43:

Этот панч еще БУзер делал для первой паранои, я к нему никаким боком.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 25-03-2021 в 09:45:

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 25-03-2021 в 10:30:

Время по разному идёт, в этом всё дело.
FPS отпущен?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 25-03-2021 в 10:46:

Вот я тоже подумал, будто бы эффект обновляется не так быстро или еще что-то. Фпс что 60 что 200 разницы нет никакой внешне

__________________
Мой мод на Xash


Отправлено Sigurth 25-03-2021 в 14:51:

Aynekko Я уже копипастил себе этот пунч. Лагает он из-за того, что нужно делать его на клиенте. Серверный пунч передается на клиент в четырьмя знаками после запятой у флоатов. Поэтому на маленьких значениях и лагает.

Добавлено 25-03-2021 в 21:49:

У себя я сделал так, что серверный пунч больше не влияет на наклон камеры, но все еще влияет на направление стрельбы. И все pev->pubchangle += ...; менял на вызов функции ,которая отправляет мессагу на клиент, который в свою очередь делает клиентский пунч чисто для визуального эффекта. То есть этот код должен быть и на клиенте и на сервере.

[i]Добавлено 25-03-2021 в 21:51:


Я делал это для красивой отдачи у оружия. Если пунч не должен влиять на направление стрельбы, то можно обойтись лишь клиентским эффектом.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Aynekko 25-03-2021 в 15:24:

Цитата:
Sigurth писал:
Лагает он из-за того, что нужно делать его на клиенте.

Блин вот я так и думал. А в случае ксаша, может как-то можно добавить больше знаков?

__________________
Мой мод на Xash


Отправлено Ku2zoff 25-03-2021 в 16:37:

Цитата:
Sigurth писал:
Лагает он из-за того, что нужно делать его на клиенте.

Я все "косметические" пунчи и скриншейки (которые не влияют на меткость стрельбы) стараюсь делать на клиенте. Случай с монтировкой именно такой, толчки экрана не влияют ни на что, а лишь трясут экран. pm_shared конечно позволяет в какой-то степени синхронизировать сервер с клиентом, но в данном случае такое не нужно, т.к. трясти будет лишь экран локального игрока.
Что бы я действительно попытался реализовать - это "землетрясения" из ку2. Там не просто трясётся экран, как от скриншейка, там ещё игрока кидает из стороны в сторону. Будет весьма полезно в паре моментов, что я задумал.

Добавлено 25-03-2021 в 23:36:

Цитата:
Aynekko писал:
может как-то можно добавить больше знаков?

В твоём случае это локальный эффект, его не нужно шарить другим игрокам. Сделай его в эвенте монтировки, чисто на клиенте, не затрагивая сервер.

Добавлено 25-03-2021 в 23:37:

Цитата:
Sigurth писал:
Если пунч не должен влиять на направление стрельбы, то можно обойтись лишь клиентским эффектом.

Вот я об этом чуть выше сказал. Если это косметика, то нужно делать лишь на клиенте.


Отправлено Aynekko 26-03-2021 в 11:52:

Проблема с лагающим punchangle решилась банально с помощью delta.lst.
Вместо 8.0 поставил 32.0 и все отлично стало.

__________________
Мой мод на Xash


Отправлено Sigurth 26-03-2021 в 14:25:

Цитата:
Aynekko писал:
Проблема с лагающим punchangle решилась банально с помощью delta.lst.
Вместо 8.0 поставил 32.0 и все отлично стало.

Я сейчас на голдсорсе попробовал, все работает. А я городил, как обычно, непонятно что)

__________________
Никогда не поздно сделать мод под хл1


Отправлено Shapirlic 30-03-2021 в 18:49:

gEngfuncs.COM_LoadFile( char *path, int usehunk, int *pLength );

Кто нить знает за что отвечает usehunk?


Отправлено Дядя Миша 30-03-2021 в 19:19:

В какую область памяти положить загруженный файл. Чтобы не было неожиданностей, следует использовать только число 5.

C++ Source Code:
1
if (usehunk == 1)
2
  buf = Hunk_AllocName (len+1, base);
3
else if (usehunk == 2)
4
  buf = Hunk_TempAlloc (len+1);
5
else if (usehunk == 0)
6
  buf = Z_Malloc (len+1);
7
else if (usehunk == 3)
8
  buf = Cache_Alloc (loadcache, len+1, base);
9
else if (usehunk == 4)
10
{
11
  if (len+1 > loadsize)
12
    buf = Hunk_TempAlloc (len+1);
13
  else
14
    buf = loadbuf;
15
}

В кваке пятого режима нет, в халфе там malloc
Это говно было нужно под DOS, т.к. там не было системного менеджера памяти.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Shapirlic 31-03-2021 в 11:24:

Цитата:
Дядя Миша писал:
В кваке пятого режима нет, в халфе там malloc
Это говно было нужно под DOS, т.к. там не было системного менеджера памяти.

Понял, спасибо за ответ.
Но есть ещё вопросы вдогонку

От чего может COM_LoadFile тупо падать при загрузке файлов, которые обычно у него не вызывают проблем? Гружу tga/dds текстуры, и на некоторых уровнях при загрузке падает. При этом если ставить usehunk = 2 то работает, причём и тот конкретный уровень с багом, и пол компании ХЛ я прошёл с usehunk = 2. Исходя из твоих слов лучше убрать usehunk 2 и поставить 5, но интересно, какого хера с пятёркой вылетает.


Отправлено Дядя Миша 31-03-2021 в 11:29:

Цитата:
Shapirlic писал:
и на некоторых уровнях при загрузке падает.

а где конкретно?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Shapirlic 31-03-2021 в 11:29:

Ради уточнения скажу что речь идёт о загрузке HD текстур.
Прохожусь по всех текстуркам уровня, ищу их dds/tga вариант в папке, гружу, попутно сохраняя индексы новых HD текстур в мапу типа <НазваниеТекстуры, индекс>. Потом подменяю индексы текстур на HD. При загрузке/смене уровня снова смотрю в мапу, догружаю новые HD по надобности


Отправлено Дядя Миша 31-03-2021 в 11:30:

Я надеюсь, после загрузки в видеопамять ты эти текстуры освобождаешь при помощи COM_FreeFile ?

Добавлено 31-03-2021 в 14:30:

Цитата:
Shapirlic писал:
Потом подменяю индексы текстур на HD

Перед подменой надо еще сделать glDeleteTexture.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Shapirlic 31-03-2021 в 11:31:

Уровень - тот где 3 тентакли под двигателем. Это был первый левел где началась эта проблема. Решилась она проставление usehunk = 2, и оттуда я дошёл до монорельса который после гарга без проблем. Как я понимаю usehunk = 2 опасно, поэтому надо мне исправить проблемы с загрузкой файлов

Добавлено 31-03-2021 в 14:31:

Цитата:
Дядя Миша писал:
COM_FreeFile

Да

Цитата:
Дядя Миша писал:
glDeleteTexture

Спасибо, попробую


Отправлено Дядя Миша 31-03-2021 в 11:34:

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

Добавлено 31-03-2021 в 14:32:

И еще. Есть ли проверка, что COM_LoadFile вернул валидный указатель или оно прямо внутри движка крэшится?

Добавлено 31-03-2021 в 14:34:

Текстуру удолять вот так

C++ Source Code:
glDeleteTextures( 1, &texnum );

Я вот не помню, обнуляет ли драйвер номер бинда, потому что на VBO он этого к примеру не делает, но теоретически может. Если так, то надо скопировать этот номер в отдельную переменную и высвобождать как бы уже его. glGenTextures вызывать при этом не требуется, т.к. халфа не использует этот механизм, хотя такое поведение и deprecated.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Shapirlic 31-03-2021 в 11:43:

Стоят конечно проверочки типа

if (!file)
{
Log("CreateTexture failed to load file: %s\n", filename);
...

Крашится где то внутри, что удивляет

Добавлено 31-03-2021 в 14:35:

Цитата:
Дядя Миша писал:
Я вот не помню, обнуляет ли драйвер номер бинда, потому что на VBO он этого к примеру не делает, но теоретически может. Если так, то надо скопировать этот номер в отдельную переменную и высвобождать как бы уже его. glGenTextures вызывать при этом не требуется, т.к. халфа не использует этот механизм, хотя такое поведение и deprecated.


Имеешь ввиду переиспользовать эти индексы потом?

Добавлено 31-03-2021 в 14:43:

Всё пересмотрел, нашёл в одной ветке ошибку в плане отсутствия COM_FreeFile
Вероятно это оно, буду проверять
Спасибо за инфу.


Отправлено Дядя Миша 31-03-2021 в 11:46:

Цитата:
Shapirlic писал:
Крашится где то внутри, что удивляет

Внутри движка? Там нечему крашиться, там malloc и всё. Ни разу не видел чтобы крашился malloc.

Цитата:
Shapirlic писал:
Имеешь ввиду переиспользовать эти индексы потом?

Проверить какое там число до вызова glDeleteTextures и какое после.
Если после вызова там 0, значит драйвер его таки обнулил. Надо завести отдельную переменную и держать там копию этого числа, т.к. оно тебе нужно.
Хотя может быть достаточно вызова glLoadImage и старое изображение автоматически будет отправлено в утиль. Не помню я вот этот момент.
А может быть это еще от драйвера зависит.

Крашится у тебя скорее всего что-то совершенно другое, последний раз, когда я видел твой мод, там постоянно что-то вылетало, индексы путались, итд. Т.е. он нестабильный.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Shapirlic 31-03-2021 в 11:56:

Цитата:
Дядя Миша писал:
Крашится у тебя скорее всего что-то совершенно другое, последний раз, когда я видел твой мод, там постоянно что-то вылетало, индексы путались, итд. Т.е. он нестабильный.


Вполне вероятно)
По текстуркам вроде ушло, спасибо что навёл на посмотреть COM_FreeFile.


Отправлено Shapirlic 31-03-2021 в 18:29:

Копаю дальше в мод, решил его покрутить под ксашем, чтобы увидеть ошибки с другой перспективы. Пришлось ксаш3Д собрать Visual Studio 2017, ибо мод на ней делаю. Первое что выпало -

Добавлено 31-03-2021 в 21:29:

Это даст мне хотя бы какой то манёвр, надеюсь, с помощью твоего двигла наконец допилю хоть до уровня чтобы не выкидывало )


Отправлено Дядя Миша 31-03-2021 в 18:34:

Ну да, голдсорс молча валится, в ксаше можно хотя бы отловить ошибку.
Да и он частенько информативно ругается в консоль там, где голдсорс просто падает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Shapirlic 31-03-2021 в 18:44:

В общем на том месте где Халфа падает ксаш не падал, поэтому я подсунул ему сейв с халвы с проблемного места, ксаш его грузанул раз, а на вторую загрузку выдал это. Есть идеи?

Добавлено 31-03-2021 в 21:44:

Понятно, что порча памяти. Хотя бы куда смотреть есть идеи?


Отправлено Shapirlic 31-03-2021 в 19:09:

Колстек

Добавлено 31-03-2021 в 22:06:

Это карта с2а3 и бьётся сейв после того как ломаешь замок, который удерживает пушаблы-бочки что должны всплыть.

Добавлено 31-03-2021 в 22:09:

Есть ли какой нить способ отследить все события произошедшие на карте к определенному моменту? Чтобы хотябы знать что проверять, потому что предидущее заявление про брекаблу замок неверно, там какой то рандом


Отправлено Дядя Миша 31-03-2021 в 19:34:

Цитата:
Shapirlic писал:
Понятно, что порча памяти. Хотя бы куда смотреть есть идеи?


Так он же тебе открытым текстом расписал строчки в исходниках куда смотреть. Открываем сорцы ксаша server\sv_game.c:2942 и смотрим.
А там у нас pfnPvAllocEntPrivateData
проще говоря - деномически выделяемая память для эдиктов, содержимое их классов. Как их можно испортить? Проще всего - если одна энтить указывает на другую и мы начинаем её модифицировать через этот указатель. Если не ошибаюсь (почему я всё за всех должен помнить?)
у тебя в моде пули сделаны энтитями. Значит у каждой пули есть свой овнер.
ну или что-то вроде этого. Вообщем наиболее частая ошибка касается именно прожектайлов, которые связаны с своими родителями.
Проблема в том, что почти никто не учитывает факт их удаления с карты или к примеру тот факт, что игрока разобрало на гибсы, а пуля еще летит.
Вообщем идёт попытка модификации связанного эдикта и она может даже оказаться довольно успешной. Вот только на месте этой энтити может оказаться любая другая. У которой размер класса меньше, а мы к ней обращаемся как к другой и вылезаем за границы отведённой памяти.
Порча и вылет. В первой кваке, к слову, такие фокусы были абсолютно безопасными из-за виртуальной машины, которая интерпретировала все указатели, как номера эдиктов (а других указателей там и вовсе не было).
Поэтому любая попытка что-либо прочесть по нулевому указателю автоматически приводило код к чтению полей ворлдспавна. А вот при попытке туда что-то записать уже крашился сервер с ошибкой "assignment to world entity" или что-то вроде этого.
Потом, для халфы и ку2 соответственно виртуалку переписали на компилируемый язык и доставили много радости моддерам.

Добавлено 31-03-2021 в 22:33:

Цитата:
Shapirlic писал:
предидущее заявление про брекаблу замок неверно, там какой то рандом

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

Добавлено 31-03-2021 в 22:34:

А что означает сообщение "Waterlevel is out" ? Нет ли в этом антисемитизма?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Shapirlic 31-03-2021 в 19:49:

По колстеку было видно что там с памятью эдиктов, да, но как именно её можно было поломать я представить не мог. Спасибо за наводки, буду глядеть в оба.


Отправлено Дядя Миша 31-03-2021 в 20:05:

Забыл добавить. В кваке был константный размер для всех эдиктов, равный максимальному. Поэтому там ни с какой точки зрения нельзя было промахнуться и испортить память. В халфе конечно экономия, эдикт занимает ровно столько места, сколько требуется его классу.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Shapirlic 31-03-2021 в 20:43:

class CClass
{
bool SomeArray[5];
...

TYPEDESCRIPTION CClass::m_SaveData[] =
{
DEFINE_ARRAY( CClass, SomeArray, FIELD_BOOLEAN, 5 ),

Вот что трешило память

Нужно было поменять тип с bool на BOOL


Отправлено Дядя Миша 31-03-2021 в 21:11:

Там ведь и табличка имеется

C++ Source Code:
1
sizeof(int *),		// FIELD_FUNCTION
2
sizeof(int),		// FIELD_BOOLEAN <--
3
sizeof(short),		// FIELD_SHORT
4
sizeof(char),		// FIELD_CHARACTER
5
sizeof(float),		// FIELD_TIME

Но ктож туда заглядывает. Впрочем, можно было бы заменить FIELD_BOOLEAN на FIELD_CHARACTER c тем же результатом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Shapirlic 31-03-2021 в 21:16:

А чем обосновано то, что в Халве BOOL по факту int? У этого есть какой то практический смысл?


Отправлено Дядя Миша 31-03-2021 в 21:23:

Это не практический смысл, а исторический. Не всё поддаётся логическому объяснению, надо знать историю.

В чистом Си вообще не было переменной bool. В принципе, поскольку адресация памяти начинается с одного байта, создать единичную переменную такого типа невозможно в принципе.
Она всегда будет занимать места гораздо больше чем это требуется.
Для хранения битовой информации обычно используются флаги, но битовый доступ - лишние такты процессора. Иногда проще реально иметь отдельные переменные, пожертвовав памятью. В чистом Си была распространена практика делать bool из 32-разрядного числа. По идее такие числа на 32 разрядных процессорах имеют максимальную скорость доступа. По крайней мере в те далёкие времена. Традиция осталась.
В С++ Страуструп ввёл в язык переменную bool и принял её равной одному байту. И началась чертовщина, которую необходимо учитывать, когда имеешь дело одновременно с двумя языками.
Поэтому размер bool ВСЕГДА надо проверять, если код не слишком хорошо изучен.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Shapirlic 31-03-2021 в 21:55:

Спасибо за исторический экскурс! )


Отправлено ncuxonaT 01-04-2021 в 14:52:

В Сорсе вроде как студиомодели освещаются в один момент не более чем двумя источниками. Кто-нибудь в курсе, каким образом выбираются эти два источника, и как определяется, не в тени ли модель? Кидаются трассы до всех лампочек, и выбираются самые яркие?


Отправлено Дядя Миша 01-04-2021 в 15:51:

Цитата:
ncuxonaT писал:
Кто-нибудь в курсе, каким образом выбираются эти два источника, и как определяется, не в тени ли модель?

там виртуальный буффер глубины с разрешением 8х8, вот он проверяет насчёт того, добивает ли свет до объекта. Понятно, на обычных трассах.

Добавлено 01-04-2021 в 18:51:

А я помоему эти трассы утащил впараною, но толком не заюзал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 07-04-2021 в 21:28:

Как вытащить из mdl анимацию? Хочу посчитать тени от моделей, геометрию вытащил, но многие модели повернуты анимацией, а я не могу разобраться, как она записана.


Отправлено Дядя Миша 07-04-2021 в 21:43:

Все анимации в модели анализируются и для 6DOF находятся максимально возможные величины скейлов. Эти значения записываются в структуру костей. При извлечении анимации надо умножать полученные значения на них. Сами анимации точно так же делятся на 6 независимых потоков.
XYZ-pos, XYZ-rot.

C++ Source Code:
1
typedef struct mstudioanim_s
2
{
3
  unsigned short	offset[6];
4
} mstudioanim_t;

вот оффсеты до каждого из потоков.
Поток содержит двойственную информацию. Там либо RLE-данные, либо непосредственно значение анимации.
C++ Source Code:
1
typedef union
2
{
3
  struct
4
  {
5
    byte	valid;
6
    byte	total;
7
  } num;
8
  short		value;
9
} mstudioanimvalue_t;

Ну и дальше поток как бы рулит сам собой. Указываешь номер кадра, для которого нужно получить значение анимации (раздельно для каждой степени свободы). И в цикле ищешь нужный участок, ориентируясь по RLE-информации. См. функцию ExtractAnimValue в той же параное.
Вроде как ничего сложного.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 08-04-2021 в 17:16:

Как правильно повернуть вершины? Прибавить value из mstudioanimvalue_t к value из mstudiobone_t? Или сначала повернуть на одно, потом на другое?


Отправлено Дядя Миша 08-04-2021 в 18:37:

ncuxonaT ты же код студиомоделей смотришь.
Извлечённое значение из анимации надо сперва умножить на скейл из структуры кости. А потом прибавить дефолтное положение скелета.

C++ Source Code:
final = bone->value + anim->value * bone->scale

Из полученных значений надо построить матрицы. Значения анимации - локальные. Т.е. матрицы еще надо перемножить друг на друга, согласно их иерархии. Сортировать кости при этом не требуется, скелет всегда отсортирован.

Добавлено 08-04-2021 в 21:37:

Кстати там потенциальная бага. Из-за сложения углов эйлера может получиться бяка. Но анимации как правило не содержат таких резких поворотов по нескольким осям.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 09-04-2021 в 16:23:

Дядя Миша аллилуйя, всё получилось, спасибо!


Отправлено SNMetamorph 11-04-2021 в 10:49:

Как мне правильно отрисовать хулл энтити через опенгл? Начну с того, где взять правильный оригин? cl_entity_t->origin и cl_entity_t->curstate.origin почему-то выдает разные числа. А еще, как повороты учитывать? Я вот скопипастил матрицу трансформации для энтити из ксашмодовской GL_CacheState, каждую вершину хулла умножаю на матрицу, и в итоге оно при повороте энтити куда-то улетает. Не пойму что делать.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 11-04-2021 в 11:24:

Цитата:
SNMetamorph писал:
Как мне правильно отрисовать хулл энтити через опенгл?

r_drawentities 5

Добавлено 11-04-2021 в 14:24:

Цитата:
SNMetamorph писал:
каждую вершину хулла умножаю на матрицу

а смысл? Хулл и так в абсолютном пространстве.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SNMetamorph 11-04-2021 в 12:24:

Цитата:
Дядя Миша писал:
r_drawentities 5

Не, мне надо именно накодить это, ибо это все в отдельном инструменте от движка/игры (GoldSrc Monitor)

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Crystallize 11-04-2021 в 13:13:

SNMetamorph так ты XT допиливаешь или что ты делаешь?


Отправлено Ku2zoff 11-04-2021 в 14:44:

Подскажите, есть ли возможность научить пушаблю падать, после того, как из-под неё была вытолкнута другая пушабля? Если нижнюю расстрелять - верхняя падает. А вот если просто вытолкнуть - верхняя остаётся висеть в воздухе.

Добавлено 11-04-2021 в 21:44:

Вышел из положения временно вот таким кодом:

C++ Source Code:
1
void CPushable::AddGravityThink(void)
2
{
3
  if (!pev->gravity) pev->gravity = 0.5;
4
 
5
  pev->velocity.z -= (pev->gravity * CVAR_GET_FLOAT("sv_gravity") * gpGlobals->frametime);
6
  pev->velocity.z += (pev->basevelocity.z * gpGlobals->frametime);
7
  pev->basevelocity.z = 0.0f;
8
 
9
  pev->nextthink = pev->ltime + 0.1;
10
}

pev->gravity обязательно 0.5, чтобы пушабли падали с обычной, а не с двойной скоростью. Сначала половина ускорения применяется в SV_AddGravity в движке, а затем вторая половина в AddGravityThink. Теперь пушабли прекрасно падают как с других пушаблей, так и с монстров, если монстр отошёл в сторону.


Отправлено SNMetamorph 11-04-2021 в 14:48:

Цитата:
Crystallize писал:
так ты XT допиливаешь или что ты делаешь?

Мою ютилиту GoldSrc Monitor допиливаю потихоньку параллельно с ксашмодом.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 11-04-2021 в 17:05:

Цитата:
SNMetamorph писал:
Не, мне надо именно накодить это

А в чём проблема? Ну если ты видишь, что после умножения на матрицу хулл куда-то уезжает - не умножай на матрицу.

Добавлено 11-04-2021 в 20:02:

Цитата:
Ku2zoff писал:
Подскажите, есть ли возможность научить пушаблю падать, после того, как из-под неё была вытолкнута другая пушабля?

Рекурсивно убрать им флаг FL_ONGROUND. Можно и двигать, но это сложнее.

Добавлено 11-04-2021 в 20:05:

Цитата:
Ku2zoff писал:
Вышел из положения временно вот таким кодом:

C++ Source Code:
1
void CPushable::AddGravityThink(void)
2
{
3
  ClearBits (pev->flags, FL_ONGROUND);
4
  pev->nextthink = pev->ltime + 0.1;
5
}

А потом удивляются, почему софт весит по терабайту.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 11-04-2021 в 17:30:

Дядя Миша так не годится. У пушаблей пропадает трение, если убрать флаг. Ну или не пропадает, но они скользят до бесконечности по полу, если получают ускорение, видимо, работает SV_FlyMove. Флаг надо снимать в определённый момент, когда внизу становится пусто, а не каждый кадр.


Отправлено Дядя Миша 11-04-2021 в 17:46:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 11-04-2021 в 17:46:

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

C++ Source Code:
1
void CPushable::AddGravityThink(void)
2
{
3
  if (ENT_IS_ON_FLOOR(ENT(pev)) == 0)
4
    ClearBits(pev->flags, FL_ONGROUND);
5
 
6
  pev->nextthink = pev->ltime + 0.1;
7
}


Отправлено Дядя Миша 11-04-2021 в 17:58:

Цитата:
Ku2zoff писал:
ENT_IS_ON_FLOOR

она тежолая, на самом деле.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 11-04-2021 в 18:08:

Дядя Миша я тчинк сделал пореже, до 0.5 секунды увеличил. И сделал проверку на FL_ONGROUND, чтобы для падающих пушаблей не считалось. Посмотрим. Если вдруг нарвусь на тормоза, никогда не поздно будет вернуться к варианту с гравитацией.

Добавлено 12-04-2021 в 01:08:

Вообще, для обычных пушаблей на зависание в воздухе можно забить - ситуация редкая. Я лишь в паре любительских модов такое видел, где авторы так их располагали, что можно из них составить пирамиду. Обычно все пушабли на одном уровне: меньший ящик толкается к большему, а потом по ним игрок куда-то лезет. Но у меня ситуация с носимыми в руках пушаблями: их ведь можно поставить на что угодно, куда "руки" дотянутся. Вот и столкнулся с неприятным моментом.


Отправлено Aynekko 12-04-2021 в 07:10:

Цитата:
Ku2zoff писал:
их ведь можно поставить на что угодно, куда "руки" дотянутся

А ты проверял проп-флайинг? Я в ксаше столкнулся с таким. Можно залезть на предмет, подпрыгнуть, взять. Отпустить, подпрыгнуть, взять. И так до бесконечности.

__________________
Мой мод на Xash


Отправлено Ku2zoff 12-04-2021 в 09:41:

Цитата:
Aynekko писал:
А ты проверял проп-флайинг?

Это с пушаблями не работает. У них в таком случае будет ненулевая velocity, а значит флаг FL_ONGROUND сбросится внутри SV_MoveStep.


Отправлено SNMetamorph 17-04-2021 в 12:31:

Значится, я рисую у энтити их обьем таким вот образом
https://github.com/SNMetamorph/gold...report.cpp#L114
Проблема в том, что у func_tank питч инвертированный получается, хотя у всех остальных энтити всё выглядит нормально и питч такой как надо. Как это решить?
А ещё я заметил, что у некоторых энтити их ориджин находится как бы в центре хулла, а у других он находится в самом низу хулла. Как определить где находится центр для какой-то конкретной энтити? Есть флаг некий для этого?

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Crystallize 19-04-2021 в 15:13:

Написал такую штуку и столкнулся с тем что в конце при выводе через printf оба значения по нулям.

C++ Source Code:
1
void GetAngleScaler( float scaler, float scaler1 )
2
{
3
  vec3_t tang, tang1;
4
  if( Length( cl.velocity ) ) GetLocalTangent(tang, tang1);
5
 
6
  Con_Printf( "tang %f tang1 %f\n", tang[1],tang1[1] );
7
  scaler = tang[1] / 90.0f;
8
  scaler1 = tang1[1] / 90.0f;
9
  if( !scaler ) scaler = 1.0f;
10
  if( !scaler1 ) scaler1 = 1.0f;
11
 
12
 
13
  if( cl.viewangles[1] < tang[1] )
14
    scaler = 1.0f / scaler;
15
  if( cl.viewangles[1] < tang1[1] )
16
    scaler1 = 1.0f / scaler1;
17
 
18
  Con_Printf( "GAS sc %f sc1 %f\n", scaler, scaler1 );
19
}
20
 
21
 
22
/*
23
================
24
CL_AdjustAngles
25
 
26
Moves the local angle positions
27
================
28
*/
29
 
30
void CL_AdjustAngles ()
31
{
32
  float	speed;
33
  float	up, down;
34
  static float scaler, scaler1;
35
  vec3_t	plpos, camang, dir;
36
  vec3_t	cmps={0,0,0};
37
 
38
  entity_t	*ent;
39
  ent = &cl_entities[cl.viewentity];
40
  VectorCopy( ent->currentorigin, plpos );
41
 
42
  if (in_speed.state & 1)
43
    speed = host_frametime * cl_anglespeedkey.value;
44
  else
45
    speed = host_frametime;
46
 
47
  GetAngleScaler( scaler, scaler1 );
48
  Con_Printf( "sc %f sc1 %f\n", scaler, scaler1 );


Отправлено SNMetamorph 19-04-2021 в 16:29:

Цитата:
Crystallize писал:
Написал такую штуку и столкнулся с тем что в конце при выводе через printf оба значения по нулям.

C++ Source Code:
1
void GetAngleScaler( float scaler, float scaler1 )
2
{
3
  vec3_t tang, tang1;
4
  if( Length( cl.velocity ) ) GetLocalTangent(tang, tang1);
5
 
6
  Con_Printf( "tang %f tang1 %f\n", tang[1],tang1[1] );
7
  scaler = tang[1] / 90.0f;
8
  scaler1 = tang1[1] / 90.0f;
9
  if( !scaler ) scaler = 1.0f;
10
  if( !scaler1 ) scaler1 = 1.0f;
11
 
12
 
13
  if( cl.viewangles[1] < tang[1] )
14
    scaler = 1.0f / scaler;
15
  if( cl.viewangles[1] < tang1[1] )
16
    scaler1 = 1.0f / scaler1;
17
 
18
  Con_Printf( "GAS sc %f sc1 %f\n", scaler, scaler1 );
19
}
20
 
21
 
22
/*
23
================
24
CL_AdjustAngles
25
 
26
Moves the local angle positions
27
================
28
*/
29
 
30
void CL_AdjustAngles ()
31
{
32
  float	speed;
33
  float	up, down;
34
  static float scaler, scaler1;
35
  vec3_t	plpos, camang, dir;
36
  vec3_t	cmps={0,0,0};
37
 
38
  entity_t	*ent;
39
  ent = &cl_entities[cl.viewentity];
40
  VectorCopy( ent->currentorigin, plpos );
41
 
42
  if (in_speed.state & 1)
43
    speed = host_frametime * cl_anglespeedkey.value;
44
  else
45
    speed = host_frametime;
46
 
47
  GetAngleScaler( scaler, scaler1 );
48
  Con_Printf( "sc %f sc1 %f\n", scaler, scaler1 );

Как я понял, тебе надо в GetAngleScaler передавать ссылки на переменные, а ты передаешь внутрь просто переменные.
То есть обьявление функции должно быть таким:
C++ Source Code:
void GetAngleScaler( float &scaler, float &scaler1 )

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Crystallize 19-04-2021 в 17:26:

SNMetamorph он хочет закрывающую скобку перед символом ссылки


Отправлено nemyax 19-04-2021 в 18:47:

Crystallize
Так это сишный файл, наверно. А в сях только указатели и нету неко ких ссылок.


Отправлено Crystallize 20-04-2021 в 01:43:

nemyax а, ну да сишный. Но в чём проблема что оно не работает через простые флоаты?


Отправлено Дядя Миша 20-04-2021 в 06:17:

Причём тут простые флоаты. Тебе надо как-то вернуть значения.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 20-04-2021 в 06:49:

Цитата:
Crystallize писал:
в чём проблема что оно не работает через простые флоаты?

Работает, только оно меняет локальные копии переменных в вызванной функции. В вызывающей они как проинициализировались нулями по дефолту, так и сидят на нулях. Кстати зачем ты их объявил статичными?


Отправлено SNMetamorph 20-04-2021 в 14:30:

Цитата:
Crystallize писал:
он хочет закрывающую скобку перед символом ссылки

Через что компилируешь? Попробуй для файла этого сделать расширение .cpp

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 20-04-2021 в 15:32:

Цитата:
SNMetamorph писал:
Попробуй для файла этого сделать расширение .cpp

в данном случае не советую

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 20-04-2021 в 16:12:

Нужно просто вот так переписать:

C++ Source Code:
1
void GetAngleScaler( float *out_scaler, float *out_scaler1 )
2
{
3
  float scaler  = *out_scaler;
4
  float scaler1 = *out_scaler1;
5
  /*
6
    оригинальное тело твоей функции
7
    */
8
  *out_scaler  = scaler;
9
  *out_scaler1 = scaler1;
10
}

И соответственно вызывать так:
C++ Source Code:
GetAngleScaler( &scaler, &scaler1 );

Но со статиком непонятно. Ты, похоже, путаешь статические переменные, объявленные внутри функции и снаружы.


Отправлено Crystallize 22-04-2021 в 12:34:

Спасибо всем

Цитата:
nemyax писал:
Работает, только оно меняет локальные копии переменных в вызванной функции. В вызывающей они как проинициализировались нулями по дефолту, так и сидят на нулях. Кстати зачем ты их объявил статичными?

Скомпилить пытался хоть как-то, зачем же ещё. Сейчас уже не помню точно. Когда я код открыл они вообще инициализировались через ={0,0,0}. Так-то я перепишу это место чтобы возвращалось одно значение, из двух там одно по определению ненужное, просто писал реализацию по-быстрому чтобы было от чего плясать.

Цитата:
SNMetamorph писал:
Через что компилируешь? Попробуй для файла этого сделать расширение .cpp

Шестёркой

Цитата:
nemyax писал:
Но со статиком непонятно. Ты, похоже, путаешь статические переменные, объявленные внутри функции и снаружы.

Я с чего-то решил что при указании входных переменных они не просто передаются туда, а у функций аж scope становится общий, ну типа войд волшебный


Отправлено Aynekko 23-04-2021 в 08:29:

Стоит ли в пределах одной комнаты, ну или одного открытого места, объединять кучу func_illusionary или wall в одну энтитю? Если у них свойства совпадают.
Я так понимаю, что один иллюженари/волл считается как "модель" и занимает edict, то лучше делать все, скажем, перила одним func_wall и это будет считаться как один edict? Или func_wall, состоящий из нескольких брашей, все равно как-то разбивается движком?

__________________
Мой мод на Xash


Отправлено Дядя Миша 23-04-2021 в 11:00:

Можно детайлами делать, у детайлов есть настройка zhlt_noclip 1
Но конечно если это стёкла, то не получится.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 23-04-2021 в 12:23:

Aynekko если для таких брашей не нужны рендермоды, то лучше их делать детайлами. В случае с перилами или стёклами - func_wall. Объединять их в одну энтитю можно, но с оговоркой. Если у тебя, грубо говоря, два func_wall в виде букв "L" или "Г", и расположены они так, что один занимает угол напротив другого по диагонали, то если объединить их в одну энтить - пушабли через пустое пространство между ними не катаются. Сталкивался с таким. Возможно, что и монстры могут не ходить.


Отправлено Aynekko 23-04-2021 в 12:49:

Цитата:
Ku2zoff писал:
если для таких брашей не нужны рендермоды, то лучше их делать детайлами.

Детайлами я само собой пользуюсь. Но перилам и решеткам, ну и стеклам тоже, нужны рендермоды.
Цитата:
Ku2zoff писал:
пушабли через пустое пространство между ними не катаются. Сталкивался с таким. Возможно, что и монстры могут не ходить.

Про пушабли не знал (но я ими и не пользуюсь впрочем). А вот монстры нормально ходят.

Мне главное понять, как edict'ы считаются, стоит ли так заморачиваться или без разницы. По логике, т.к. я уже лазил в коде, у каждого func_wall свой спаун, свои параметры и т.д., каждый инициализируется, поэтому наверное по возможности стоит делать все одной энтитей.

__________________
Мой мод на Xash


Отправлено Ku2zoff 23-04-2021 в 12:55:

Цитата:
Aynekko писал:
Мне главное понять, как edict'ы считаются, стоит ли так заморачиваться или без разницы.

Лимит на эдикты даже в обычной халфе можно поднять до 4096 штук, поэтому это не проблема. Проблема в MAX_MODELS и MAX_MAP_MODELS. Ты же работаешь под ксашем, поэтому забей. Я работаю под голдсорсом, поэтому у меня есть несколько вариантов как эти лимиты экономить. Первый экономится засовыванием нескольких моделей в одну (см. патроны в HLWE), а второй детайлами и внешними BSP-моделями для пушаблей, поездов и для того, для чего не важно освещение.


Отправлено Aynekko 23-04-2021 в 12:59:

Цитата:
Ku2zoff писал:
Проблема в MAX_MODELS и MAX_MAP_MODELS. Ты же работаешь под ксашем, поэтому забей.

Забить не получится, т.к. я уже превышал этот лимит и пришлось перекомпилировать движок. На самой большой карте надо будет пройтись и пообъединять все это дело. Много такой брашевой лабуды, а также env_static'ов. Около 800 "моделей" точно есть на карте.

__________________
Мой мод на Xash


Отправлено Дядя Миша 23-04-2021 в 14:09:

Цитата:
Aynekko писал:
т.к. я уже превышал этот лимит и пришлось перекомпилировать движок

лимит до 4096 повышать можно, потом протокол сломается.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 23-04-2021 в 14:44:

Цитата:
Дядя Миша писал:
лимит до 4096 повышать можно

К сожалению, я не думаю, что компиляторы позволят. Ну или я что-то не так делаю. Вот делал тестовую карту - 896 env_static и столько же func_illusionary (стеклянные палки). Light_environment желтый, сами модели белые. Результат вот такой.

__________________
Мой мод на Xash


Отправлено Дядя Миша 23-04-2021 в 15:00:

Да, в компиляторх тоже лимит на 1024 модели, их тоже пересобрать бы надо.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 23-04-2021 в 15:35:

Я сейчас поменял MAX_MAP_MODELS в параноевских компиляторах на 2048. Перекомпилил все p2, только вместо p2rad взял hlrad (который в параноевском сдк). Результат остался тот же. p2rad у меня не хочет компилится - у меня шестая визуалка, ругается на

C++ Source Code:
ALIGN16 byte	block[64];
ALIGN16 byte	outBlock[16];

Может как раз в этом дело, что я свет хлрадом считаю, а не p2rad...

С другой стороны, я подсунул p2rad, который уже имелся - все скомпилилось, но со светом проблема так и осталась как на скрине.

__________________
Мой мод на Xash


Отправлено Ku2zoff 23-04-2021 в 15:44:

Цитата:
Aynekko писал:
Я сейчас поменял MAX_MAP_MODELS в параноевских компиляторах на 2048

Перегони часть брашевых моделей в mdl, и ставь на карту как енв_статики. Те, которые не требуют коллизии, например. Причём, в одну модель ты можешь зашить целую кучу бодей таких пропсов.
Однако, жэсть. Чего там можно придумать на карте уровня первой халфы, чтоб вылезти за лимиты?


Отправлено Aynekko 23-04-2021 в 15:57:

Цитата:
Ku2zoff писал:
Перегони часть брашевых моделей в mdl, и ставь на карту как енв_статики. Те, которые не требуют коллизии, например. Причём, в одну модель ты можешь зашить целую кучу бодей таких пропсов.

Да это понятно. Просто на бумаге ксаш поддерживает 4096 моделей, а по факту выставив 1700 "моделей" (850 енв_статик и столько же иллюженари) у моделей просто не считается освещение. Движок запускает - это да.
Цитата:
Ku2zoff писал:
Чего там можно придумать на карте уровня первой халфы, чтоб вылезти за лимиты?

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 23-04-2021 в 17:06:

Aynekko ты используешь повертексное освещение для env_static ?

Добавлено 23-04-2021 в 20:06:

Фонарные столбы это же модельки?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 23-04-2021 в 17:58:

Цитата:
Дядя Миша писал:
ты используешь повертексное освещение для env_static ?

Да, столбы и горы в этой пещере сделаны через env_static

__________________
Мой мод на Xash


Отправлено Дядя Миша 23-04-2021 в 18:26:

Ну неплохо, мне нравится.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 23-04-2021 в 18:37:

Раз нравится, то вот еще скрин скину. Опять же все скалы моделями накидал (так проще и быстрее, и выглядит имхо лучше). Модели не мои - портировал из NFS Payback

Собственно больше скринов есть по ссылке в подписи, на моддб.

__________________
Мой мод на Xash


Отправлено Aynekko 25-04-2021 в 16:18:

Есть такой баг в халфе, который раздражает - когда идешь по самому краю браша, начинает проигрываться звук ходьбы по-умолчанию - CHAR_TEX_CONCRETE. К примеру если идти по тонкому деревянному брусу, его очень легко словить. Шерстил код, смог добраться только до PM_TraceTexture в самом ксаше, где дальше идет PM_TraceSurface. А тут уже тупик, ибо ничего непонятно (лично мне). Понял я только одно, путем алертов в консоль, что идет трасса ровно из центра игрока вниз. Поэтому ничего и не находится под игроком.
Может кто-нибудь фиксил это?

__________________
Мой мод на Xash


Отправлено Дядя Миша 25-04-2021 в 16:30:

Может быть делать четыре-пять трасс. Одна по центру и 4 по углам ббокса.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 25-04-2021 в 16:32:

Цитата:
Дядя Миша писал:
Может быть делать четыре-пять трасс. Одна по центру и 4 по углам ббокса.

Это была первая мысль, но я решил что она слишком костыльная и быть может есть другой способ. Ну что ж

__________________
Мой мод на Xash


Отправлено Ku2zoff 25-04-2021 в 17:00:

Цитата:
Aynekko писал:
но я решил что она слишком костыльная

Достаточно делать два трейса под левую и правую ногу, вместо одного по центру. Нагрузка на проц не должна сильно вырасти. Даже монстрам можно на современных компах сделать трейс материалов для шагов. Это в 98 году вальва не сделала, наверное, из-за низкой производительности.


Отправлено Дядя Миша 25-04-2021 в 17:09:

Цитата:
Aynekko писал:
но я решил что она слишком костыльная и быть может есть другой способ

игро-зависимый код весь из костылей состоит, это нормально.
Главное чтобы бакэнд был грамотный.

Добавлено 25-04-2021 в 20:08:

Цитата:
Ku2zoff писал:
Достаточно делать два трейса под левую и правую ногу, вместо одного по центру

А не получится. Представь ситуацию, когда игрок стоит краешком спины на тонком браше и двигается боком. И трейсы опять уйдут в пустоту.

Добавлено 25-04-2021 в 20:09:

Цитата:
Ku2zoff писал:
Даже монстрам можно на современных компах сделать трейс материалов для шагов

в ксаш-моде было сделано еще в 2012-м

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 25-04-2021 в 17:13:

Из коллизий никак нельзя получить материал пола? Кидание трассы для звука шагов звучит как забивание гвоздей микроскопом.


Отправлено Дядя Миша 25-04-2021 в 17:58:

Цитата:
ncuxonaT писал:
Из коллизий никак нельзя получить материал пола?

так трасса и делается только для модели пола.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 25-04-2021 в 21:54:

В общем все получилось. Сделал проверку сначала центральным трейсом - если там fraction 1 (что случается только на краях браша), то включаются 4 дополнительных трейса по углам хулла. Все сделал внутри PM_CategorizeTextureType. Работает прям как в сорсе, что и хотел.

__________________
Мой мод на Xash


Отправлено KorteZZ 26-04-2021 в 02:39:

В КС 1.6 есть трюк, который довольно сложно исполнить: можно прыгнуть с просто невероятной высоты на краешек браша и не потерять ХП. Также на старых версиях, если поставить бомбу и сидеть неподалеку на стыке текстур и стрелять в них, то после твоей смерти от взрыва, на следующем раунде ты получишь порядка 7К баксов, чего хватает на авапу, фулл армор и раскид. Уже на втором раунде))

__________________

Killing Floor: Horzine Outbreak


Отправлено Aynekko 06-05-2021 в 13:15:

Можно ли как-то визуализировать util_traceline и tracehull? Чтобы видно было, куда и насколько идет трейс. С линией еще как-то обхожусь алертами, а с хуллом как определять?

__________________
Мой мод на Xash


Отправлено Дядя Миша 06-05-2021 в 14:48:

Цитата:
Aynekko писал:
Чтобы видно было, куда и насколько идет трейс

заспавнить какой-нибудь спрайт на месте vecEndPos ?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 06-05-2021 в 15:18:

Цитата:
Дядя Миша писал:
заспавнить какой-нибудь спрайт на месте vecEndPos ?

UTIL_ParticleEffect помог более-менее

__________________
Мой мод на Xash


Отправлено Ku2zoff 07-05-2021 в 16:51:

Что-то мне гугол не может дать внятного ответа, видимо за давностью лет. Подскажите, кто знает, порядок выхода версий HLSDK. Насколько я понял, сначала была версия под древний движок, несовместимая с современным. А потом сразу, внезапно и резко, как понос, появилась версия с новыми интерфейсами, вгуёвыми менюшками, пердиктингом и прочими радостями жызни. И она три раза патчилась до 2002 или 2003 года. А потом 10 лет была тишина, пока валвэ не решили забубенить собственную консоль на линуксе:
SDK 1.0
SDK 2.0
SDK 2.1
SDK 2.2
SDK 2.3
SDK 2.4 (2.3 с поддержкой линукса и макоси).
Возник закономерный вопрос, а не было ли до версии 2.0 чего-то промежуточного без клиентских пушек, но совместимого с обновлённым движком?


Отправлено Дядя Миша 08-05-2021 в 04:24:

Нет, не было. Оригинальную версию 1.0 сейчас вообще найти невозможно, то есть - это восстановленные сорцы из HL SDK 2.0 Full.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 08-05-2021 в 04:34:

Цитата:
Дядя Миша писал:
восстановленные сорцы из HL SDK 2.0 Full

Найти SDK 2.0 было той ещё задачей. Фкалекцыю добавил. Пробежался виндиффом, в этой версии из клиентских пушек только глок для теста. Теперь я разгадал загадку, почему в папке wpn_shared только один ствол. Его туда положили при внедрении клиентских оружий, а остальные пушки адаптировали, но оставили на своих местах.


Отправлено Shapirlic 08-05-2021 в 15:28:

Подкиньте компилятор для первой ХЛ который может делать тени сквозь браши с прозрачными текстурами(тень лестницы от браша с текстурой лестницы например)


Отправлено Crystallize 08-05-2021 в 17:12:

по-моему любой из современных должен уметь


Отправлено JPEG 08-05-2021 в 18:05:

Цитата:
Ku2zoff писал:
Найти SDK 2.0 было той ещё задачей. Фкалекцыю добавил. Пробежался виндиффом, в этой версии из клиентских пушек только глок для теста. Теперь я разгадал загадку, почему в папке wpn_shared только один ствол. Его туда положили при внедрении клиентских оружий, а остальные пушки адаптировали, но оставили на своих местах.

по-идее всё доступное хранится тут https://valvearchive.com/archive/Ha...SDK%20Releases/

Добавлено 08-05-2021 в 21:05:

Цитата:
Shapirlic писал:
Подкиньте компилятор для первой ХЛ который может делать тени сквозь браши с прозрачными текстурами(тень лестницы от браша с текстурой лестницы например)

https://www.temaps.com/topics/60

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Shapirlic 08-05-2021 в 19:04:

Цитата:
JPEG писал:
https://www.temaps.com/topics/60

Спасибо


Отправлено Shapirlic 09-05-2021 в 12:08:

Есть ли способ повысить разрешение лайтмапы локально на каком то участке кроме как скейлить текстуры вниз?


Отправлено Дядя Миша 09-05-2021 в 12:33:

Есть, но это только под Ксашем работает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 12-05-2021 в 08:00:

Подскажите, никак не могу понять. Как вывести число через UTIL_ShowMessage? Скажем у меня есть float четотам = 1.015. Как ее вывести на экран именно через message? И чтобы с подписью "такое-то равно 1.015".

__________________
Мой мод на Xash


Отправлено Ku2zoff 17-05-2021 в 05:00:

Aynekko:

C++ Source Code:
char msg[64];
sprintf(msg, "Float is: %f", flFloat);
UTIL_ShowMessage(msg, (CBaseEntity*)pPlayer);

Только вот я не уверен, правильно ли это. Может быть, стоит подсовывать первым аргументом UTIL_VarArgs("Float is: %f"\n", flFloat).


Отправлено Aynekko 17-05-2021 в 09:19:

Цитата:
Ku2zoff писал:
Aynekko:
C++ Source Code:
char msg[64];
sprintf(msg, "Float is: %f", flFloat);
UTIL_ShowMessage(msg, (CBaseEntity*)pPlayer);

Только вот я не уверен, правильно ли это. Может быть, стоит подсовывать первым аргументом UTIL_VarArgs("Float is: %f"\n", flFloat).

Спасибо большое. Сделал через утил_худмесседж. Там задал параметры, где текст распологается и каким цветом. А что делает вараргс, я что-то не понял. В коде прописал, но не вижу нигде.

__________________
Мой мод на Xash


Отправлено nekonomicon 21-05-2021 в 06:52:

Цитата:
Aynekko писал:
А что делает вараргс, я что-то не понял. В коде прописал, но не вижу нигде.

Делает почти тоже самое, что и sprintf, только копирует строку в статический буфер и возвращает указатель на него:
https://github.com/ValveSoftware/ha.../util.cpp#L1082
По факту чуть медленнее sprintf и поточно-небезопасная функция, но зато удобная.


Отправлено Aynekko 21-05-2021 в 10:38:

nekonomicon спасибо за разъяснение

__________________
Мой мод на Xash


Отправлено Aynekko 21-05-2021 в 21:32:

Народ, вожусь с trigger_push, прошерстил инет и даже нашел какие-то концы на этом форуме про FL_BASEVELOCITY, но так ни до чего и не додумался. Там что-то с самой физикой игры.
Суть проблемы - есть подводный туннель, который полностью внутри func_water, а внутри туннеля trigger_push. Пуш не толкает. Если включить и выключить noclip, то толкнет один раз и замолкает.
Припоминаю, что в хл2 игрока толкало под водой. Как это исправить, или может есть какие идеи, как еще это реализовать?
На одном сайте была идея поставить кучу мелких пушей друг за другом, чтобы кидало из одного в другой. Но это ж бред…хоть и может сработать.

__________________
Мой мод на Xash


Отправлено KiQ 22-05-2021 в 00:29:

Aynekko может флаг Once Only стоит?

Добавлено 22-05-2021 в 03:29:

Алсо, триггер должен быть растянут на весь туннель

__________________
-Brain is dead-


Отправлено Aynekko 22-05-2021 в 06:02:

Цитата:
KiQ писал:
Aynekko может флаг Once Only стоит?
Алсо, триггер должен быть растянут на весь туннель

Норм все. Я с этой проблемой еще много лет назад сталкивался.

__________________
Мой мод на Xash


Отправлено Дядя Миша 22-05-2021 в 08:17:

Там поидее надо не триггер пуш, а несолидный конвейер, чёб игрока извнутри тащило.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 22-05-2021 в 09:17:

Цитата:
Дядя Миша писал:
Там поидее надо не триггер пуш, а несолидный конвейер, чёб игрока извнутри тащило.

Не работает. Несолидный конвеер вообще не имеет эффекта. Проверял "на воздухе". Сделал его солидным, тогда тащит (когда сверху стою).

Добавлено 22-05-2021 в 11:40:

Как всегда, все решается костылем. Но вопрос открытый - как это пофиксить в коде?
А пока я поставил multi_manager, который дергает этот push каждые 0.05 секунды. Включает и выключает его. Если поставить 0.1, то получается дергано. И все, стабильно тащит под водой.

Добавлено 22-05-2021 в 12:17:

Окей, я КАЖЕТСЯ, нашел своеобразный фикс, который сработал, как ни странно.
Было:
C++ Source Code:
pOther->SetBaseVelocity( vecPush );
pevToucher->flags |= FL_BASEVELOCITY;

Стало:
C++ Source Code:
vecPush *= 0.01;
pOther->SetBaseVelocity( vecPush );
//		pevToucher->flags |= FL_BASEVELOCITY;

Значение 0.01 подогнал, оно соответствует пушу со скоростью 100. А иначе игрока толкнет со всей дури. А интересность заключается в том, что этот "фикс" убил двух зайцев - заработал пуш под водой, и при этом игрока больше не толкает, если он держится за лестницу под водой.
Однако, пуш теперь не работает на суше.

Поэтому, я делаю флаг для хаммера underwater push, где буду юзать этот "фикс" в нужных ситуациях, и на этом вопрос закрыт. Если есть предложения, как это пофиксить правильнее, буду только рад.

UPD: мм, не работает эта шняга при низком фпс. Буду думать дальше.

__________________
Мой мод на Xash


Отправлено Aynekko 24-05-2021 в 14:22:

Убрал зависимость от фпс, но все равно пуш ведет себя немного странно (ну это немудрено). Если поставить флаг FL_BASEVELOCITY, то получается вообще треш.
Пока получилось так, сделал спаунфлаг, и тестирую два пуша рядом. Снизу оригинал, сверху мой огород. Шестерка подобрана эмпирически.

C++ Source Code:
1
else
2
{
3
  if( pev->spawnflags & EXPERIMENTAL )
4
  {
5
    // Push field, transfer to base velocity
6
    Vector vecPush = (pev->speed * m_vecPushDir) * 6 * gpGlobals->frametime;
7
 
8
    //		if ( pevToucher->flags & FL_BASEVELOCITY )
9
    vecPush = vecPush + pOther->GetBaseVelocity();
10
 
11
    if( vecPush.z > 0 && FBitSet( pOther->pev->flags, FL_ONGROUND ))
12
    {
13
      pOther->pev->flags &= ~FL_ONGROUND;
14
      Vector origin = pOther->GetAbsOrigin();
15
      origin.z += 1.0f;
16
      pOther->SetAbsOrigin( origin );
17
    }
18
 
19
    if( pOther->m_iActorType == ACTOR_DYNAMIC )
20
      WorldPhysic->AddForce( pOther, vecPush * (1.0f / gpGlobals->frametime) * 0.5f );
21
    pOther->SetBaseVelocity( vecPush );
22
    //		pevToucher->flags |= FL_BASEVELOCITY;
23
  }
24
  else
25
  {
26
    // Push field, transfer to base velocity
27
    Vector vecPush = (pev->speed * m_vecPushDir);
28
 
29
    if ( pevToucher->flags & FL_BASEVELOCITY )
30
      vecPush = vecPush + pOther->GetBaseVelocity();
31
 
32
    if( vecPush.z > 0 && FBitSet( pOther->pev->flags, FL_ONGROUND ))
33
    {
34
      pOther->pev->flags &= ~FL_ONGROUND;
35
      Vector origin = pOther->GetAbsOrigin();
36
      origin.z += 1.0f;
37
      pOther->SetAbsOrigin( origin );
38
    }
39
 
40
    if( pOther->m_iActorType == ACTOR_DYNAMIC )
41
      WorldPhysic->AddForce( pOther, vecPush * (1.0f / gpGlobals->frametime) * 0.5f );
42
    pOther->SetBaseVelocity( vecPush );
43
    pevToucher->flags |= FL_BASEVELOCITY;
44
  }
45
}

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

__________________
Мой мод на Xash


Отправлено Ku2zoff 30-05-2021 в 18:27:

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

FOV 100:

https://i.imgur.com/Q2QmNCh.jpg

FOV 90:

https://i.imgur.com/Nx0UoD7.jpg

Добавлено 31-05-2021 в 01:27:

Размер VGUI-меню подгоняется под размер брашевого экрана (привет из тутора про рамки выделения). И все элементы меню динамически меняют своё положение и размер. В теории, какую бы форму не имел монитор, меню в нём спокойно уместится. Тестировал на разных разрешениях, начиная от 640х480. Всё помещается. Но вот с FOV проблема. У меня по дефолту стоит 100 для моего разрешения экрана. Для обычных не широкоформатных мониторов годится 90, а если 1080p и выше, то я думаю, что подойдёт значение 105-110 и т.д. Если получится это победить, то дело останется за малым - дописать парсер текстовиков для мониторов (да, количество кнопок, менюшек, прочего, а также команды и тексты я планирую грузить из файлов). Команды вообще делаются просто, находим активный монитор, который в данный момент юзает игрок, и в client command отправляем что-то типа "monitor_use menu1 param1". Ну а энтить монитора уже разруливает параметры и управляет другими энтитями. Я очень рад, что нашёл альтернативу ксашевским OpenGL-мониторам. Картинка видеонаблюдения на скринах реалтаймовая. И оттуда даже звук есть, в общем, каеф.


Отправлено Дядя Миша 30-05-2021 в 19:07:

Цитата:
Ku2zoff писал:
Я очень рад, что нашёл альтернативу ксашевским OpenGL-мониторам

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 30-05-2021 в 19:46:

Цитата:
Ku2zoff писал:
Я очень рад, что нашёл альтернативу ксашевским OpenGL-мониторам.

pparams->nextView?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Ku2zoff 30-05-2021 в 20:11:

Цитата:
XaeroX писал:
pparams->nextView?

Да. Из ограничений - нельзя сделать, чтобы монитор рисовал картинку, когда игрок в него не смотрит, а просто стоит рядом. Точнее можно, но она будет заметно плавать, т.к. динамический подбор размера вьюпорта не очень быстро работает. Но попробовать стоит, хотя бы ради пары мест, где это можно заюзать. OpenGL-хаки использовать не хочу, glCopyTexImage2D или как там эта функция правильно называется, не работает нормально на обновлённом рендерере халфы - не масштабируется. Да и не нужны эти эффекты в общем-то. 3D небо я сделал обычным способом, даже научился его переключать, чтобы динамически менять скайбоксы. Осталось научить фонарик равномерно светить при разных скейлах текстуры, и всё в шоколаде.


Отправлено Дядя Миша 31-05-2021 в 04:39:

Цитата:
Ku2zoff писал:
динамический подбор размера вьюпорта не очень быстро работает



Цитата:
Ku2zoff писал:
3D небо я сделал обычным способом

а есть необычный?

Цитата:
Ku2zoff писал:
Осталось научить фонарик равномерно светить при разных скейлах текстуры, и всё в шоколаде.

как мало человеку для счастья нужно

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 17-06-2021 в 08:34:

Подскажите по такому нубскому вопросу. Ставлю звук:

C++ Source Code:
EMIT_SOUND_DYN(ENT(pev), CHAN_STATIC, "sound.wav", 0.25, 2.0, SND_CHANGE_PITCH | SND_CHANGE_VOL, 100);

Звук издается игроком, но меня смущает то, что в случае мультиплеера этот звук будет слышен всем игрокам, а нужно чтобы его слышал только клиент. Как это сделать?

__________________
Мой мод на Xash


Отправлено BALISTA 18-06-2021 в 12:24:

Цитата:
Aynekko писал:
нужно чтобы его слышал только клиент

Нужно играть его на клиенте


Отправлено Ku2zoff 18-06-2021 в 12:46:

Цитата:
Aynekko писал:
нужно чтобы его слышал только клиент

C++ Source Code:
gEngfuncs.pfnPlaySoundByName
gEngfuncs.pfnPlaySoundByIndex
gEngfuncs.pfnPlaySoundByNameAtLocation
gEngfuncs.pfnPlaySoundVoiceByName
gEngfuncs.pfnPlaySoundByNameAtPitch

Целая куча клиентских функций для воспроизведения звука. Не знаю, какие точно из них есть в ксаше. Но связка мессага на клиент + воспроизведение на клиенте точно поможет скрыть звук от других игроков.


Отправлено Дядя Миша 18-06-2021 в 12:46:

Цитата:
Aynekko писал:
Звук издается игроком, но меня смущает то, что в случае мультиплеера этот звук будет слышен всем игрокам, а нужно чтобы его слышал только клиент. Как это сделать?

в энгфунксах есть BUILD_SOUND_MSG, через него можно посылать звуки, которые услышит только один игрок.
Я его под ксашем толком не проверял, но должно работать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 18-06-2021 в 17:58:

Спасибо всем за помощь.

__________________
Мой мод на Xash


Отправлено Crystallize 03-08-2021 в 17:10:

C++ Source Code:
float cylstep =  (2.0f*PitchWing) - (2.0f*AtomicWing) / 18.0f;

блин а чо вначале вычисляется деление-умножение как в школе? Я думал комп втупую по порядку идёт, ну кроме скобок. Или это может отличаться в более новых студиях?


Отправлено Дядя Миша 03-08-2021 в 19:39:

Цитата:
Crystallize писал:
как в школе?


https://skysmart.ru/articles/mathem...ij-v-matematike
https://ru.wikipedia.org/wiki/Приоритет_операции

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 04-08-2021 в 10:53:

Можно ли узнать view origin игрока на сервере? Мне нужно сделать там проверку с использованием именно view оригина, а не самого оригина игрока. Связано это с триггер_камерой. А она делает SET_VIEW и все. Может как-то можно достать с клиента это?

Добавлено 04-08-2021 в 13:53:

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 04-08-2021 в 11:56:

Цитата:
Aynekko писал:
Можно ли узнать view origin игрока на сервере?

pev->origin + pev->view_ofs

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 04-08-2021 в 12:34:

Цитата:
Дядя Миша писал:
pev->origin + pev->view_ofs

Если бы было все так просто. Я этот EyePosition выводил в prethink игрока, координаты остаются теми же, когда я включаю камеру. Ведь оригин игрока-то не меняется, только взгляд.
Сейчас попробовал в самой триггер_камере брать ее индекс, давать это число игроку, а дальше считается нужное мне расстояние от энтити по этому индексу (то есть как раз там где сейчас взгляд). Вот только после сейврестора индекс поменялся, так что опять мимо

Добавлено 04-08-2021 в 15:34:

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 04-08-2021 в 13:46:

Цитата:
Aynekko писал:
Я этот EyePosition выводил в prethink игрока, координаты остаются теми же, когда я включаю камеру

Так ты спросил
Цитата:
Aynekko писал:
Можно ли узнать view origin игрока на сервере?

Я ответил. А выясняется, что нужна позиция не игрока, а камеры.

Цитата:
Aynekko писал:
Пробовал делать копию оригина в vuser4, а он почему-то все равно всегда нулевой

так в delta.lst не прописан же.

Что ты хочешь сделать, я понять-то не могу.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 04-08-2021 в 14:14:

Ну просто на клиенте есть vieworg, который отвечает именно за камеру, и origin отдельно. Поэтому я так выразился.

Мне нужно на сервере сделать проверку расстояния между энтитей и камерой игрока. Вот я не могу оригин этой самой камеры игрока достать.

__________________
Мой мод на Xash


Отправлено Дядя Миша 04-08-2021 в 17:59:

Цитата:
Aynekko писал:
Мне нужно на сервере сделать проверку расстояния между энтитей и камерой игрока

Заведи в классе игрока какой-нибудь EHANDLE m_hViewEnt;
внутри вызова UTIL_SetView записывай туда объект камеры и дальше, если он не равен нулю спокойно ищи дистанцию. Ну и в сейв не забудь сохранить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 04-08-2021 в 21:10:

Спасибо. Я примерно так и сделал, но не в сетвью, а прямо в камере. Копирую в игрока оригин и имя камеры.
Параллельно получился еще и фикс - камера теперь проверяет, какое имя камеры у игрока записано (когда она работает), если не совпало - выключается. А раньше как было - можно активировать одну камеру, затем вторую, а затем выключить вторую. А первая как think'ала, так и будет think'ать! Вот так вот
В общем, сделал что хотел и даже больше.

__________________
Мой мод на Xash


Отправлено Ku2zoff 05-08-2021 в 03:25:

Ох, у меня к этим вьюриджинам и вьюанглсам давняя нелюбовь. Вроде бы в коде всё прозрачно, а на выходе имеем не то, что хотели. Но я всё-таки разобрался. Даже написал особую энтить, которая захватывает взгляд игрока. Для катсцен от первого лица, чтобы игрок смотрел туда, куда задумано. Осталось добавить этой энтите функционал, чтобы она захватывала управление и вела игрока по патч_корнерам, и будет прямо как в современных играх. Побочкой появился код для заглядывания в мониторы. Если буду делать транспорт (есть пара мыслей где его применить), то это же будет кодом входа/выхода из него.

Цитата:
Aynekko писал:
А первая как think'ала, так и будет think'ать!

При деактивации камеры делается вызов SET_VIEW на игрока и m_flReturnTime камеры приравнивается к gpGlobals->time. Можно там в условие сунуть SetThink(NULL), чтобы не тчинкала.


Отправлено Aynekko 05-08-2021 в 07:05:

Цитата:
Ku2zoff писал:
При деактивации камеры делается вызов SET_VIEW на игрока

Это в Stop. А я про FollowTarget. Попробуй сам. Поставь двум камерам время -1, чтобы не выключались автоматом. Потом активируй камеру 1. Не выключая ее, активируй камеру 2. Потом выключи камеру 2. А первую-то не выключили. Я выводил туда алерт, FollowTarget как работал, так и работает. И если ты попытаешься активировать камеру 1, то ничего не произойдет, потому что сначала будет деактивация. Нажмешь еще раз, тогда уже активируешь.

__________________
Мой мод на Xash


Отправлено Aynekko 14-08-2021 в 13:45:

На ксаше. В общем у меня стоит punchangle из сорса, который вычисляется в playermove.
Ситуация - создаю дедикатед сервер. Потом подключаюсь с двух компов - на одном более 200 фпс, на другом 30.
Когда заходит один клиент, любой - панч ведет себя нормально.
Если у обоих клиентов одинаковый фпс - то у обоих все нормально.
Но, если у одного клиента 30 фпс, а у другого 200, то у первого панч ооочень медленный, а у другого наоборот ускоренный. Фпс у обоих клиентов должен быть полностью одинаков, чтобы все нормально работало. Как это побороть?
Код панча:

C++ Source Code:
1
void PM_DropPunchAngle ( Vector &punchangle )
2
{
3
  float damping;
4
  float springForceMagnitude;
5
 
6
  if ( punchangle.Length() > 0.001 || pmove->vuser3.Length() > 0.001 )
7
  {
8
    punchangle += pmove->vuser3 * pmove->frametime;
9
    damping = 1.0f - (PUNCH_DAMPING * pmove->frametime);
10
 
11
    if ( damping < 0.0f )
12
      damping = 0.0f;
13
 
14
    pmove->vuser3 *= damping;
15
 
16
    // torsional spring
17
    // UNDONE: Per-axis spring constant?
18
    springForceMagnitude = PUNCH_SPRING_CONSTANT * pmove->frametime;
19
    springForceMagnitude = bound( 0, springForceMagnitude, 2 );
20
 
21
    pmove->vuser3 += punchangle * -springForceMagnitude;
22
 
23
    // don't wrap around
24
    punchangle[0] = bound( -89, punchangle[0], 89 );
25
    punchangle[1] = bound( -179, punchangle[1], 179 );
26
    punchangle[2] = bound( -89, punchangle[2], 89 );
27
  }
28
}

__________________
Мой мод на Xash


Отправлено Дядя Миша 14-08-2021 в 13:50:

у меня DJVU или ты уже задавал этот вопрос?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 14-08-2021 в 14:18:

Цитата:
Дядя Миша писал:
у меня DJVU или ты уже задавал этот вопрос?

Был другой вопрос про "рваность" движения панча, это решилось увеличением дельты.

Добавлено 14-08-2021 в 17:18:

Цитата:
Aynekko писал:
если у одного клиента 30 фпс, а у другого 200, то у первого панч ооочень медленный, а у другого наоборот ускоренный. Фпс у обоих клиентов должен быть полностью одинаков, чтобы все нормально работало. Как это побороть?

Отбой - проблема решилась.
Кому надо, вот решение:
В игрока кидаем
C++ Source Code:
1
void CBasePlayer::PunchAngle(void)
2
{
3
  float PUNCH_DAMPING = 9.0f;	// bigger number makes the response more damped, smaller is less damped
4
  // currently the system will overshoot, with larger damping values it won't
5
  float PUNCH_SPRING_CONSTANT = 65.0f;	// bigger number increases the speed at which the view corrects
6
 
7
  float damping;
8
  float springForceMagnitude;
9
 
10
  if (pev->punchangle.Length() > 0.001 || pev->vuser3.Length() > 0.001)
11
  {
12
    pev->punchangle += pev->vuser3 * gpGlobals->frametime;
13
    damping = 1.0f - (PUNCH_DAMPING * gpGlobals->frametime);
14
 
15
    if (damping < 0.0f)
16
      damping = 0.0f;
17
 
18
    pev->vuser3 *= damping;
19
 
20
    // torsional spring
21
    // UNDONE: Per-axis spring constant?
22
    springForceMagnitude = PUNCH_SPRING_CONSTANT * gpGlobals->frametime;
23
    springForceMagnitude = bound(0, springForceMagnitude, 2);
24
 
25
    pev->vuser3 += pev->punchangle * -springForceMagnitude;
26
 
27
    // don't wrap around
28
    pev->punchangle[0] = bound(-89, pev->punchangle[0], 89);
29
    pev->punchangle[1] = bound(-179, pev->punchangle[1], 179);
30
    pev->punchangle[2] = bound(-89, pev->punchangle[2], 89);
31
  }
32
}

В postthink кидаем
C++ Source Code:
PunchAngle();


Из playermove вообще выкинуть этот панч.

Это слишком просто и гениально, поэтому буду искать, что сломалось

__________________
Мой мод на Xash


Отправлено Дядя Миша 14-08-2021 в 14:30:

Цитата:
Aynekko писал:
Это слишком просто и гениально, поэтому буду искать, что сломалось

Мультик.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 14-08-2021 в 14:37:

Цитата:
Дядя Миша писал:
Мультик.

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 14-08-2021 в 15:21:

Этож по локалке. А так будут лаги, скорее всего.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 16-08-2021 в 19:33:

Не могу разобраться с параметром pparams->spectator на клиенте. Откуда он берется. Вот к примеру pmove->spectator говорит, что он активен, когда я переключаюсь в спектатора. В это же время в CalcRefDef pparams->spectator не активируется. Из-за этого я не могу применить некоторые настройки.

И другой вопрос. Как мне в этом refdef достать параметры клиента, вроде iuser1 и всякое такое прочее? Не могу никак найти.

__________________
Мой мод на Xash


Отправлено Ku2zoff 16-08-2021 в 19:58:

Цитата:
Aynekko писал:
Как мне в этом refdef достать параметры клиента, вроде iuser1

Для локального игрока - g_iUser. Для нелокального надо искать по индексу:
C++ Source Code:
gEngfuncs.GetEntityByIndex(player_index)->curstate.iuser1


Добавлено 17-08-2021 в 02:58:

Вообще, поле spectator имеется в секции Player_Encode в дельте. Так что по идее, для игроков этот параметр должен передаваться. Его нет в энтварсах, он есть в entity_state_t. Тут короче, надо задавать его вручную. А для локального клиента, как я уже писал - g_iUser1. Но я не уверен, что spectator вообще надо трогать. Скорее всего, это параметр для HLTV, то есть режима gEngfuncs.IsSpectateOnly.


Отправлено Aynekko 16-08-2021 в 20:01:

Цитата:
Ku2zoff писал:
Для локального игрока - g_iUser.

Спасибо, так и думал. Просто дело в том, что в ксашмоде их нет и вот я пытаюсь их как-то прикрутить (пока безуспешно). Извиняюсь, что сразу не упомянул про ксашмод. Надеялся, что есть более короткий путь.
Режим спектатора вот приделал на сервере, а с клиентом пока проблемы

Добавлено 16-08-2021 в 23:01:

Цитата:
Ku2zoff писал:
поле spectator имеется в секции Player_Encode в дельте

Да, в дельте он есть, сейчас проверил. Странно тогда.

__________________
Мой мод на Xash


Отправлено илья2 17-08-2021 в 15:55:

я кстати тоже спектатором интересуюсь пытаюсь добавить фишку как в dmc но все безуспешно. Как же все таки добавить эту фишку где её найти ? работает он как то так когда мы спавнимся то игрока самого нет он с пектаторе но когда мы нажимаем ок в меню то игрок спавниться.

__________________
илья


Отправлено Ku2zoff 17-08-2021 в 17:12:

Цитата:
илья2 писал:
игрока самого нет он с пектаторе

Не в спектаторе. Игрок невидим, несолиден, невосприимчив к урону, не может двигаться. Только вертеть головой.
Цитата:
илья2 писал:
пытаюсь добавить фишку как в dmc но все безуспешно

Чего там добавлять? Смотришь код MOTD из dmc, какая консольная команда отправляется при нажатии на кнопку OK. По этой команде всё находишь и копипастишь. Делов не больше, чем на пять минут.


Отправлено илья2 17-08-2021 в 17:46:

[QUOTE]Ku2zoff писал:
[B]Не в спектаторе. Игрок невидим, несолиден, невосприимчив к урону, не может двигаться. Только вертеть головой.

этот эффект я обнаружил в player.cpp в спавне игрока в этом ты прав.

неплохо бы спавн функцию игрока оттуда скопипастить в hl и будет как в dmc.

__________________
илья


Отправлено Aynekko 17-08-2021 в 18:26:

Цитата:
Aynekko писал:
Просто дело в том, что в ксашмоде их нет

Я тут со всем разобрался - в ксашмоде спектатор-режима вообще нет, там какие-то зачатки - StartObserver и… все. Я даже сомневаюсь что он работал. Наверное хлсдк очень древний брался за основу. g_iUser1 никакого тоже не было и в помине. В общем долго и упорно сверялся с актуальным хлсдк и более-менее собрал спектатора - правда без вида овервью карты. Эх, ксашмод, допиливать и допиливать еще. Но, быть может, соберу-таки мод, в который можно будет адекватно поиграть в мультик, а не только пройти сюжетку - благо перешел на FWGS недавно

__________________
Мой мод на Xash


Отправлено илья2 17-08-2021 в 19:22:

ладно лучше не буду делать. это для тебя так легко для меня это целая эпопея.

__________________
илья


Отправлено nekonomicon 17-08-2021 в 23:57:

Цитата:
Aynekko писал:
Я тут со всем разобрался - в ксашмоде спектатор-режима вообще нет, там какие-то зачатки - StartObserver и… все. Я даже сомневаюсь что он работал. Наверное хлсдк очень древний брался за основу. g_iUser1 никакого тоже не было и в помине. В общем долго и упорно сверялся с актуальным хлсдк и более-менее собрал спектатора - правда без вида овервью карты. Эх, ксашмод, допиливать и допиливать еще. Но, быть может, соберу-таки мод, в который можно будет адекватно поиграть в мультик, а не только пройти сюжетку - благо перешел на FWGS недавно

В HLSDK 2.3 не было спектатора.
Лучше из hlsdk-xash3d взять, там вроде была правка, чтобы из него можно было выйти.
Либо спектатор из AG.


Отправлено Aynekko 18-08-2021 в 05:50:

Цитата:
nekonomicon писал:
В HLSDK 2.3 не было спектатора.

Тогда понятно. Я взял основу из BugFixedHL Льва, потом еще сверился с актуальным хлсдк - там кое-что добавлено было по-мелочи.

__________________
Мой мод на Xash


Отправлено Ku2zoff 18-08-2021 в 07:12:

Цитата:
nekonomicon писал:
В HLSDK 2.3 не было спектатора.

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

Добавлено 18-08-2021 в 14:12:

Цитата:
nekonomicon писал:
Либо спектатор из AG.

Сорцы AG я не глядел, ориентировался на ReGameDLL, там всё есть. Серверная часть вообще довольно простая в этом плане. При pev->iuser1 у игрока другое состояние. Оно уже всё есть в pm_shared, нужно дописать лишь некоторые мелочи.


Отправлено Ku2zoff 18-08-2021 в 12:52:

Цитата:
илья2 писал:
это для тебя так легко для меня это целая эпопея

Ты очень легко сдаёшься. Для меня раньше была целая эпопея сделать прицел для снайперской винтовки. А сейчас вон, крутые штуки вроде переносимых пушаблей и рамочек выделения получаются. Дядя Миша тоже не сразу ксаш написал.


Отправлено Дядя Миша 18-08-2021 в 14:14:

Цитата:
Ku2zoff писал:
Дядя Миша тоже не сразу ксаш написал.

Начинается. Теперь мной уже детей пугают.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 18-08-2021 в 17:55:

Дядя Миша не пугают, а мотивируют!
илья2 если тебе что-то не даётся, оставь на время, и делай что попроще. В самом начале своей моддерской деятельности я занимался клонированием монстров и пушек. Сейчас я могу сделать монстра наследованием, да и пушку тоже, да и вообще, если заморочусь, могу почти с нуля написать. А тогда клонировал весь код. Пробуй делать что попроще и в дебри не лезь. Но первый спавн из DMC всё-таки скопипасти. Ты же уже нашёл, что там всё в спавне игрока. Вот и переноси в халфу всё, что связано с условием m_bHadFirstSpawn.


Отправлено Crystallize 22-08-2021 в 14:10:

Скопипастил в Фитцквейк из Спирита функцию float AngleBetweenVectors().
Сначала положил её в матчлибу, но при вызове из cl_input.c она давала бред типа 1239768.00000 без ошибок и ворнингов.
Тогда положил её в тот же cl_input.c и она стала нормально передавать значение, но возникла другая проблема, когда вектора переданные ей в качестве параметра, после нормализации в дочерней функции оказываются нормализованными и в материнской. Это что ваще.


Отправлено Дядя Миша 22-08-2021 в 14:16:

VectorNormalize действует in place.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено hgrunt_2020 24-08-2021 в 02:45:

хочу отрисовать спрайт на весь экран

как это сделать?


Отправлено JPEG 24-08-2021 в 03:05:

Re: хочу отрисовать спрайт на весь экран

Цитата:
hgrunt_2020 писал:
как это сделать?

например, так https://csm.dev/threads/hl1-blood-overlay.18688/

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено hgrunt_2020 24-08-2021 в 04:16:

JPEG
"Все!!! Точнее с этим файлом!!!
Теперь идем в tri.cpp
и ищем там функцию"

Там на сайте не дописано какая функция

Добавлено 24-08-2021 в 07:16:

JPEG
+ выдает ошибку
hud_redraw.obj : error LNK2001: unresolved external symbol "void __cdecl HUD_DrawNV(void)" (?HUD_DrawNV@@YAXXZ)


Отправлено Crystallize 24-08-2021 в 04:29:

Цитата:
hgrunt_2020 писал:
Там на сайте не дописано какая функция

написано, void DrawBloodOverlay


Отправлено илья2 24-08-2021 в 08:26:

например, так https://csm.dev/threads/hl1-blood-overlay.18688/

кстати хороший тутор можно наконец то классный спецэффект аптечки из mmod сделать

__________________
илья


Отправлено Aynekko 25-08-2021 в 07:21:

Подскажите. Есть класс CHudAmmo, где в public есть int ID оружия. Я его занес туда, т.к. оно мне нужно. Меняется оно так - iId = READ_CHAR(). Оно меняется - проверил. В другом cpp файле я хочу это значение использовать.
Сделал код:

C++ Source Code:
CHudAmmo AmmoData;
int WeaponID;
WeaponID = AmmoData.iId;


И вот это WeaponID всегда 0, а в худе алерт говорит что не ноль нифига. И ошибок никаких не выдает. Как достать значение?

__________________
Мой мод на Xash


Отправлено Дядя Миша 25-08-2021 в 08:48:

Ну в классе-то оно само-по себе не возьмётся.

gHUD.m_Ammo.iId

вот отсюда его бери.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 25-08-2021 в 09:52:

Цитата:
Дядя Миша писал:
gHUD.m_Ammo.iId

Спасибо, то, что надо.

__________________
Мой мод на Xash


Отправлено Ku2zoff 25-08-2021 в 12:47:

Цитата:
Дядя Миша писал:
gHUD.m_Ammo.iId

Правильно вроде будет gHUD.m_Ammo->m_pWeapon.iId. Только m_pWeapon - приватный член класса CHudAmmo. Его для начала надо сделать публичным.

Добавлено 25-08-2021 в 19:47:

Это чтобы не делать вот такую ссылку:
C++ Source Code:
CHudAmmo AmmoData;
int WeaponID;
WeaponID = AmmoData.iId;

Актуально для оригинальной халфы и ксашмода. В п2 и п1 (наверное) все члены CHudAmmo публичные.


Отправлено Aynekko 25-08-2021 в 13:23:

Цитата:
Ku2zoff писал:
Только m_pWeapon - приватный член класса CHudAmmo.

Я сделал новый публичный int WeaponID, в который копирую m_pWeapon->iId. А потом уже беру как gHUD.m_Ammo.WeaponID.

__________________
Мой мод на Xash


Отправлено hgrunt_2020 28-08-2021 в 14:04:

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


Отправлено Ku2zoff 28-08-2021 в 14:56:

hgrunt_2020 где-то далеко, я думаю. Долго искать. Нужны пропы студиомоделями? В ксашмоде есть env_static, используй их.


Отправлено JPEG 28-08-2021 в 17:25:

Цитата:
hgrunt_2020 писал:
я так понял здесь кто то уже говорил про пропы, раз поиск по форому выдал эту тему, не подскажите на какой странице был разговор про пропы?

тут все страницы темы одной страницей, далее просто ctrl+f
https://hlfx.ru/forum/printthread.p...35&perpage=2946

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено hgrunt_2020 29-08-2021 в 01:35:

JPEG я нашел этот проп, но при компилации вылазит это:
phys_prop.cpp(126) : error C2593: 'operator !' is ambiguous
phys_prop.cpp(132) : error C2593: 'operator !' is ambiguous
phys_prop.cpp(611) : error C2593: 'operator &&' is ambiguous
phys_prop.cpp(823) : error C2593: 'operator !' is ambiguous
phys_prop.cpp(962) : error C2065: 'mins' : undeclared identifier
phys_prop.cpp(962) : error C2065: 'maxs' : undeclared identifier
phys_prop.cpp(1112) : error C2593: 'operator !' is ambiguous
и че делать незнаю


Отправлено hgrunt_2020 29-08-2021 в 06:46:

Half-Life

немогу заставить энтитю реагировать на игрока, я хочу что бы игрок мог толкать энтитю своим телом


Отправлено Ku2zoff 29-08-2021 в 06:52:

Остался ли у кого этот архив? https://hlfx.ru/forum/showthread.php?s=&threadid=4511
Я даже не могу найти ссылку туда, где он лежал и название файла. Подскажите, может быть ещё у кого-то завалялись сорцы ксаша (движка) версии 0.68-0.72, ещё до совместимости с голдсорсом.


Отправлено Дядя Миша 29-08-2021 в 07:11:

Ku2zoff на кой они тебе?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 29-08-2021 в 07:26:

Дядя Миша спортивный интерес. Ну и ещё система частиц из старого ксаша. Клиентскую часть версии 0.72 я нашёл. А вот движка нету, он тогда ещё не был опенсорсным, и в комплекте с сдк не поставлялся. Думаю, что в том самом большом архиве эти сорцы должны быть.


Отправлено Дядя Миша 29-08-2021 в 07:43:

Цитата:
Ku2zoff писал:
спортивный интерес

вытащить бамп и вставить его обратно?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Decay 29-08-2021 в 13:18:

У меня лежит какой-то xash22.06.07_09.05.10.rar (792 МБ) сохранен 26 июня 2013


Отправлено Ku2zoff 29-08-2021 в 14:02:

Decay по-моему, он самый. Билды ксашей с 22.06.07 по 09.05.10. Можешь выложить?


Отправлено Decay 29-08-2021 в 14:08:

https://drive.google.com/file/d/1H8...iew?usp=sharing


Отправлено Aynekko 29-08-2021 в 19:46:

Как можно на сервере управлять временем (типа сделать замедление и вернуть обратно)? Я конечно могу сделать через SERVER_COMMAND, но подумал, что лучше спросить - может есть другой, менее костыльный способ?

__________________
Мой мод на Xash


Отправлено Дядя Миша 30-08-2021 в 06:03:

Замедление времени никогда не было элементом геймплея в ксаше.
Нет таких способов.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 30-08-2021 в 10:35:

Aynekko а как в моде про Макспейна сделано?


Отправлено Aynekko 30-08-2021 в 11:10:

Цитата:
Crystallize писал:
Aynekko а как в моде про Макспейна сделано?

Если б я знал. Ну, через сервер_комманд, наверное. Я покопался и других способов не нашел.

__________________
Мой мод на Xash


Отправлено JPEG 30-08-2021 в 11:45:

в квейке была команда host_timescale замедляющая время, в первых версиях хл тоже вроде как работала, мб как-то можно вернуть

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг


Отправлено Ku2zoff 30-08-2021 в 12:27:

Цитата:
JPEG писал:
квейке была команда host_timescale

В голдсорсе есть host_framerate. 0 - дефолтное значение, 0.016 - 0.017 примерно соответствуют дефолту, всё, что выше - ускоряет время, всё, что ниже - замедляет. Зависит от фпс, и тут надо считать значение по хитрой формуле. То, что я привёл - для фпс 60. Я как-то вычислял время кадра для серверного fmod'овского плеера из Invasion через gpGlobals->frametime, получалось точно и без подстановок волшебных чисел. Сейчас уже и не вспомню, если удалил те сорцы.


Отправлено Дядя Миша 30-08-2021 в 13:54:

Очень хитрая формула:

framerate = 1.0 / fps

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено hgrunt_2020 06-09-2021 в 11:34:

это не для меня, для друга

можно ли как то убрать определенный тип урона при нажатии примари аттак?
ну или имунитет сделать


Отправлено ncuxonaT 06-09-2021 в 17:35:

Кто-нибудь может провести ликбез, как устроено время в ксаше/хл, где что тикает, как увязываются клиент с сервером, какие значения используются для интерполяции и т.д.?


Отправлено Crystallize 15-09-2021 в 15:33:

Не могу найти рассказ ДМ про то что BSP не беспокоится о ликах и их проверку ввели как оптимизацию, может помнит кто где он это писал?


Отправлено Ku2zoff 15-09-2021 в 16:20:

Re: это не для меня, для друга

Цитата:
hgrunt_2020 писал:
можно ли как то убрать определенный тип урона при нажатии примари аттак?
ну или имунитет сделать

Кому иммунитет? Игроку? В TakeDamage вставляешь условие
C++ Source Code:
if ((pev->buttons & IN_ATTACK) && (bitsDamageType & DMG_ТИПУРОНА))

и от этого уже пляшешь.


Отправлено Дядя Миша 15-09-2021 в 17:35:

Цитата:
Crystallize писал:
Не могу найти рассказ ДМ про то что BSP не беспокоится о ликах и их проверку ввели как оптимизацию, может помнит кто где он это писал?

Никогда я такого не писал и не мог написать.
Я писал, что дерево к ликам не имеет никакого отношения. У народа в сознании почему-то прочно переплетено, что если дерево BSP, то карта должна быть замкнутой обязательно. Это не так, дереву всё равно какую геометрию ты ему скармливаешь.
Тут смысл в том, что на BSP дерево идеально ложится портализация, которая позволяет легко и просто обнаружить незамкнутость пространства. Причём если пространство незамкнуто - это опять-таки не ошибка, это просто информация. Процесс портализации успешно завершится в любом случае.
Но! Если дырок на уровне не будет, то все внешние полигоны попадут в outside leaf и мы сможем легко и изящно их дропнуть со 100% гарантией этой операции. Второй положительный момент - для портализованного мира можно посчитать потенциальную видимость. Ну конечно так, как это делается для халфы давно уже нет никакого смысла, но разбивать мир на зоны-комнаты это актуально и сейчас. Правда в связи с отказом от BSP, дизайнерам прибавилось работы, теперь они вручную всё обстраивают.
Последнее предложение не про Ксаш, а про то как сейчас воркфлоу устроен в движках.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 15-09-2021 в 17:39:

Цитата:
Дядя Миша писал:
Если дырок на уровне не будет, то все внешние полигоны попадут в outside leaf и мы сможем легко и изящно их дропнуть со 100% гарантией этой операции.

Так вот то-то и оно, экономия. В годы выхода первой кваки это было капец как важно, с тогдашним железом-то. Даже во времена хл2 3д скайбоксы мутили. А сейчас... Железо же мощное, чо, можно и не оптимизировать и не экономить. Юнити 5 как пример.


Отправлено hgrunt_2020 17-09-2021 в 23:27:

дратути, я с проблемой

хотел сделать 8 визуалов для барни, но при количестве бодигрупп больше 3 ксаш крашится с отсылкой на клиент и gl_ref


Отправлено hgrunt_2020 19-09-2021 в 02:02:

КАК ПОЧИНИТЬ HOLSTER?

так и не понял как это сделать


Отправлено Ku2zoff 25-09-2021 в 05:54:

hgrunt_2020 вот так. По этому тутору всё прекрасно делается. Рекомендую отключить клиентские пушки и завести кастомную мессагу вместо SVC_WEAPONANIM, чтобы нормально работало по сети в режиме наблюдателя.


Отправлено hgrunt_2020 26-09-2021 в 10:50:

опять я, и опять с вопросом

хотел чтоб в место заряженного выстрела гаусс сам пополнял боезапас, провозился долго, но чет толи я дурак, толи лыжи не едут, анимация spinup перестала проигрыватся, а spin проигрывается но после отпускания кнопки
вот что намудрил


void CGauss::SecondaryAttack()
{
if ( charge == 0 )
{

// spin up

SendWeaponAnim( GAUSS_SPINUP );
charge = 1;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.5;
m_pPlayer->m_flStartCharge = gpGlobals->time;
m_pPlayer->m_flAmmoStartCharge = UTIL_WeaponTimeBase() + GetFullChargeTime();
}
else if (charge == 1)
{
if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase())
{
SendWeaponAnim( GAUSS_SPIN );
}
}
else
{
if ( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] >= 100 )
{
m_fInAttack = 0;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0;
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1;
return;
}

if ( m_pPlayer->m_flStartCharge < gpGlobals->time - 10 )
{
m_fInAttack = 0;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0;
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0;
SendWeaponAnim( GAUSS_IDLE );

// Player may have been killed and this weapon dropped, don't execute any more code after this!
return;
}
}

if( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] >= URANIUM_MAX_CARRY )
return;

while( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] < URANIUM_MAX_CARRY && m_flRechargeTime < gpGlobals->time )
{
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]++;
m_flRechargeTime += 0.5f;
}
}


Отправлено FreeSlave 26-09-2021 в 12:10:

Думаю, многие замечали, что в какие-то моменты анимация деплоя оружия перестаёт играть при быстрой смене между пушками (на Q) - оружие мгновенно отображается на экране. Проявляется это как в сетевой, так и в одиночной игре. Кто-нибудь копал в эту сторону? Можно ли это стабильно побороть?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 26-09-2021 в 14:35:

Цитата:
FreeSlave писал:
Можно ли это стабильно побороть?

Отключить клиентские пушки, я думаю.


Отправлено hgrunt_2020 30-09-2021 в 10:22:

Пытался сделать улучшение для пушек , но чет пошло не так

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

C++ Source Code:
1
class CItem74drum : public CItem
2
{
3
  void Spawn( void )
4
  {
5
    Precache( );
6
    SET_MODEL(ENT(pev), "models/w_74drum.mdl");
7
    CItem::Spawn( );
8
  }
9
  void Precache( void )
10
  {
11
    PRECACHE_MODEL ("models/w_74drum.mdl");
12
  }
13
  BOOL MyTouch( CBasePlayer *pPlayer )
14
  {
15
    if (m_iDrum == 0)
16
    {
17
      m_iDrum = 1;
18
    }
19
    return FALSE;
20
  }
21
};

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 30-09-2021 в 11:03:

hgrunt_2020 так тебе надо заводить переменные в коде пушки или игрока, а не в коде итема. В общих чертах:

C++ Source Code:
1
BOOL MyTouch( CBasePlayer *pPlayer )
2
{
3
  if (pPlayer->m_iDrum == 0)
4
  {
5
    if (pPlayer->pev->weapons & (1<<WEAPON_MYWEAPON))
6
    {
7
      pPlayer->m_iDrum = 1;
8
    }
9
  }
10
  return FALSE;
11
}
12
 
13
CMyWeapon::ItemPostFrame
14
{
15
  if (m_pPlayer->m_iDrum == 1)
16
    pev->body = нужная_бодигруппа;
17
}

Не забывай передавать бодю на клиент в эвентах и указывать в аргументе SendWeaponAnim, если работаешь не под ксашмодом.

Добавлено 30-09-2021 в 18:03:

Этот код годится, если хранить переменную в игроке. Ну мало ли, может у него тоже какие-то свойства меняются. А вот если хранить в пушке, что логичнее, тут немного сложнее:
C++ Source Code:
1
BOOL MyTouch( CBasePlayer *pPlayer )
2
{
3
  if (pPlayer->pev->weapons & (1<<WEAPON_MYWEAPON))
4
  {
5
    CMyWeapon *pGun = NULL;
6
 
7
    for ( i = 0 ; i < MAX_ITEM_TYPES ; i++ )
8
    {
9
      if ( pPlayer->m_rgpPlayerItems[ i ] )
10
      {
11
        CBasePlayerItem *pPlayerItem = pPlayer->m_rgpPlayerItems[ i ];
12
        while ( pPlayerItem )
13
        {
14
          pGun = (CMyWeapon*)(pPlayerItem->GetWeaponPtr());
15
        }
16
      }
17
    }
18
    if (pGun && pGun->m_iDrum == 0)
19
    {
20
      pGun->m_iDrum = 1;
21
    }
22
  }
23
  return FALSE;
24
}


Отправлено hgrunt_2020 30-09-2021 в 11:58:

Ku2zoff
items.cpp(361) : error C2065: 'i' : undeclared identifier
што с этим делать?

Добавлено 30-09-2021 в 14:58:

Ku2zoff
ты в for ( i = 0 ; i < MAX_ITEM_TYPES ; i++ ) забыл int, вот и выдовало у меня ошибку

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 30-09-2021 в 12:04:

Цитата:
hgrunt_2020 писал:
забыл int

Написал код на коленке, чисто для примера. Вот и упустил. Указатель на пушку правильно приходит?


Отправлено hgrunt_2020 30-09-2021 в 12:16:

Ku2zoff
здесь надо писать номер и ID пушки?
ибо у меня при подборе вылетает

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 30-09-2021 в 13:01:

Вместо WEAPON_MYWEAPON пишешь, например, WEAPON_MP5. Возможно, указатель получается невалидный. Поищи в коде, где из m_rgpPlayerItems ищутся CBasePlayerItem и сравнивай, в чём разница.


Отправлено Chyvachok 30-09-2021 в 14:15:

Тема с апгрейдами интересная, к примеру еще как вариант интересно бы сделать акимбо-пушки, но чтобы это было не отдельное оружие которое дается при подборе, а было апгрейдом существующей, а то без тутора Дяди Миши всего 32 слота на пушки, хотя я вроде смог осилить более-менее нормальные акимбо пушки. Из мелочей еще надо сделать какую-то анимацию применения подбора, просто холстер и деплой с новой боди группой если пушки в руках и игрока.

Кстати для акимбо полезная была бы фишка это блендинг анимаций, чтобы при стрельбе из левого пистолета не обрывалась анимация правого, и если правый не стреляет, то он проигрывал idle анимацию вне зависимости от левого пистолета.


Отправлено FreeSlave 10-10-2021 в 10:26:

Достаю в HUD_WeaponsPostThink состояние клиентской пушки через gEngfuncs.GetViewModel() и меняю там curstate.body. Но отображается изменение несколько позже. Можно ли как-то триггернуть перерисовку?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 10-10-2021 в 16:42:

FreeSlave посылай с сервера в мессаге SVC_WEAPONANIM. Тогда бодя будет меняться не посреди кадра, а в начале. Но если надо менять налету, лучше используй Xash Weapon System с её бодями и скинами.

Добавлено 10-10-2021 в 23:42:

Ещё можешь попробовать менять бодю не в посттчинке, а в HUD_Frame. Теоретически, если операции, что делаются в ItemPreFrame запихать в HUD_Frame, а те, что в ItemPostFrame, оставить в HUD_WeaponsPostThink, это избавит систему оружий от глюков. Но ссылку на инфу о предиктинге можно получить только из HUD_PostRunCmd. Так что проще вообще нафиг вырезать клиентские пушки. От них один геморрой, а лаг в полсекунды при стрельбе не так уж заметен при игре по сети.


Отправлено FreeSlave 10-10-2021 в 18:01:

Ku2zoff SVC_WEAPONANIM же резетнет саму анимацию? Мне нужно менять боди без смены анимации, поэтому полез напрямую в ViewModel.

Возможно действительно стоит клиентские пушки убрать, тем более, что мне по большей части для сингла нужно.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 10-10-2021 в 18:03:

Помню я с этим дерьмом боролся на уровне движка. Вроде даже победил.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 10-10-2021 в 18:49:

Цитата:
FreeSlave писал:
Мне нужно менять боди без смены анимации

Я в своё время это прекрасно проделывал на спирите 1.9 в ItemPostFrame. Всё нормально менялось. Так что клиентские пушки однозначно под нож, а систему скинов и бодей из Xash Weapon System в студию.


Отправлено Crystallize 16-10-2021 в 14:39:

Как сделать чтобы из противоположных кнопок типа W и S передавалась всегда только та которая была нажата последней?


Отправлено Дядя Миша 16-10-2021 в 15:25:

Куда передавалась?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 16-10-2021 в 17:24:

Crystallize "отжимай" противоположную кнопку в коде инпута:

C++ Source Code:
1
void IN_ForwardDown(void)
2
{
3
  KeyUp(&in_back); // новое
4
  KeyDown(&in_forward);
5
  gHUD.m_Spectator.HandleButtonsDown( IN_FORWARD );
6
}

Наоборот для IN_BackDown. Не знаю, сработает ли. Надо наверное переписать работу со стейтами кнопок.


Отправлено hgrunt_2020 19-10-2021 в 21:26:

Перегрев

Я тут запил перегрев оружия, и думаю, может сделать из этого нубо-тутор?
Собсна демонстрация онного https://youtu.be/xZpEV5QODLQ

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 20-10-2021 в 00:02:

hgrunt_2020 а где коронное "Пацаны, я маслину поймал!"? Непорядок
Ну а почему нет? Выложи, мб кому-то пригодится.


Отправлено hgrunt_2020 20-10-2021 в 04:52:

Цитата:
Ku2zoff писал:
hgrunt_2020 а где коронное "Пацаны, я маслину поймал!"? Непорядок

Ну дык это не сталкер а метро

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено hgrunt_2020 21-10-2021 в 09:20:

На вью модели можно регулировать кости?

А на вью модели можно регулировать кости? ну контролировать, как голову у нпс, мне для индикатора надо.
Если да то как контролировать эту кость?

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Дядя Миша 21-10-2021 в 11:32:

При сборке модели очевидно надо создать контроллер кости.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено hgrunt_2020 21-10-2021 в 11:33:

Дядя Миша
это да, но как это сделать в коде, на модели то я уже сделал контролер

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 21-10-2021 в 12:39:

hgrunt_2020 проверить m_pCurrentEntity на вьюмодель, а потом крутить у этой энтити контроллер. Положение контроллера слать на клиент пользовательской мессагой. Наверное, для вьмоделей можно даже сделать блендинг между анимациями. Например, чтобы не было резкого перехода между idle/fidget и reload.


Отправлено hgrunt_2020 26-10-2021 в 02:43:

Ku2zoff
Даже интересно стало про блендинг анимаций на вью модели

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 26-10-2021 в 09:37:

hgrunt_2020 у cl_entity_t есть структуры entity_state_t и latchedvars_t. В первых (baseline, prevstate, curstate) хранятся данные, получаемые по сети с сервера. Секвенции, позиции бонеконтроллеров и всякое прочее. Во второй структуре (latched) хранится почти то же самое, но с некоторой задержкой, то есть на текущий кадр информация уже устаревшая. Не знаю с какой задержкой, это надо глядеть сорцы ксашдвижка. (А вообще, в StudioSetupBones эта задержка указана: m_pCurrentEntity->latched.sequencetime + 0.2, 0.2 секунды) Так вот, StudioModelRenderer смешивает (to blend) актуальную анимацию с устаревшей, усредняя (to interpolate) положения костей. Именно поэтому мы видим плавные переходы между анимациями у монстров. Для вьюмоделей это не сделано за ненадобностью, потому что не особо режет глаз. Теоретически, можно самостоятельно, своими шаловливыми ручками заполнять latched для вьюмодели в текущем кадре, а в следующем делать интерполяцию в StudioSetupBones. Насколько мне известно, движок этого не делает.


Отправлено Дядя Миша 26-10-2021 в 14:32:

Цитата:
Ku2zoff писал:
хранится почти то же самое, но с некоторой задержкой

Там не задержка. Оно там лежит сколько угодно, пока его не перезапишут.

Цитата:
Ku2zoff писал:
заполнять latched для вьюмодели в текущем кадре, а в следующем делать интерполяцию в StudioSetupBones

Не надо. Омерзительно выглядит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено [CFR] B@N@N 28-10-2021 в 13:52:

Значит задача такая есть 2 модели с одинаковым скелетов но разным порядком костей. Ну и короче мне надо чтобы пересадить анимации с одной модели на вторую и возникает такой вопрос - Как можно свапать кости подскажите или может бытт есть прога для этого?


Отправлено Ku2zoff 28-10-2021 в 14:40:

Если милка импортирует анимации некорректно, стоит попробовать во фрагмоушене.


Отправлено [CFR] B@N@N 28-10-2021 в 15:02:

Нет дело не в милке так как это изначально модели с разным порядком костей.

Добавлено 28-10-2021 в 18:02:

Потому что одна модель из одного мода а другая из другово и имеет другие анимации и иной порядок костей
Типа кости ног в одной имеют номера 3, 4, 5 а во второй они уже где-то в конце и там 28,29,30
Ну и если так компиляции делать то анимация выкручивает эти ноги под не естественым углом


Отправлено Crystallize 30-10-2021 в 15:29:

Поиграл в SWAT Remastered от Aynekko, там встречается странный баг когда на определённых брашах, мировых, фонарик не рисуется. Там же рядом есть лифт который едет рывками если на нем убить слишком много солдатиков (они в итоге проваливаются насквозь и тогда он едет) но это-то как раз известно, я думаю.


Отправлено FreeSlave 01-11-2021 в 09:07:

Наверняка многие замечали, что trigger_hurt не воздействует на стоящих на месте монстров. Собственно, с чем это связано, и какие есть варианты решения?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 01-11-2021 в 10:04:

Потому что триггеры действуют наоборот. В функции LinkEdict есть аргумент touch_triggers. Таким образом это не триггер ищет всё, что попало в его область, а наоборот - монстр или любой другой предмет делают шаг, вызывается LinkEdict и проверяется попадание в триггер.
А для стоящего на месте монстра UTIL_SetOrigin не вызывается, т.к. это бессмысленно. Вот и не работают триггеры. С игроком дело другое - там это каждый кадр вызывается.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 01-11-2021 в 13:31:

Да, точно, помню такое.
А есть ли способ проверить как-то с другой стороны? В Sven Co-op например реализован флаг "Affect non-moving NPC's": https://sites.google.com/site/svenm...de/trigger_hurt

Можно в think проверять какую-нибудь область на наличие монстров и их дамажить, но trigger_hurt то может быть любой формы. Одним UTIL_EntitiesInBox не обойдешься. Есть ли в HL способ мануально проверить, что энтитя находится в области другой брашевой энтити?

Добавлено 01-11-2021 в 16:31:

Проверил реализацию в Sven Co-op - там просто проверяется, что находится в Bounding Box. Т.е. если сделать полый trigger_hurt и внутрь поставить монстра, его тоже будет дамажить.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 01-11-2021 в 13:39:

Цитата:
FreeSlave писал:
А есть ли способ проверить как-то с другой стороны?

Не усложняй. Просто вызывай для монстров UTIL_SetOrigin каждый Think.
То что ты хочешь реально нужно только для быстролетящих предметов, типа стрелы арбалета, которая действительно может пролететь тонкий триггер не коснуться его.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 05-11-2021 в 10:09:

Дядя Миша, хмм, попробовал с UTIL_SetOrigin( pev, pev->origin ) в MonsterThink, ничего не поменялось.
Карта с примером в аттаче.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 05-11-2021 в 10:48:

Может вызываешь не оттуда?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 05-11-2021 в 11:17:

Дядя Миша, а там большой выбор? Вот изменение https://github.com/FreeSlave/hlsdk-...4b9b852949f54a9

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 05-11-2021 в 12:50:

Пихни алерт в MonsterTouch и посмотри, вызывается ли оно.
И если да, то с каким эдиктом в качестве pOther.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 05-11-2021 в 13:48:

Дядя Миша, добавил в CTalkMonster::Touch. На trigger_hurt не вызывается.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 05-11-2021 в 14:31:

в trigger_hurt тоже сделай проверку.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 08-11-2021 в 21:18:

Можно ли передать на клиент отрицательный iuser(1-4)? Столкнулся с тем, что приходит 0. Положительное число видит.

__________________
Мой мод на Xash


Отправлено Ku2zoff 08-11-2021 в 21:34:

Aynekko попробуй увеличить количество бит в delta.lst до 8. Как, например, у sequence и gaitsequence. Там точно и стопудово приходят отрицательные значения.


Отправлено Aynekko 08-11-2021 в 21:55:

Ku2zoff спасибо, что откликнулся, в entity encode у меня уже стоит 16, 1.0 у всех iuser. Но даже число -3 не проходит, пишет ноль. Больше нуля выставляю сразу все четко. Если это важно, то ставлю iuser3 в спаун солдата, на карте только я и солдат, пустая коробка. Пишу 555, вижу на клиенте 555, пишу отрицалку вижу ноль...

__________________
Мой мод на Xash


Отправлено Ku2zoff 09-11-2021 в 06:15:

Aynekko тогда не знаю, в чём дело. Поступи по-другому. Вместо отрицательных чисел используй какой-нибудь диапазон. Например, в качестве положительных 1-255, а в качестве отрицательных 256-511. То есть, у тебя на клиенте проверка была

C++ Source Code:
if (entity->curstate.iuser4 < 0)

а стала
C++ Source Code:
if (entity->curstate.iuser4 > 256)

Ну или
C++ Source Code:
if (entity->curstate.iuser4 > 256)
  entity->curstate.iuser4 = 256 - entity->curstate.iuser4;

Таким образом ты уже на клиенте получишь отрицательное число.

В AddToFullPack иузеры вписаны? Где они из энтварсов передаются в entity_state?

Добавлено 09-11-2021 в 13:15:

Щас глянул в сорцы ксаш мода, а они там все уже заняты, кроме iuser4:
C++ Source Code:
state->iuser1	 = ent->v.iuser1; // flags
state->iuser2	 = ent->v.iuser2; // flags
state->iuser3	 = ent->v.iuser3; // vertexlight cachenum
state->iuser4	 = ent->v.iuser4;

Надеюсь, ты это учёл. Вообще, это для енв_статиков, и проверки в коде клиента должны быть.


Отправлено Aynekko 09-11-2021 в 07:24:

В принципе я уже решил проблему, заведя новый pev-effects, но все равно хотелось бы разобраться.

Цитата:
Ku2zoff писал:
Вместо отрицательных чисел используй какой-нибудь диапазон.

Вот чтобы избежать возможных конфликтов со статиками, я хотел отрицательное число вписать. Когда ставил положительное, у меня статик делал тот же эффект ибо iuser совпал
Цитата:
Ku2zoff писал:
В AddToFullPack иузеры вписаны?

Ага. В самом конце addtofullpack вывел в консоль все четыре iuser. Поставил число -5. Так и выводит. То есть с сервера ушло -5.
На клиенте алерт в консоль стоит прямо первой строчкой в HUD_AddEntity. Четыре нуля выводит. Если пишу положительное число, выводит правильно. Капец странно. И число маленькое же.
Я уже искал в коде какие-то проверки на обнуление, если меньше нуля - не удалось найти. Может проверь у себя, как работает ли у тебя.

__________________
Мой мод на Xash


Отправлено Дядя Миша 09-11-2021 в 08:54:

DT_SIGNED

Добавлено 09-11-2021 в 11:54:

Цитата:
Ku2zoff писал:
Вместо отрицательных чисел используй какой-нибудь диапазон

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 09-11-2021 в 09:13:

Цитата:
Дядя Миша писал:
DT_SIGNED

Ларчик просто открывался. Сработало!

__________________
Мой мод на Xash


Отправлено [CFR] B@N@N 09-11-2021 в 11:22:

Может просто множить искомое число на -1 при получении?


Отправлено Aynekko 09-11-2021 в 11:46:

Цитата:
[CFR] B@N@N писал:
Может просто множить искомое число на -1 при получении?

Гениально, надо было сразу так сделать.

__________________
Мой мод на Xash


Отправлено Aynekko 14-11-2021 в 10:44:

Хотел на клиенте повращать браш. Обнуляю там angles и параллельно постоянно считаются и задаются новые координаты. Но он не крутится.
Сделал ту же самую энтитю, но точечную, с моделькой - крутится.
Судя по репортам консоль, брашевая энтитя приходит на клиент, координаты так же считаются и задаются. Если делать то же самое на сервере, то браш крутится. Какая-то особенность для брашевых энтитей?

__________________
Мой мод на Xash


Отправлено Ku2zoff 14-11-2021 в 11:10:

Aynekko с сервера приходят координаты и углы, а клиент уже по ним производит трансформацию. Учти, что брашевая модель - субмодель мира.

Цитата:
Aynekko писал:
точечную, с моделькой - крутится

Ты крутишь только клиентскую энтитю. На сервере всё остаётся по-старому. Как только придёт новый пакет данных - твоя энтитя встанет в первоначальное положение. Вижу два выхода: первое, это крутить на сервере, как положено. Второе, это делать чисто клиентскую энтитю, и оперировать ей. Со студиомодельками такое канает, с брашами - не знаю. Их как минимум придётся грузить из отдельных бсп (то есть энтитя будет точечной), как итемы в первой кваке.


Отправлено Aynekko 14-11-2021 в 11:15:

Цитата:
Ku2zoff писал:
Ты крутишь только клиентскую энтитю.

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

Собственно вот нехитрый код. На клиенте я просто подменяю angles, когда они приходят (а приходит по идее всегда ноль, т.к. на сервере энтитя не двигается)
C++ Source Code:
1
static Vector Angles;
2
Angles.z += 200 * g_fFrametime;
3
if( Angles.z > 359 ) Angles.z = 0;
4
e->angles = Angles;

Получился такой простой клиентский func_rotating. С моделькой отлично работает, а вот почему с брашем не прокатывает - загадка.

__________________
Мой мод на Xash


Отправлено Ku2zoff 14-11-2021 в 11:16:

Цитата:
Aynekko писал:
e->angles = Angles;

попробуй e->curstate.angles.


Отправлено Aynekko 14-11-2021 в 11:59:

Не, тоже не хотит. И моделька тогда тоже не крутится, что интересно. Только если просто angles менять

Добавлено 14-11-2021 в 14:59:

Все, нашел. В R_AddEntity нашел, где трансформация браша происходит.

C++ Source Code:
if( clent->model->type == mod_brush )
  clent->hCachedMatrix = GL_CacheState( clent->origin, clent->angles );

Переставил код сюда перед заданием матрицы. Все отлично работает. Спасибо, что откликнулся

__________________
Мой мод на Xash


Отправлено Chyvachok 23-11-2021 в 14:51:

Интересно, а как на клиенте сдвинуть счетчик патронов? Пока не могу найти где. А то я когда добавлял вторичную обойму для Акимбо-Подствола, он стал шире, и иконка патронов уехала за экран.

Добавлено 23-11-2021 в 15:51:

И вопрос по R_StreakSplash, как в нем указывается цвет? Там color не rgb, а просто одно число.


Отправлено Ku2zoff 23-11-2021 в 15:13:

Цитата:
Chyvachok писал:
color не rgb, а просто одно число

Скорее всего, цвет берётся из палитры. Как у всех партиклей. Открывай palette.lmp в wally и смотри индексы цветов.
Цитата:
Chyvachok писал:
как на клиенте сдвинуть счетчик патронов?

У них расстояние считается от правого края экрана:
C++ Source Code:
x = ScreeinWidth - ширина спрайта - отступ.

Добавь ширину второго спрайта и ещё один отступ.


Отправлено Chyvachok 23-11-2021 в 16:30:

Ku2zoff Спасибо.

Вопрос еще по TriApi, а как сделать чтобы край эффекта луча где он начинается был полупрозрачным? А то он резко начинается, не очень красиво выглядит: https://imgur.com/a/qkA8d0V

Сам код рендера луча, из ХДМ:

code:
//----------------------------------------------------------------------------- // Purpose: Draw system to screen. // Warning: Requires texture tiling enabled in GL! //----------------------------------------------------------------------------- void CRSBeam::Render(void) { if (!gEngfuncs.pTriAPI->SpriteTexture(m_pTexture, m_iFrame)) return; Vector rt, up; AngleVectors(g_vecViewAngles, NULL, rt, up); gEngfuncs.pTriAPI->RenderMode(m_iRenderMode); //gEngfuncs.pTriAPI->Color4ub(m_color.r, m_color.g, m_color.b, 255);//(unsigned char)(m_fBrightness*255.0f)); gEngfuncs.pTriAPI->Color4f(m_fColorCurrent[0],m_fColorCurrent[1],m_fColorCurrent[2],1.0f);// HL m_fColorCurrent[3]);// XDM3038c gEngfuncs.pTriAPI->Brightness(GetRenderBrightness()); gEngfuncs.pTriAPI->CullFace(TRI_NONE); gEngfuncs.pTriAPI->Begin(TRI_QUADS); gEngfuncs.pTriAPI->TexCoord2f(0.0, 0.0); gEngfuncs.pTriAPI->Vertex3fv(m_vecOrigin + rt*m_fScale); gEngfuncs.pTriAPI->TexCoord2f(1.0, 0.0); gEngfuncs.pTriAPI->Vertex3fv(m_vecOrigin - rt*m_fScale); gEngfuncs.pTriAPI->TexCoord2f(1.0, m_fTextureTile); gEngfuncs.pTriAPI->Vertex3fv(m_vEnd - rt*m_fScale); gEngfuncs.pTriAPI->TexCoord2f(0.0, m_fTextureTile); gEngfuncs.pTriAPI->Vertex3fv(m_vEnd + rt*m_fScale); gEngfuncs.pTriAPI->TexCoord2f(0.0, 0.0); gEngfuncs.pTriAPI->Vertex3fv(m_vecOrigin + up*m_fScale); gEngfuncs.pTriAPI->TexCoord2f(1.0, 0.0); gEngfuncs.pTriAPI->Vertex3fv(m_vecOrigin - up*m_fScale); gEngfuncs.pTriAPI->TexCoord2f(1.0, m_fTextureTile); gEngfuncs.pTriAPI->Vertex3fv(m_vEnd - up*m_fScale); gEngfuncs.pTriAPI->TexCoord2f(0.0, m_fTextureTile); gEngfuncs.pTriAPI->Vertex3fv(m_vEnd + up*m_fScale); gEngfuncs.pTriAPI->End(); //gEngfuncs.pTriAPI->RenderMode(kRenderNormal); }


Добавлено 23-11-2021 в 17:30:

Жаль что я кодер никакой, вот это бы как-то накодить, чтобы края спрайтов сглаживались когда в стену упираются как тут: http://www.ogse.ru/gallery/13.jpg


Отправлено Дядя Миша 23-11-2021 в 16:40:

Chyvachok софт-партикли делаются через шейдеры
Но твоя идея тоже интересная.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 23-11-2021 в 16:59:

Мне бы хотя бы начало лучика мягким сделать, идея есть, грубо говоря вместо одного 2 луча нарисовать, один начальный короткий отрезок, с прозрачностью 0 в начале луча, и непрозрачный в конце, и дальше как этот отрезок заканчивается просто нарисовать дальше второй луч, полностью непрозрачный, но вот как это закодить то, в этом pTriAPI я вообще не очень шарю в тех же координатах для вертексов, да и вообще с этими векторами наверное больше всего геморроя, я еле смог заставить на клиенте спавнить в эвенте оружия R_Sprite_Trail чтобы они корректно спавнились, тоже возня с векторами была.


Отправлено [CFR] B@N@N 23-11-2021 в 18:39:

Цитата:
Chyvachok писал:
Requires texture tiling enabled


Из надписи следует что у тебя там тайлинг текстуры.
Лучи они из отрезков коротких делаются и я предпологаю что надо сделать какой то шаг по брайтнесу - скажем, первые 10 кусков луча повышать прозрачность от 0 до 255 с шагом в 25. Думаю будет красиво


Дядя Миша
Шейдеров в хл нету и откуда их человек возьмёт если пишет что не кодер? Это не каждому под силу


Отправлено Дядя Миша 24-11-2021 в 06:01:

Я просто вспомнил как делал в ксаш-моде программный экспоненциальный туманчег партиклям
Там же рядом можно было замутить и повертексные софт-партикли через POINT_CONTENTS. Фишка в том, что в халфе это *реально* будет работать.
И безо всяких шейдеров. Так что идея и правда интересная.
Да вон, хотя бы Кутузов мог заняться.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено [CFR] B@N@N 24-11-2021 в 11:54:

Дядя Миша

Софт партикли требуют ditect X 11 и старше. Не?


Отправлено Дядя Миша 24-11-2021 в 18:12:

Цитата:
[CFR] B@N@N писал:
Софт партикли требуют ditect X 11 и старше. Не?

С точки зрения маркетологов Microsoft - безусловно

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 24-11-2021 в 18:28:

Цитата:
[CFR] B@N@N писал:
Софт партикли требуют ditect X 11 и старше. Не?

был тут разговор что на винтукее они должны запускаться.


Отправлено FreeSlave 04-12-2021 в 12:10:

Можно ли как-то заставить построитель нодов коннектить ноды находящиеся по обе стороны от двери?



Из-за отсутствия связи монстры часто тупят на проходах.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 04-12-2021 в 12:23:

Цитата:
FreeSlave писал:
Можно ли как-то заставить построитель нодов коннектить ноды находящиеся по обе стороны от двери?

Может проход слишком узкий? Попробуй сделать пошире. У меня нормально коннектится всегда.

__________________
Мой мод на Xash


Отправлено FreeSlave 04-12-2021 в 12:46:

Цитата:
Aynekko писал:
Может проход слишком узкий? Попробуй сделать пошире.


Не, никак не помогает. Если что, дверь изначально закрыта (как правая на скрине). Связь в таком случае не появляется. А вот если поставить дверям Starts open, то связь строится. Можно конечно закрывать двери после построения нодграфа, но не хотелось бы городить мапперские хаки.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 04-12-2021 в 13:26:

В CGraph :: HandleLinkEnt есть код, связанный с этим

C++ Source Code:
if ( FClassnameIs( pevLinkEnt, "func_door" ) || FClassnameIs( pevLinkEnt, "func_door_rotating" ) )

Я сначала думал, что сам что-то сломал, потому что был абсолютно уверен, что граф строился через любые двери. Раз у тебя такое, то видимо нет.
Я не стал особо разбираться с этим и поставил return TRUE для этого условия и граф стал сразу строиться через все двери. Поглядев это условие, я понял, что мне оно в принципе и не нужно в моде.
В общем, копай в этом условии. Может нужно для построения графа сделать какое-то исключение.

Добавлено 04-12-2021 в 16:26:

Сделал так:
C++ Source Code:
1
if ( FClassnameIs( pevLinkEnt, "func_door" ) || FClassnameIs( pevLinkEnt, "func_door_rotating" ) )
2
{// ent is a door.
3
if( WorldGraph.BuildingRoute )
4
  return TRUE;
5
 
6
CBaseEntity *pDoor = ( CBaseEntity::Instance( pevLinkEnt ) );
7
 
8
if ( ( pevLinkEnt->spawnflags & SF_DOOR_USE_ONLY ) )
9
{// door is use only.
10
..........
11
..........

WorldGraph.BuildingRoute задал как true в начале CTestHull :: BuildNodeGraph и выключил его в конце там же. Заодно и код вернул на место и все генерируется.

__________________
Мой мод на Xash


Отправлено FreeSlave 04-12-2021 в 20:30:

Aynekko, спасибо. Но саму структуру WorldGraph я бы не советовал трогать (ну или не забудь перегенерировать графы с нуля), лучше уж отдельную глобальную переменную.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 04-12-2021 в 22:17:

В этом случае там ничего важного и не трогается, этот новый бул ставится true только после начала генерации вейпоинта, если его нет, и false при завершении операции. Может там уже и есть даже подобный бул, я просто решил завести новый как раз чтобы ничего не трогать. В любом случае, графы еще будут миллион раз переделаны, т.к. мод в глубокой разработке

__________________
Мой мод на Xash


Отправлено FreeSlave 05-12-2021 в 11:28:

Aynekko, я про то, что структура графа читается и сохраняется в файл напрямую.
Я как-то тоже добавлял в CGraph переменную, потом у меня монстры где-то то ли невалидный вектор получали, то ли ещё что, и кружились вокруг своей оси, когда хотели куда-либо пойти

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 05-12-2021 в 12:16:

Цитата:
FreeSlave писал:
потом у меня монстры где-то то ли невалидный вектор получали, то ли ещё что, и кружились вокруг своей оси

Надо вносить изменения не в код графа, а в код навигации монстров. Хотя бы сделать проверку на присутствие врагов рядом с целевой нодой, чтобы она скипалась. Как раз над этим работаю. Потому что меня выбесило, когда к барнику вплотную подходит зомбарь, барник убегает. Но убегает не всегда к той ноде, к которой логичнее. Может проигнорить ноду, возле которой никого нет, и побежать к ноде, возле которой три зомбаря.

Добавлено 05-12-2021 в 19:16:

Цитата:
FreeSlave писал:
Можно ли как-то заставить построитель нодов коннектить ноды находящиеся по обе стороны от двери?

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


Отправлено FreeSlave 05-12-2021 в 12:24:

Цитата:
Ku2zoff писал:
Монстры должны нормально ходить через двери.

Это как повезет. Может встать так, что с безнодовым алгоритмом затупит.

Цитата:
Ku2zoff писал:
это где такая визуализация связей сделана?

impulse 197
В обычной халфе есть.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 05-12-2021 в 12:47:

Стоп. Проверил обычную халфу, в ней так и показываются связи. Только не на всех картах их почему-то видно.

Добавлено 05-12-2021 в 19:47:

Нашёл статью о нодах на TWHL. Цитата:

Цитата:
As mentioned before, nodes will only create a link where there is a visual line of sight between two nodes. Luckily, it ignores movable brush entities, such as func_doors, so you can place this door in between the nodes and there still will be a link.

То есть, связь через двери должна создаваться.


Отправлено Aynekko 05-12-2021 в 12:49:

Цитата:
FreeSlave писал:
Aynekko, я про то, что структура графа читается и сохраняется в файл напрямую.

Да, вероятно это может привести к такому. Ну в моем случае не беда.
Цитата:
Ku2zoff писал:
Как раз над этим работаю.

Кстати, пока вчера тестировал двери, обнаружил еще вот что. Есть две двери. Одна залочена мастером и не может быть открыта. Вторая открыта. Обе двери ведут в один и тот же открытый коридор. Ноды везде построены. Я юзаю барника и улетаю ноклипом сквозь дверь с мастером. Итог: барник упирается в дверь с мастером и спамит в консоль "нимагу идти". Вот бы сделать, чтобы этот путь забраковался и он стал искать обходной путь. Что-то вчера копался с этими нодами, но так и не вкурил, как это реализовать.

__________________
Мой мод на Xash


Отправлено FreeSlave 05-12-2021 в 16:03:

Я поподробнее посмотрел код реакции монстров на двери и он вообще довольно опасный.

Например:

HandleLinkEnt возвращает TRUE если дверь уже открыта и помечена как Toggle - https://github.com/ValveSoftware/ha.../nodes.cpp#L263
Что в свою очередь приводит к тому, что вызывается OpenDoorAndWait - https://github.com/ValveSoftware/ha...sters.cpp#L1492
Там мы видим, что дверь "юзается" с USE_ON - https://github.com/ValveSoftware/ha...sters.cpp#L1412
Однако двери в HL никак не обрабатывают USE_TYPE и воспринимают всё как Toggle, что приводит к тому, что дверь может наоборот закрыться.

Собственно, я когда-то давно наблюдал такое явление на широких дверях с флагом Toggle на опфоровских dll-ках. Солдаты, пробегая под ранее открытыми воротами, закрывали их. И Monsters Can't никак не помогал, ибо проверка на него в коде находится позже. Думаю, в HL такое тоже можно повторить, но там больше двух союзников за собой не утащишь, так что проверять сложнее.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 05-12-2021 в 16:11:

Цитата:
FreeSlave писал:
Солдаты, пробегая под ранее открытыми воротами, закрывали их.

Такое сплошь и рядом. Даже у себя видел: есть двойные двери, довольно узкие. Так вот они их юзали-юзали, да так и не выюзали, и тупили там. С дверями у монстров вообще отношения особые, особенно с rotating.
Чтобы воспринималось все как надо, нужна у двери галка on/off mode, но вроде бы как в халфе такого нет, только спирит и ксашмод (? могу ошибаться).
Нужно доделать этот момент.

__________________
Мой мод на Xash


Отправлено FreeSlave 05-12-2021 в 16:29:

Цитата:
Aynekko писал:
нужна у двери галка on/off mode


Ты имеешь в виду правильная реакция на use_type? В Sven Co-op такое есть, называется Obey Trigger Mode https://sites.google.com/site/svenm...guide/func_door
Я у себя тоже её реализовал, но по умолчанию этот параметр у дверей не выставлен, для совместимости.

Цитата:
Aynekko писал:
Такое сплошь и рядом.

Монстры так могут игрока закрыть Да и вообще негоже игнорировать Monster Can't

__________________
I'm on github
I'm on opendesktop.org


Отправлено FreeSlave 05-12-2021 в 21:04:

Ещё заметил, что связи не строятся через func_monsterclip. Пока не нашёл, как чинить. У кого-нибудь есть мысли на этот счёт?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 05-12-2021 в 21:29:

Цитата:
FreeSlave писал:
Ещё заметил, что связи не строятся через func_monsterclip

Монстер клип для того и придуман, чёб монстры сквозь него не ходили
Он же неотключаемый вроде.

Добавлено 06-12-2021 в 00:29:

Но я подскажу в чём тут дело - во флаге FL_MONSTERCLIP, который учитывает трасса. Т.е. CTestHull должен иметь тоже этот флаг, чёб монстерклипы были проходимыми.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 05-12-2021 в 23:20:

Цитата:
Дядя Миша писал:
Монстер клип для того и придуман, чёб монстры сквозь него не ходили

Так не все, а только те, что с флагом Monsterclip.

Цитата:
Дядя Миша писал:
Он же неотключаемый вроде.

Его можно удалять

Цитата:
Дядя Миша писал:
Но я подскажу в чём тут дело - во флаге FL_MONSTERCLIP, который учитывает трасса. Т.е. CTestHull должен иметь тоже этот флаг, чёб монстерклипы были проходимыми.

Я тоже об этом подумал, и добавлял FL_MONSTERCLIP в CTestHull::Spawn, но это не помогло.
Ну и в HandleLinkEnt добавил ветку, учитывающую func_monsterclip и возвращающую на него успех.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Crystallize 06-12-2021 в 01:35:

Цитата:
Ku2zoff писал:
То есть, связь через двери должна создаваться.

Может позже поломали?


Отправлено Ku2zoff 06-12-2021 в 01:38:

Цитата:
Crystallize писал:
Может позже поломали?

Нет. Код нодеграфа не изменялся с самого релиза халфы.
Дело вот в чём:
Цитата:
FreeSlave писал:
Я поподробнее посмотрел код реакции монстров на двери и он вообще довольно опасный.

Тут либо кодить для своего мода, либо копипастить свойства дверей с халфовских карт.


Отправлено Дядя Миша 06-12-2021 в 06:19:

Цитата:
FreeSlave писал:
Я тоже об этом подумал, и добавлял FL_MONSTERCLIP в CTestHull::Spawn, но это не помогло.


Не помогло, потому что UTIL_TraceLine не использует флажки FL_MONSTERCLIP. Тебе нужно использовать UTIL_TraceHull для построения нодов с нулевым хуллом. Тогда сработает.

Добавлено 06-12-2021 в 09:19:

И FL_MONSTERCLIP добавлять в g_pBodyQueHead, а не в CTestHull.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 06-12-2021 в 11:52:

Такой вопрос, никто не делал луч моделькой? Типа как у Шафта в 1 Квейке? Я смотрел код dmc, как я понял там луч средствами ХЛ рисуется, через R_BeamPoints.


Отправлено Ku2zoff 06-12-2021 в 12:38:

Цитата:
Chyvachok писал:
никто не делал луч моделькой?

Зачем? В первой кваке не было спрайтов, ЕМНИП, только партикли. Отсюда и модельки для огня, для молний шамблиров и шафта, плевков демонов. Во второй кваке то же самое - модельки и партикли. В халфе одно нехорошее ограничение на спрайтовые эффекты - лимит темпэнтить. Можно обойти, используя три апи. Импотенциально можно накодить свою рисовалку спрайтов, в первой паранойе вроде бы что-то такое имеется.


Отправлено Дядя Миша 06-12-2021 в 17:45:

Цитата:
Ku2zoff писал:
В первой кваке не было спрайтов, ЕМНИП, только партикли

открой папку sprites и не позорься.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 06-12-2021 в 18:04:

Цитата:
Дядя Миша писал:
Не помогло, потому что UTIL_TraceLine не использует флажки FL_MONSTERCLIP. Тебе нужно использовать UTIL_TraceHull для построения нодов с нулевым хуллом. Тогда сработает.

Добавлено сегодня в 09:19:

И FL_MONSTERCLIP добавлять в g_pBodyQueHead, а не в CTestHull.


Это в LinkVisibleNodes? Заменял там два UTIL_TraceLine на UTIL_TraceHull c point_hull и выставлял FL_MONSTERCLIP для g_pBodyQueueHead перед этим. По-прежнему не генерится.

Вот изменения https://github.com/FreeSlave/hlsdk-...7b9b74024066762

Карта для теста в аттаче

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 06-12-2021 в 18:40:

Ну тады ой Но всё равно надо копать в этом направлении.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 07-12-2021 в 01:21:

Копать скорее надо в направлении Walk Rejection. Я создал карту-коробку с двумя нодами. Без препятствий между ними связь есть. Если поставить func_monsterclip, то связь не рисуется.

В логе

Цитата:

Walk Rejection:
-------------------------------------------------------------------------------
Node 0:

NODE_SMALL_HULL step 112
-------------------------------------------------------------------------------
Node 1:

NODE_SMALL_HULL step 80


Т.е. это WALK_MOVE отбивает связи.

Взглянул повнимательнее на func_monsterclip. Он вызывает CFuncWall:Spawn, в котором выставляется FL_WORLDBRUSH. Если в CFuncMonsterClip::Spawn его убрать, то связь есть.
А теперь вопрос: безопасно ли убирать FL_WORLDBRUSH у func_monsterclip? Возможно разрабы и вовсе не подразумевали, что у него такой флаг должен быть, ведь выставляется он через Spawn родительского класса. Я потестил и работает оно как ожидается - монстров с Monsterclip не пропускает, а без него - пропускает.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 07-12-2021 в 06:47:

Цитата:
FreeSlave писал:
А теперь вопрос: безопасно ли убирать FL_WORLDBRUSH у func_monsterclip?

FL_WORLDBRUSH - это хинт-подсказка, что по такому брашу можно смело ходить, чтоб монстры не тупили. В то время как монстерклип вертикальный и по нему обычно никто не ходит. Так что да, убирай смело.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 07-12-2021 в 11:42:

Такой вопрос, а что делает таких монстров как барнаклы и турели не разрываемыми на куски? У Турелей тчинк TurretDeath вместо killed используется. Барнаклов смог сделать, но опять же - их разрывает только если их взорвать сразу, уже убитого нельзя на ошметки разнести, а у турелей, попытка моя как то их сделать разбиваемыми на куски сделала их не убиваемыми.


Отправлено Ku2zoff 07-12-2021 в 12:05:

Chyvachok у барнакла своя функция Killed, из неё не вызывается GibMonster. То же самое с турелями.


Отправлено Chyvachok 07-12-2021 в 12:28:

Ku2zoff У барнакла может быть дело в этих строках в Killed?

pev->solid = SOLID_NOT;
pev->takedamage = DAMAGE_NO;

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


Отправлено Ku2zoff 07-12-2021 в 12:31:

Это влияет да. А ещё вот:

C++ Source Code:
1
if ( HasMemory( bits_MEMORY_KILLED ) )
2
{
3
  if ( ShouldGibMonster( iGib ) )
4
    CallGibMonster();
5
  return;
6
}
Надо вызывать GibMonster из Killed.


Отправлено Chyvachok 07-12-2021 в 12:37:

Насчет этих двух строк, если убрать pev->solid = SOLID_NOT; жертва остается висеть в барнакле, но его зато можно разорвать из instant hit оружия, если убрать pev->takedamage = DAMAGE_NO; но оставить pev->solid = SOLID_NOT; можно взорвать, но не разорвать instant hit оружием. И еще вот, анимация смерти заново начинает проигрыватся если барнакл опять получает урон после смерти, пока код так выглядит:

code:
void CBarnacle :: Killed( entvars_t *pevAttacker, int iGib ) { CBaseMonster *pVictim; pev->solid = SOLID_NOT; pev->takedamage = DAMAGE_NO; if ( m_hEnemy != NULL ) { pVictim = m_hEnemy->MyMonsterPointer(); if ( pVictim ) { pVictim->BarnacleVictimReleased(); } } // CGib::SpawnRandomGibs( pev, 4, 1 ); switch ( RANDOM_LONG ( 0, 1 ) ) { case 0: EMIT_SOUND( ENT(pev), CHAN_WEAPON, "barnacle/bcl_die1.wav", 1, ATTN_NORM ); break; case 1: EMIT_SOUND( ENT(pev), CHAN_WEAPON, "barnacle/bcl_die3.wav", 1, ATTN_NORM ); break; } SetActivity ( ACT_DIESIMPLE ); SetBoneController( 0, 0 ); StudioFrameAdvance( 0.1 ); if ( ShouldGibMonster( iGib ) ) { GibMonster(); return; } pev->nextthink = gpGlobals->time + 0.1; SetThink ( &CBarnacle::WaitTillDead ); }


Добавлено 07-12-2021 в 14:37:

Ku2zoff в CBaseMonster::Killed почему то аж 2 вызова ShouldGibMonster


Отправлено Ku2zoff 07-12-2021 в 12:39:

CBarnacle :: WaitTillDead тут возвращай ему солидность. Может подходящее место. А вообще, чтобы жертва не застревала, можно воспользоваться груптрейсом.


Отправлено Chyvachok 07-12-2021 в 12:50:

Ku2zoff Я не могу найти какая солидность у трупов, они получают урон из оружия, и в то же время сквозь них можно пройти.

Добавлено 07-12-2021 в 14:44:

Цитата:
Ku2zoff писал:
можно воспользоваться груптрейсом.


Вот только как им пользоваться еще.

Добавлено 07-12-2021 в 14:50:

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


Отправлено Ku2zoff 07-12-2021 в 14:38:

Цитата:
Chyvachok писал:
Вот только как им пользоваться еще.

Ты же пользовался уже: http://hlfx.ru/forum/showthread.php...9043#post169043


Отправлено Chyvachok 07-12-2021 в 15:57:

Ku2zoff Я не совсем понял как они работают то, groupinfo нужно одинаковый и барнаклу и жертве ставить? И ничего что потом у жертвы останется свой после смерти барнакла?

Вроде разобрался влепил pev->groupinfo = 1; и вроде можно как и урон Барнаклу дальше после смерти наносить, и жертва и игрок сквозь него проходят. Вот кому надо:

code:
void CBarnacle :: Killed( entvars_t *pevAttacker, int iGib ) { CBaseMonster *pVictim; //pev->solid = SOLID_NOT; //pev->takedamage = DAMAGE_NO; pev->groupinfo = 1; if ( !HasMemory( bits_MEMORY_KILLED ) ) { Remember( bits_MEMORY_KILLED ); if ( m_hEnemy != NULL ) { pVictim = m_hEnemy->MyMonsterPointer(); if ( pVictim ) { pVictim->BarnacleVictimReleased(); } } if ( ShouldGibMonster( iGib ) ) { GibMonster(); return; } switch ( RANDOM_LONG ( 0, 1 ) ) { case 0: EMIT_SOUND( ENT(pev), CHAN_WEAPON, "barnacle/bcl_die1.wav", 1, ATTN_NORM ); break; case 1: EMIT_SOUND( ENT(pev), CHAN_WEAPON, "barnacle/bcl_die3.wav", 1, ATTN_NORM ); break; } SetActivity ( ACT_DIESIMPLE ); SetBoneController( 0, 0 ); StudioFrameAdvance( 0.1 ); pev->nextthink = gpGlobals->time + 0.1; SetThink ( &CBarnacle::WaitTillDead ); } else { if ( ShouldGibMonster( iGib ) ) { GibMonster(); return; } } }


Добавлено 07-12-2021 в 17:57:

С турелями блин еще моделить надо, настенным чтобы основа после убийства оставалась на стене висеть, а напольным просто куски, а на это больше всего времени уходит (

Кстати сделал боди отстреленных конечностей для ХД вортигонта: https://files.gamebanana.com/bitpit/islave.rar


Отправлено Ku2zoff 07-12-2021 в 16:23:

Цитата:
Chyvachok писал:
//pev->solid = SOLID_NOT;
//pev->takedamage = DAMAGE_NO;
pev->groupinfo = 1;

А кто будет вызывать UTIL_SetGroupTrace и UTIL_UnsetGroupTrace?
C++ Source Code:
pev->groupinfo = 1;
pVictim->pev->groupinfo = 1;
 
UTIL_SetGroupTrace(pev->groupinfo, GROUP_OP_NAND);
UTIL_SetGroupTrace(pVictim->pev->groupinfo, GROUP_OP_NAND);

А потом, чтобы вернуть коллизию:
C++ Source Code:
UTIL_SetGroupTrace(pev->groupinfo, GROUP_OP_AND);
UTIL_SetGroupTrace(pVictim->pev->groupinfo, GROUP_OP_AND);

Как-то так. У меня таким макаром игроки переставали коллайдить с func_wall и друг с другом, когда ползают. Потом я написал код лучше. Не помню, где я вычитал, что вызывать надо именно так. Посмотри сорцы ксашдвижка, из функций должно стать ясно, что они делают.

Добавлено 07-12-2021 в 23:23:

Цитата:
Chyvachok писал:
сделал боди отстреленных конечностей для ХД вортигонта

Ух ты, весьма кстати. Я у себя заюзаю, только изменю немного. Свои гибсы для каждого монстра я делал ещё очень давно, код простой. А вот модели делать долго, хоть и не очень сложно.


Отправлено Chyvachok 07-12-2021 в 16:52:

Цитата:
Ku2zoff писал:
Ух ты, весьма кстати. Я у себя заюзаю, только изменю немного. Свои гибсы для каждого монстра я делал ещё очень давно, код простой. А вот модели делать долго, хоть и не очень сложно.


Решил поменять ЛД модели из Брутала на ХД с классическим стилем по тихоньку. Кстати не знаешь есть ли где-то модель ХД Барника но с анимациями под автомат-дробовик и с пинком? ЛД-шный скелет насколько я помню отличается, врядли анимации из БХЛ встанут.

Насчет коллизии, мне наоборот надо чтобы барнакл уже не с чем не колидил, как и трупы от монстров, я просто не знаю, а когда и как вернуть коллизию жертве, если барнакл уже может быть давно взорван на куски и удален? Я поэтому не хочу жертву то трогать, этого pev->groupinfo = 1; вроде достаточно с головой, проверил - урон по барнаклу от оружия проходит, жертва выпадает, игрок сам сквозь труп тоже проходит.

Будет желание моделить, по хорошему для Барнакла можно как я с Ксеновкими Деревьями сделал, и это же хочу с потолочными турелями сделать, не удалять монстра гибом, а спавнить куски, и менять боди на уничтоженный, в общем основа чтобы оставалась, у дерева корни, у турели люк откуда она выдвигается, у барнакла просто кусок мяса оставить свисающий.

Добавлено 07-12-2021 в 18:52:

Цитата:
Ku2zoff писал:
Свои гибсы для каждого монстра я делал ещё очень давно, код простой.


Я вот такое наваял, не знаю насколько грамотно. Не так как в БХЛ но вроде лучше чес в Инвазионе (там нельзя больше одной конечности отстреливать, но и нельзя как в БХЛ сделать так чтобы НПС живой оставался, к примеру как зомби с отстреленной рукой, не придумал как, и чтобы оно еще нормально все работало.

code:
//Код Слейва но чисто отвечающий за отстрел конечностей. #define TORSOGIB_DAMAGE (DMG_BUCKSHOT|DMG_ENERGYBEAM|DMG_CRUSH|DMG_MORTAR|DMG_BLAST) #define HEAD_GROUP 1 #define HEAD_INTACT 0 #define HEAD_BEHEADED 1 #define LEFTARM_GROUP 2 #define RIGHTARM_GROUP 3 #define LEFTLEG_GROUP 4 #define RIGHTLEG_GROUP 5 #define MIDDLEARM_GROUP 6 #define LIMB_INTACT 0 #define LIMB_DAMAGED 1 #define NO_TORSO_LEFTLEG_GROUP 1 #define NO_TORSO_RIGHTLEG_GROUP 2 #define HBOX_CHEST 2 #define HBOX_STOMACH 3 #define HBOX_ARM_R 5 #define HBOX_ARM_L 4 #define HBOX_LEG_R 7 #define HBOX_LEG_L 6 #define HBOX_HEAD 1 #define HBOX_ARM_M 8 #define AGIBS_ISLAVE_TORSO 30 #define AGIBS_ISLAVE_PELVIS 36 #define AGIBS_ISLAVE_HEAD 29 #define AGIBS_ISLAVE_ARM_L 31 #define AGIBS_ISLAVE_ARM_R 32 #define AGIBS_ISLAVE_LEG_L 33 #define AGIBS_ISLAVE_LEG_R 34 #define AGIBS_ISLAVE_ARM_M 35 class CISlave : public CSquadMonster { int m_iNoTorso, m_iNoHead, m_iNoLeftArm, m_iNoRightArm, m_iNoMiddleArm, m_iNoLeftLeg, m_iNoRightLeg; } void CISlave::TraceAttack( entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType) { if (bitsDamageType & DMG_SHOCK) return; CSquadMonster::TraceAttack( pevAttacker, flDamage, vecDir, ptr, bitsDamageType ); if ( gMultiDamage.pEntity != this ) return; if (pev->health - ( gMultiDamage.amount ) <= 0) { Vector new_origin = pev->origin, new_angle; if ( (ptr->iHitgroup == HBOX_CHEST/* || ptr->iHitgroup == HBOX_STOMACH*/) && m_iNoTorso == 0 && bitsDamageType & TORSOGIB_DAMAGE) { EMIT_SOUND(ENT(pev), CHAN_BODY, "common/amputation_heavy.wav", 1, ATTN_NORM); CGib::SpawnSpecificGibs( pev, 1, "models/agibs.mdl", AGIBS_ISLAVE_TORSO, 0 ); CGib::SpawnStickyGibs( pev, RANDOM_LONG(2,3), "models/stickygib.mdl", 2, 4 ); //С торсом рубим и руки если они есть if (m_iNoRightArm == 0){ GetBonePosition( LookupBone("Bip01 R UpperArm"), new_origin, new_angle ); MakeGib ( AGIBS_ISLAVE_ARM_R, pevAttacker, new_origin); } if (m_iNoLeftArm == 0){ GetBonePosition( LookupBone("Bip01 L UpperArm"), new_origin, new_angle ); MakeGib ( AGIBS_ISLAVE_ARM_L, pevAttacker, new_origin); } if (m_iNoHead == 0){ GetBonePosition( LookupBone("Bip01 Head"), new_origin, new_angle ); MakeGib ( AGIBS_ISLAVE_HEAD, pevAttacker, new_origin); } pev->body = 0; SET_MODEL(ENT(pev), "models/islave_h.mdl"); //У модели без торса другой порядок бодигруп и их кол-во поэтому и заново указываем if (m_iNoLeftLeg == 1) SetBodygroup( 1, LIMB_DAMAGED); if (m_iNoRightLeg == 1) SetBodygroup( 2, LIMB_DAMAGED); m_iNoTorso = 1; m_iNoRightArm = 1; m_iNoLeftArm = 1; m_iNoHead = 1; } switch ( ptr->iHitgroup ) { case HBOX_ARM_R: if (m_iNoRightArm == 0){ EMIT_SOUND(ENT(pev), CHAN_ITEM, "common/amputation_light.wav", 1, ATTN_NORM); GetBonePosition( LookupBone("Bip01 R UpperArm"), new_origin, new_angle ); MakeGib ( AGIBS_ISLAVE_ARM_R, pevAttacker, new_origin); SetBodygroup( RIGHTARM_GROUP, LIMB_DAMAGED); m_iNoRightArm = 1; } break; case HBOX_ARM_L: if (m_iNoLeftArm == 0){ EMIT_SOUND(ENT(pev), CHAN_ITEM, "common/amputation_light.wav", 1, ATTN_NORM); GetBonePosition( LookupBone("Bip01 L UpperArm"), new_origin, new_angle ); MakeGib ( AGIBS_ISLAVE_ARM_L, pevAttacker, new_origin); SetBodygroup( LEFTARM_GROUP, LIMB_DAMAGED); m_iNoLeftArm = 1; } break; case HBOX_LEG_R: if (m_iNoRightLeg == 0){ EMIT_SOUND(ENT(pev), CHAN_ITEM, "common/amputation_light.wav", 1, ATTN_NORM); GetBonePosition( LookupBone("Bip01 R Calf"), new_origin, new_angle ); MakeGib ( AGIBS_ISLAVE_LEG_R, pevAttacker, new_origin); if (m_iNoTorso == 0) SetBodygroup( RIGHTLEG_GROUP, LIMB_DAMAGED); else SetBodygroup( 2, LIMB_DAMAGED); m_iNoRightLeg = 1; } break; case HBOX_LEG_L: if (m_iNoLeftLeg == 0){ EMIT_SOUND(ENT(pev), CHAN_ITEM, "common/amputation_light.wav", 1, ATTN_NORM); GetBonePosition( LookupBone("Bip01 L Calf"), new_origin, new_angle ); MakeGib ( AGIBS_ISLAVE_LEG_L, pevAttacker, new_origin); if (m_iNoTorso == 0) SetBodygroup( LEFTLEG_GROUP, LIMB_DAMAGED); else SetBodygroup( 1, LIMB_DAMAGED); m_iNoLeftLeg = 1; } break; case HBOX_ARM_M: if (m_iNoLeftArm == 0){ EMIT_SOUND(ENT(pev), CHAN_ITEM, "common/amputation_light.wav", 1, ATTN_NORM); GetBonePosition( LookupBone("Bone05"), new_origin, new_angle ); MakeGib ( AGIBS_ISLAVE_ARM_M, pevAttacker, new_origin); SetBodygroup( MIDDLEARM_GROUP, LIMB_DAMAGED); m_iNoMiddleArm = 1; } break; case HBOX_HEAD: if (m_iNoHead == 0){ EMIT_SOUND(ENT(pev), CHAN_BODY, "common/amputation_heavy.wav", 1, ATTN_NORM); GetBonePosition( LookupBone("Bip01 Head"), new_origin, new_angle ); MakeGib ( AGIBS_ISLAVE_HEAD, pevAttacker, new_origin); //Crab vezde odinakoviy SetBodygroup( HEAD_GROUP, HEAD_BEHEADED); m_iNoHead = 1; } break; } } } void CISlave::GibMonster ( void ) { EMIT_SOUND(ENT(pev), CHAN_WEAPON, "common/bodysplat.wav", 1, ATTN_NORM); if (m_iNoTorso == 0){ CGib::SpawnSpecificGibs( pev, 1, "models/agibs.mdl", AGIBS_ISLAVE_TORSO, 0 ); //спавнит куски, но боди идут не рандомно, а по порядку CGib::SpawnStickyGibs( pev, RANDOM_LONG(2,3), "models/stickygib.mdl", 2, 4 ); //починеный stickygibs, вроде уже не разу не висит в воздухе } if ( m_iNoRightArm == 0 ) CGib::SpawnSpecificGibs( pev, 1, "models/agibs.mdl", AGIBS_ISLAVE_ARM_R, 0 ); if ( m_iNoLeftArm == 0 ) CGib::SpawnSpecificGibs( pev, 1, "models/agibs.mdl", AGIBS_ISLAVE_ARM_L, 0 ); if ( m_iNoMiddleArm == 0 ) CGib::SpawnSpecificGibs( pev, 1, "models/agibs.mdl", AGIBS_ISLAVE_ARM_M, 0 ); if ( m_iNoRightLeg == 0 ) CGib::SpawnSpecificGibs( pev, 1, "models/agibs.mdl", AGIBS_ISLAVE_LEG_R, 0 ); if ( m_iNoLeftLeg == 0 ) CGib::SpawnSpecificGibs( pev, 1, "models/agibs.mdl", AGIBS_ISLAVE_LEG_L, 0 ); if (m_iNoHead == 0) CGib::SpawnSpecificGibs( pev, 1, "models/agibs.mdl", AGIBS_ISLAVE_HEAD, 0 ); CGib::SpawnSpecificGibs( pev, 1, "models/agibs.mdl", AGIBS_ISLAVE_PELVIS, 0 ); SetThink ( &CBaseMonster :: SUB_Remove ); pev->nextthink = gpGlobals->time; } //Код спавна отпределенного куска в определенном месте void CISlave :: MakeGib ( int body, entvars_t *pevAttacker, Vector vecSrc ) { CGib *pGib = GetClassPtr( (CGib *)NULL ); pGib->Spawn( "models/agibs.mdl" ); pGib->m_bloodColor = BLOOD_COLOR_YELLOW; pGib->pev->body = body; pGib->pev->skin = 0; pGib->pev->groupinfo = 1; UTIL_SetGroupTrace(pGib->pev->groupinfo, GROUP_OP_NAND); UTIL_SetGroupTrace(pev->groupinfo, GROUP_OP_NAND); pGib->pev->origin = vecSrc; //pGib->pev->velocity = ( Center() - pevAttacker->origin).Normalize() * 300; pGib->pev->velocity = Vector (RANDOM_FLOAT(-100,100), RANDOM_FLOAT(-100,100), RANDOM_FLOAT(100,200)); pGib->pev->avelocity.x = RANDOM_FLOAT( 100, 200 ); pGib->pev->avelocity.y = RANDOM_FLOAT( 100, 300 ); pGib->pev->avelocity.z = RANDOM_FLOAT( 100, 200 ); pGib->pev->solid = SOLID_TRIGGER; UTIL_SetSize( pGib->pev, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ) ); }


Отправлено Ku2zoff 07-12-2021 в 17:15:

Цитата:
Chyvachok писал:
модель ХД Барника но с анимациями под автомат-дробовик и с пинком?

Zombie Edition же. За авторством наших ребят. Я оттуда взял анимации дробовика. Правда, переделал ходьбу и бег, т.к. они там ущербные. И добавил turnleft/turnright. Попозже аттачем скину тебе smd файлы, может допилишь, чтобы было красиво. Анимки эти заточены под модели с подвижными глазами, веками и бровями от Ромки или из Decay. Так что работай с этими моделями. Потом можно вкомпилить в обычного HD барника, скелеты совместимы.
Цитата:
Chyvachok писал:
нельзя как в БХЛ сделать так чтобы НПС живой оставался, к примеру как зомби с отстреленной рукой, не придумал как, и чтобы оно еще нормально все работало.

Делаешь по аналогии с limp health у грантов: меняешь анимации в SetActivity. То есть по факту монстр жив, но активности у него другие и внешний вид тоже.

Добавлено 08-12-2021 в 00:12:

Я бы не раздувал код TraceAttack, а передавал хитгруппу сразу в функцию SpawnSpecificGib. А там уже switch case.

Добавлено 08-12-2021 в 00:15:

Кстати, такой вопрос. Кто качал Accurate SD models учёных и барников? В основе модели от Ромки, но головы очень похожи на LD версии, нет этих убогих ХДпачных рож. Хотелось бы ещё что-такое найти, чтобы бошки были высокополигональные, но смотрелись олдскульно.


Отправлено Chyvachok 07-12-2021 в 17:34:

Цитата:
Ku2zoff писал:
Я бы не раздувал код TraceAttack, а передавал хитгруппу сразу в функцию SpawnSpecificGib.


А чем это чревато? Я по лучше не придумал, но я честно особо красиво код писать и не умею.


Отправлено Ku2zoff 07-12-2021 в 19:42:

Chyvachok особо ничем, разве что удобочитаемость снижается.

Добавлено 08-12-2021 в 02:42:

Как обещал - секвенции дробовика и пинка хедкраба ногой в аттаче. Надо немножко их допилить. Для M4 секвенции можно выдрать из оригинальной модели мода Zombie Edition.


Отправлено FreeSlave 08-12-2021 в 17:01:

Цитата:
Aynekko писал:
Кстати, пока вчера тестировал двери, обнаружил еще вот что. Есть две двери. Одна залочена мастером и не может быть открыта. Вторая открыта. Обе двери ведут в один и тот же открытый коридор. Ноды везде построены. Я юзаю барника и улетаю ноклипом сквозь дверь с мастером. Итог: барник упирается в дверь с мастером и спамит в консоль "нимагу идти". Вот бы сделать, чтобы этот путь забраковался и он стал искать обходной путь. Что-то вчера копался с этими нодами, но так и не вкурил, как это реализовать.


Да, если строить сквозь все двери, есть такой баг. Я отследил его до CGraph::FindShortestPath. А виновата вот эта строчка: https://github.com/ValveSoftware/ha.../nodes.cpp#L611

Во время построения графа вызывается ComputeStaticRoutingTables, которая по окончании и ставит m_fRoutingComplete в TRUE, и любой FindShortestPath начинает идти по уже проложенному пути, не заходя в другую ветку кода, где вызывается HandleLinkEnt https://github.com/ValveSoftware/ha.../nodes.cpp#L701
Вызывается он кстати с параметром NODEGRAPH_STATIC, что похоже в какой-то мере и есть аналог нашей булевой переменной, которую мы вводим во время CTestHull::BuildNodeGraph.

FindShortestPath вызывается при построения пути по нодам для монстра в CBaseMonster::FGetNodeRoute - https://github.com/ValveSoftware/ha...sters.cpp#L2789
Что приводит к тому, что поиск пути попадает в ветку с m_fRoutingComplete, без учёта энтитей.
Кстати, из-за этого в оригинальной Халфе может затупить монстр в попытках обойти func_breakable - с NODEGRAPH_STATIC для него всегда возвращается TRUE, в результате монстр считает, что может пройти насквозь (как и в твоём случае с дверью).

Лечится это следующим способом.
Меняем сигнатуру FindShortestPath
C++ Source Code:
int		FindShortestPath ( int *piPath, int iStart, int iDest, int iHull, int afCapMask );

на
C++ Source Code:
int		FindShortestPath ( int *piPath, int iStart, int iDest, int iHull, int afCapMask, bool dynamic = false );


Заменяем
C++ Source Code:
if( m_fRoutingComplete )

на
C++ Source Code:
if( !dynamic && m_fRoutingComplete )


Заменяем
C++ Source Code:
if( !HandleLinkEnt( iCurrentNode, m_pLinkPool[m_pNodes[iCurrentNode].m_iFirstLink + i].m_pLinkEnt, afCapMask, NODEGRAPH_STATIC ) )

на
C++ Source Code:
if( !HandleLinkEnt( iCurrentNode, m_pLinkPool[m_pNodes[iCurrentNode].m_iFirstLink + i].m_pLinkEnt, afCapMask, dynamic ? NODEGRAPH_DYNAMIC : NODEGRAPH_STATIC ) )


В FGetNodeRoute вызываем WorldGraph.FindShortestPath с true в качестве нового последнего аргумента.

Что стоит иметь в виду: ветка с m_fRoutingComplete скорее всего больше вообще нигде не будет выполняться. Не знаю, хорошо ли это, и как это скажется на производительности.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 08-12-2021 в 17:58:

Цитата:
FreeSlave писал:
FindShortestPath

Вот я тоже уперся туда, а дальше залип.
Цитата:
FreeSlave писал:
по окончании и ставит m_fRoutingComplete в TRUE

Ага. Наверное, надо его использовать вместо нового условия, что я воткнул.
Цитата:
FreeSlave писал:
Лечится это следующим способом.

Я, конечно, офигел, но это реально работает. Монстряка поумнел на глазах спасибо большое. Буду тестировать.

Добавлено 08-12-2021 в 20:26:

Цитата:
Aynekko писал:
Буду тестировать.

Работает после построения нод. Перезапустил карту - опять упирается в дверь. Карту перекомпилировал и проверил еще раз, так же. Интересненько

Добавлено 08-12-2021 в 20:58:

Мой косяк. Мой BuildingRoute почему-то после перезапуска карты стал true. Где-то не учел условие. Попробую m_fRoutingComplete.

Да, отлично, можно его использовать. Ноды построились через закрытые двери и после перезапуска тоже все работает.

__________________
Мой мод на Xash


Отправлено FreeSlave 08-12-2021 в 18:06:

Цитата:
Aynekko писал:
Мой косяк. Мой BuildingRoute почему-то после перезапуска карты стал true. Где-то не учел условие. Попробую m_fRoutingComplete.


Попробуй всё-таки вынести в глобальную переменную вне класса. У тебя сэйв-рестор графа может быть поломан.
А вообще вполне возможно что дополнительная переменная не нужна и достаточно ориентироваться на NODEGRAPH_STATIC, всегда возвращая TRUE из HandleLinkEnt, вызванной с NODEGRAPH_STATIC, для дверей и func_breakable.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 08-12-2021 в 18:51:

Цитата:
FreeSlave писал:
У тебя сэйв-рестор графа может быть поломан.

После сейв-рестора у меня вообще HandleLinkEnt перестал вызываться (выставил алерт в самом начале). Если просто загружать карту, с/без графа, то все норм. Свою переменную я вообще вычистил полностью, использовал ту
C++ Source Code:
1
if ( FClassnameIs( pevLinkEnt, "func_door" ) || FClassnameIs( pevLinkEnt, "func_door_rotating" ) )
2
{// ent is a door.
3
if( !WorldGraph.m_fRoutingComplete )
4
  return TRUE;


Добавлено 08-12-2021 в 21:51:

Это условие не проходит после сейврестора, оно null становится
C++ Source Code:
// check the connection from the current node to the node we're about to mark visited and push into the queue
if ( m_pLinkPool[ m_pNodes[ iCurrentNode ].m_iFirstLink + i ].m_pLinkEnt != NULL )

__________________
Мой мод на Xash


Отправлено FreeSlave 08-12-2021 в 19:32:

Да, похоже что-то не так с FSetGraphPointers. Я у себя вижу кучу сообщений **Could not find model.
Надо подумать, куда перетащить этот вызов.

Добавлено 08-12-2021 в 22:18:

Пока что из CBasePlayer::Precache перенес в ServerActivate в client.cpp (пришлось там подключить "nodes.h").

Добавлено 08-12-2021 в 22:32:

Кстати m_pLinkEnt и в обычной халфе неправильно выставляются при сэйв-ресторе. Те же **Could not find model в консоли (выставьте значение developer 4 перед запуском карты, чтобы все сообщения видеть).
Но там баг себя наверно и не проявляет никак, ибо FindShortestPath всегда следует по ветке m_fRoutingComplete.

Да и в целом звать FSetGraphPointers в CBasePlayer::Precache неверно. Что насчёт выделенных серверов, которые запускаются без всяких игроков?
А вот почему даже в сингле энтити не находятся по имени брашевой модели - хз. Возможно при ресторе Precache на энтитях зовется ещё до загрузки последующих, поэтому всех этих брашевых энтитей как бы и нет на момент вызова Precache игрока.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 08-12-2021 в 19:34:

Цитата:
FreeSlave писал:
перенес в ServerActivate в client.cpp

Да, помогло! Сейврестор починился. Теперь, как говорится, заживем
Кстати, насчет брейкаблей, у меня пока вот такая полу-рабочая попытка. Это в AdvanceRoute. Комменты оставил на будущее, но пока идей нет.
C++ Source Code:
1
else if ( WorldGraph.HandleLinkEnt ( iSrcNode, WorldGraph.m_pLinkPool[iLink].m_pLinkEnt, m_afCapability, CGraph::NODEGRAPH_STATIC ) )
2
{
3
  entvars_t *pevLinkEnt = WorldGraph.m_pLinkPool[iLink].m_pLinkEnt;
4
 
5
  if ( (m_afCapability & bits_CAP_RANGE_ATTACK1) && FClassnameIs(pevLinkEnt, "func_breakable") && !(pevLinkEnt->spawnflags & SF_BREAK_TRIGGER_ONLY) )
6
  {
7
    //	ALERT(at_console, "breakable.\n");
8
    CBaseEntity *pBreakable = Instance( pevLinkEnt );
9
    if (pBreakable)
10
    {
11
      // UNDONE: should be treating the breakable as enemy and attack it until it breaks, and without shouting "hostiles!" too
12
      pBreakable->TakeDamage( pev, pev, 15, DMG_CLUB );
13
 
14
      // this somewhat works but sometimes he doesn't look at breakable and just fighting the air
15
      //		MakeIdealYaw( pBreakable->GetAbsOrigin() );
16
      //		SetTurnActivity();
17
      //		ChangeSchedule( GetScheduleOfType(SCHED_MELEE_ATTACK1) );
18
    }
19
  }
20
}

__________________
Мой мод на Xash


Отправлено FreeSlave 08-12-2021 в 19:56:

Aynekko, хочешь сделать, чтобы монстры сами разбивали breakable'ы на своём пути? В общем случае лучше такое не позволять. Вдруг это взрывные бочки

В идеале такое можно было бы реализовать только для специально помеченных брекаблей и по-разному для отдельных монстров. Например, вполне можно представить, что агрунт снесёт какие-нибудь коробки просто пройдя сквозь них А хуман грунты могут использовать пинок для поломки.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 08-12-2021 в 20:04:

Цитата:
FreeSlave писал:
хочешь сделать, чтобы монстры сами разбивали breakable'ы на своём пути?

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

__________________
Мой мод на Xash


Отправлено FreeSlave 08-12-2021 в 20:12:

Цитата:
Aynekko писал:
Ну да. В одном месте поставил ящик, а потом туда враги приходят, если игрок его не разбил - то будут тупить там.


В каком смысле тупить? С теми изменениями, что мы обсуждали, они должны ящики считать препятствиями и обходить.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 08-12-2021 в 20:14:

Хехех, ну так дело в том, что ящик стоит посреди коридора там никак не обойти. Почему я, собственно, и сделал это вообще.

__________________
Мой мод на Xash


Отправлено Ku2zoff 09-12-2021 в 07:58:

Цитата:
FreeSlave писал:
Я у себя вижу кучу сообщений **Could not find model.

Граф пытается после сейв/рестора прочекать брашевые энтити с моделями вида "*31", "*78", "*102", то есть субмоделями мира. Там какая-то трабла с этим, энтити не находит.
Цитата:
FreeSlave писал:
в целом звать FSetGraphPointers в CBasePlayer::Precache неверно

А, видимо они не успевают отресториться. Надо глядеть порядок вызова DispatchRestore изнутри движка, скорее всего он происходит после прекэша игрока.
Цитата:
FreeSlave писал:
А хуман грунты могут использовать пинок для поломки.

У нодов есть механизм подсказок для AI: m_sHintType. Можно добавить новый хинт "здесь ломать брейкаблю", и ноду с таким хинтом ставить перед ящиками. Во-первых, никто не подорвётся на бочке, во-вторых не будет ломать все подряд коробки, а только те, что рядом с нодой.


Отправлено Chyvachok 09-12-2021 в 14:22:

Ku2zoff еще раз насчет groupinfo, допустим, а как точно этот UTIL_SetGroupTrace работает? Чет я туплю с ним, это надо обоим сущностям ставить одинаковый groupinfo? Просто я так и не понимаю результата конечного. Если той же жертве Барнакла поменять groupinfo это не сломает физику жертве? Я без этого обошелся, оставил pGib->pev->groupinfo = 1; только у Барнакла, без UTIL_SetGroupTrace, это по сути дало то что мне нужно было - барнакл ни с чем не колидит, его труп не мешает проходу и жертва выпадает, и в него регистрируется урон из оружия.

В коде гибсов у меня такой код, я хочу чтобы гибсы с друг другом не колидили, бывает что у них одинаковая позиция и они висят в воздухе, и с жертвой, это правильно написано или нет? Я жертве не ставил groupinfo. Sticky Gib-ы и не работали из-за того что могли с друг другом сколидить и остаться висеть в воздухе.

pGib->pev->groupinfo = 1;
UTIL_SetGroupTrace(pGib->pev->groupinfo, GROUP_OP_NAND);
UTIL_SetGroupTrace(pev->groupinfo, GROUP_OP_NAND);


В общем еще вот, к примеру когда я сделал Акимбо Хорнет заметил, если спавнить Хорнетов сразу при стрельбе с двух рук (первичная стреляет по очереди, левая правая, вторичная сразу с двух рук), и оставить код что подправляет траекторию чтобы они летели в центр экрана - то они в друг друга врезаются и падают, в общем опять же, как этот груп инфо сделать так чтобы если что хорнеты пролетали сквозь друг друга, и в тоже время попадали в НПС и наносили им урон, пусть я и убрал подправление траектории в прицел, все равно видно что они бывают в друг друга врезаются.


Отправлено Ku2zoff 09-12-2021 в 15:09:

Цитата:
Chyvachok писал:
как точно этот UTIL_SetGroupTrace работает? Чет я туплю с ним, это надо обоим сущностям ставить одинаковый groupinfo? Просто я так и не понимаю результата конечного.

C++ Source Code:
1
void SV_Impact( edict_t *e1, edict_t *e2, trace_t *trace )
2
{
3
  svgame.globals->time = sv.time;
4
 
5
  if(( e1->v.flags|e2->v.flags ) & FL_KILLME )
6
    return;
7
 
8
  if( e1->v.groupinfo && e2->v.groupinfo )
9
  {
10
    if( svs.groupop == GROUP_OP_AND && !FBitSet( e1->v.groupinfo, e2->v.groupinfo ))
11
      return;
12
 
13
    if( svs.groupop == GROUP_OP_NAND && FBitSet( e1->v.groupinfo, e2->v.groupinfo ))
14
      return;
15
  }
16
 
17
  if( e1->v.solid != SOLID_NOT )
18
  {
19
    SV_CopyTraceToGlobal( trace );
20
    svgame.dllFuncs.pfnTouch( e1, e2 );
21
  }
22
 
23
  if( e2->v.solid != SOLID_NOT )
24
  {
25
    SV_CopyTraceToGlobal( trace );
26
    svgame.dllFuncs.pfnTouch( e2, e1 );
27
  }
28
}

При svs.groupop == GROUP_OP_AND две энтити коллайдят, если у них одинаковый групинфо. При svs.groupop == GROUP_OP_NAND две энтити коллайдят, если у них разные групинфо. Вроде так. Ставь барнаклу и жертве одинаковый групинфо, например энтиндекс барнакла и svs.groupop GROUP_OP_NAND. Нужно число отличное от нуля, иначе механизм будет игнорить. После падения жертвы на землю делай UTIL_UnsetGroupTrace, и ставь жертве pev->groupinfo = 0.

Добавлено 09-12-2021 в 21:50:

C++ Source Code:
1
// в коде барнакла в начале смерти
2
pev->groupinfo = this->entindex();
3
pVictim->pev->groupinfo = this->entindex();
4
UTIL_SetGroupTrace(this->entindex(), GROUP_OP_NAND);
5
 
6
// в коде барнакла в конце смерти
7
pev->groupinfo = 0;
8
 
9
// в коде жертвы
10
if (pev->groupinfo && FBitSet(pev->flags, FL_ONGROUND))
11
{
12
  pev->groupinfo = 0;
13
  UTIL_UnsetGroupTrace();
14
}

Должно работать. Если я не ошибся, по умолчанию всегда GROUP_OP_AND, и pev->groupinfo всех энтить нулевые. Но, важно, чтобы groupinfo были ненулевые. Работает это со всеми энтитями, включая игроков. То есть можно отключить коллизию с тиммейтами, при том, что они смогут друг друга подстрелить.

Добавлено 09-12-2021 в 22:09:

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


Отправлено Chyvachok 09-12-2021 в 15:41:

Ku2zoff Вроде понял, в UTIL_SetGroupTrace в первую колонку идет номер группы, а во вторую тип коллизии, GROUP_OP_NAND или GROUP_OP_AND .

А вообще, обязательно ли изменять жертву? Просто это еще думать надо куда этот код всунуть еще, чтобы он точно вызвался, жертва ведь может быть кем угодно, и игрок и НПС-ы, это метод надо искать что у всех всегда вызывается.

В Теории достаточно снарядам выставить к примеру при спавне
pev->groupinfo с номером (как я понял любое число кроме 0) и UTIL_SetGroupTrace(this->entindex(), GROUP_OP_NAND);, это по идее должно предотвратить их коллиззию с друг другом и в тоже время оставить коллизию с монстрами? Допустим если я хочу сделать энергодробовик, и хочу быть уверенным что снаряды с собой не сколидят при выстреле.

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


Отправлено Ku2zoff 09-12-2021 в 15:59:

Chyvachok я тут покумекал. Короче, с барнаклом решается всё просто:

C++ Source Code:
1
if (HasMemory(bits_MEMORY_KILLED))
2
{
3
  if (ShouldGibMonster(iGib))
4
    CallGibMonster();
5
  return;
6
}
7
 
8
Remember(bits_MEMORY_KILLED);
В самое начало функции CBarnacle :: Killed.
C++ Source Code:
if (ShouldGibMonster(iGib))
{
  CallGibMonster();
  return;
}
Туда же после закомментированной строки // CGib::SpawnRandomGibs( pev, 4, 1 );
C++ Source Code:
if (pev->solid == SOLID_NOT) pev->solid = SOLID_SLIDEBOX;
if (pev->takedamage == DAMAGE_NO) pev->takedamage = DAMAGE_AIM;
В самое начало функции CBarnacle :: WaitTillDead.
За 0.1 секунды, что проходят между Killed и WaitTillDead жертва успевает упасть. А там уже солидность и урон возвращаются. Может быть на высоких фпс или при низкой гравитации жертва не будет успевать выпасть, надо проверять.

Добавлено 09-12-2021 в 22:59:

Гибсы (человеческие, что выплёвываются в момент смерти) могут немного подзастрять в барнакле, но это некритично. Можно написать новую функцию, CBarnacle::SpawnRandomGibs, которая будет спавнить куски чуть ниже, чтобы они не застревали.


Отправлено Chyvachok 09-12-2021 в 17:35:

Кстати, а как сделать спрайт на клиенте который через ТриАпи рисуется чтобы на него влиял свет? Сделал себе следы крови за кусками, которые на Авроре сделаны, но на партикли не влияет свет, для плазмы какой нибуть или огня ракеты норм, но для дыма и кровяки надо напильником подпилить эту систему.


Отправлено Дядя Миша 09-12-2021 в 17:48:

В ксашевской авроре есть освещаемые партиклы.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 09-12-2021 в 18:01:

Дядя Миша а какие ключевые слова отвечают за освещение? CONTENT_SPOTLIGHT или m_iLightingModel?

Добавлено 09-12-2021 в 20:01:

Еще вот, в КсашХТ в triangleapi.h есть в void ( *LightAtPoint)( float *pos, float *value ); но ее нету в обычном ХЛСДК, оно будет работать в халве, если скопипастить? Там еще есть штуки что есть в КсашХТ но нету в обычной Халве.


Отправлено Дядя Миша 09-12-2021 в 18:14:

Цитата:
Chyvachok писал:
Еще вот, в КсашХТ в triangleapi.h есть в void ( *LightAtPoint)( float *pos, float *value ); но ее нету в обычном ХЛСДК, оно будет работать в халве, если скопипастить?

да, это в расширенном халфовском апи её добавили.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 09-12-2021 в 18:21:

Дядя Миша собственно а как через LightAtPoint менять цвет партикли? Тот код что в КсашХТ не совсем копипастится, к примеру этот кусок:

Vector lightColor;

gEngfuncs.pTriAPI->LightAtPoint( part->origin, (float *)&lightColor );
lightColor *= (1.0f / 255.0f);

Тут жалуется на *=, пишет error C2676: binary '*=' : 'Vector' does not define this operator or a conversion to a type acceptable to the predefined operator

Да и честно я так и не придумал, как из вектора мне получит цвет в виде float.


Отправлено FreeSlave 09-12-2021 в 18:40:

Цитата:
Дядя Миша писал:
FL_WORLDBRUSH - это хинт-подсказка, что по такому брашу можно смело ходить, чтоб монстры не тупили. В то время как монстерклип вертикальный и по нему обычно никто не ходит. Так что да, убирай смело.


Вследствие этого появилась другая проблема. Теперь монстры с Monsterclip не осознают, что не могут дойти до ноды, и постоянно перестраивают путь в FGetNodeRoute. Надо как-нибудь для связей выставлять флаг, что она недоступна для монстров с Monsterclip.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Chyvachok 09-12-2021 в 18:54:

Там где рисуется партикля в ParticleSystem::DrawParticle всунул
Vector lightColor;
gEngfuncs.pTriAPI->LightAtPoint( origin, (float *)&lightColor );

И после вывод в консоль чтобы посмотреть что оно выдает, которая выводит lightColor.x, lightColor.y, lightColor.z по x и z всегда ноль, по y какое-то рандомное в зависимости от уровня число которое не зависит от освещенности никак.

Добавлено 09-12-2021 в 20:54:

В общем проблема с LightAtPoint, оно выдает вообще непонятные числа, то минусовые, то гиганские там 9946234623 такого вида, и по одной координате.


Отправлено Ku2zoff 09-12-2021 в 19:13:

Исправил застревание гибсов в умирающем барнакле:

C++ Source Code:
1
void CBarnacle::SpawnGib(void)
2
{
3
  CGib* pGib = GetClassPtr((CGib*)NULL);
4
  pGib->Spawn("models/hgibs.mdl");
5
 
6
  pGib->m_bloodColor = BLOOD_COLOR_RED;
7
  pGib->pev->body = RANDOM_LONG(1, 6);
8
  pGib->pev->solid = SOLID_BBOX;
9
  UTIL_SetSize(pGib->pev, Vector(0, 0, 0), Vector(0, 0, 0));
10
 
11
  pGib->pev->origin = pev->origin - gpGlobals->v_up * pev->size.z * 1.5;
12
  pGib->pev->velocity = g_vecZero;
13
 
14
  pGib->pev->velocity.x += RANDOM_FLOAT(-0.25, 0.25);
15
  pGib->pev->velocity.y += RANDOM_FLOAT(-0.25, 0.25);
16
  pGib->pev->velocity.z += RANDOM_FLOAT(-0.25, 0.25);
17
  pGib->pev->velocity = pGib->pev->velocity * RANDOM_FLOAT(300, 400);
18
 
19
  pGib->pev->avelocity.x = RANDOM_FLOAT(100, 200);
20
  pGib->pev->avelocity.y = RANDOM_FLOAT(100, 300);
21
 
22
  pGib->LimitVelocity();
23
}
Эту функцию нужно добавить в класс CBarnacle, и вызывать её вместо SpawnRandomGibs из HandleAnimEvent в кейсе BARNACLE_AE_PUKEGIB.


Отправлено Crystallize 09-12-2021 в 19:17:

Ku2zoff может такие вещи оформлять отдельными сниппетами-темами в туторах? Яуже со счету сбился сколько вы фиксов к ксашу сделали.


Отправлено Chyvachok 09-12-2021 в 19:28:

Ku2zoff кстати модешь подсказать как быть с освещением у партикли? Хочу сделать чтобы свет влиял на партиклю, но никак не могу сообразить как эту LightAtPoint использовать, она выдает странный результат. Потом как заставлю ее работать нормально завести еще одну опцию в текстовый файл авроры которая бы переключала бы, влияет свет на партиклю или нет.

Вот если что сам код рисования партикли, из Спирита или Паранои, не помню точно:

code:
void ParticleSystem::DrawParticle(particle *part, vec3_t &right, vec3_t &up) { // gEngfuncs.Con_Printf("DrawParticle: size %f, pos %f %f %f\n", part->size, part->origin[0], part->origin[1], part->origin[2]); float fSize = part->m_fSize; vec3_t point1,point2,point3,point4; vec3_t origin = part->origin; // nothing to draw? if (fSize == 0) return; float fCosSize = CosLookup(part->m_fAngle)*fSize; float fSinSize = SinLookup(part->m_fAngle)*fSize; // calculate the four corners of the sprite VectorMA (origin, fSinSize, up, point1); VectorMA (point1, -fCosSize, right, point1); VectorMA (origin, fCosSize, up, point2); VectorMA (point2, fSinSize, right, point2); VectorMA (origin, -fSinSize, up, point3); VectorMA (point3, fCosSize, right, point3); VectorMA (origin, -fCosSize, up, point4); VectorMA (point4, -fSinSize, right, point4); struct model_s * pModel; int iContents = 0; for (particle *pDraw = part; pDraw; pDraw = pDraw->m_pOverlay) { if (pDraw->pType->m_hSprite == 0) continue; if (pDraw->pType->m_iDrawCond) { if (iContents == 0) iContents = gEngfuncs.PM_PointContents(origin, NULL); if (iContents != pDraw->pType->m_iDrawCond) continue; } pModel = (struct model_s *)gEngfuncs.GetSpritePointer( pDraw->pType->m_hSprite ); // if we've reached the end of the sprite's frames, loop back while (pDraw->frame > pModel->numframes) pDraw->frame -= pModel->numframes; while (pDraw->frame < 0) pDraw->frame += pModel->numframes; if ( !gEngfuncs.pTriAPI->SpriteTexture( pModel, int(pDraw->frame) )) continue; gEngfuncs.pTriAPI->RenderMode(pDraw->pType->m_iRenderMode); gEngfuncs.pTriAPI->Color4f( pDraw->m_fRed, pDraw->m_fGreen, pDraw->m_fBlue, pDraw->m_fAlpha ); gEngfuncs.pTriAPI->Begin( TRI_QUADS ); gEngfuncs.pTriAPI->TexCoord2f (0, 0); gEngfuncs.pTriAPI->Vertex3fv(point1); gEngfuncs.pTriAPI->TexCoord2f (1, 0); gEngfuncs.pTriAPI->Vertex3fv (point2); gEngfuncs.pTriAPI->TexCoord2f (1, 1); gEngfuncs.pTriAPI->Vertex3fv (point3); gEngfuncs.pTriAPI->TexCoord2f (0, 1); gEngfuncs.pTriAPI->Vertex3fv (point4); gEngfuncs.pTriAPI->End(); } }


Отправлено Ku2zoff 09-12-2021 в 20:11:

Цитата:
Crystallize писал:
может такие вещи оформлять отдельными сниппетами-темами в туторах

Этим надо кому-то заняться и прошерстить за пару месяцев все темы по нубским вопросам, туторам, ксашу. Вообще всю ветку Half-Life SDK и частично Наши проекты. Долго это.
Цитата:
Chyvachok писал:
Тут жалуется на *=, пишет error C2676: binary '*=' : 'Vector' does not define this operator or a conversion to a type acceptable to the predefined operator

Да и честно я так и не придумал, как из вектора мне получит цвет в виде float.
C++ Source Code:
lightColor = lightColor * (1.0f / 255.0f);

У класса Vector в халфе нету нужных операторов +=, -=, *=, /= для работы с флоатами. Если очень надо, можно стащить из ReGameDLL:
C++ Source Code:
decltype(auto) operator+=(float fl) { return (*this = *this + fl); }
decltype(auto) operator-=(float fl) { return (*this = *this - fl); }
decltype(auto) operator*=(float fl) { return (*this = *this * fl); }
decltype(auto) operator/=(float fl) { return (*this = *this / fl); }


Отправлено Chyvachok 09-12-2021 в 20:21:

Ku2zoff тут даже не в *= дело - сам LightAtPoint не работает.

Добавлено 09-12-2021 в 22:21:

Он вместо освещенности в диапазоне 1-255 выдает некое число которое зависит от того куда смотрит игрок. pDraw->origin это ж позиция партикли? Хотя я пробовал и part->origin и что только можно. ХЗ почему в КсашХТ оно работает а тут нет.


Отправлено Ku2zoff 09-12-2021 в 20:26:

Вообще, в ReGameDLL расширенный класс Vector, который позволяет всякие операции вроде

C++ Source Code:
pev->velocity /= 2;
вместо
C++ Source Code:
pev->velocity = pev->velocity / 2;


Отправлено Chyvachok 09-12-2021 в 20:30:

Ku2zoff тут не в векторе дело, в самом gEngfuncs.pTriAPI->LightAtPoint( pDraw->origin, (float *)&lightColor );

Оно возращяет странный результат, который вообще с освещением не связян. Я с помощью этого кода смотрел что оно выводит: gEngfuncs.Con_Printf("Light X %f, Light Y %f, Light z %f\n", lightColor.x, lightColor.y, lightColor.z); Не важно, есть ли lightColor = lightColor * (1.0f / 255.0f); или нет.


Отправлено Ku2zoff 09-12-2021 в 20:31:

Цитата:
Chyvachok писал:
Он вместо освещенности в диапазоне 1-255 выдает некое число которое зависит от того куда смотрит игрок.

C++ Source Code:
Color 0.749020 0.749020 0.533333

У меня вот такой вывод в консоль. Диапазон от 0 до 1. В качестве точки, откуда берётся освещённость взят вектор v_origin. Чем ярче место, где стоит игрок, тем больше цифры.


Отправлено Chyvachok 09-12-2021 в 20:35:

У меня по всем координатам кроме одной 0, если есть lightColor = lightColor * (1.0f / 255.0f); то везде нули, если нет этой строки в lightColor.y чисто которое меняется от того куда смотрит игрок, либо -0.821521 либо 0.812312 либо что-то по средине. Оно меняется если камерой смотреть в разную сторону, освещение никак не влияет на него.

Добавлено 09-12-2021 в 22:34:

Вставлял я его в ту часть когда где эффект рисуется, где gEngfuncs.pTriAPI->Color4f

Добавлено 09-12-2021 в 22:35:

Пробовал в другой метод вставлять, Update Particle там вообще дичь, числа 6423573.23423 и так далее.


Отправлено Ku2zoff 09-12-2021 в 20:41:

Chyvachok попробуй засунуть в HUD_DrawTransparentTriangles

C++ Source Code:
1
Vector lightColor;
2
 
3
gEngfuncs.pTriAPI->LightAtPoint(v_origin, (float*)&lightColor);
4
lightColor = lightColor * (1.0f / 255.0f);
5
 
6
gEngfuncs.Con_DPrintf("Color %f %f %f\n", lightColor.x, lightColor.y, lightColor.z);
и глянуть вывод в консоли.

Добавлено 10-12-2021 в 03:41:

Ссылку на v_origin не забудь. Если будет нормально, выведи в консоль что выдаёт pDraw->origin, может быть в этом проблема.


Отправлено Chyvachok 09-12-2021 в 20:50:

v_origin это над методом void DLLEXPORT HUD_DrawTransparentTriangles( void ) добавить extern vec3_t v_origin;?

Пробовал пишет 0 0 0 снизу OPENGL_ERROR: GL_INVALID_ENUM_CALLED


Отправлено Ku2zoff 09-12-2021 в 20:52:

Chyvachok да, верно. Интересная ошибка. Какой движок и какой мод?


Отправлено Chyvachok 09-12-2021 в 20:53:

Кстати этот же OPENGL_ERROR: GL_INVALID_ENUM_CALLED пишет и когда в партилклях вызывается.

Добавлено 09-12-2021 в 22:53:

Двиг Ксаш, код обычный ХЛСДК, не КсашХТ.


Отправлено Ku2zoff 09-12-2021 в 20:55:

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


Отправлено Chyvachok 09-12-2021 в 21:01:

Вроде заработало в HUD_DrawTransparentTriangles, дело было в triangleapi.h, у меня изначально не было там LightAtPoint, я скопировал только LightAtPoint, теперь я скопирал вообще все что было из более нового СДК, вроде теперь пишет что надо. Остальные методы, там Color4fRendermode, BoxInPVS и так далее.

Добавлено 09-12-2021 в 23:01:

Что-то вроде в духе такого уже выводит 0.749020 0.749020 0.533333 и в коде партиклей.


Отправлено Ku2zoff 09-12-2021 в 21:05:

Цитата:
Chyvachok писал:
у меня не было там LightAtPoint

Обнови HLSDK до актуальной версии.
Цитата:
Chyvachok писал:
я скопировал только LightAtPoint

Так там порядок важен. Последнее, что есть в SDK 2.3 - ScreenToWorld. В новом SDK после него GetMatrix, BoxInPVS и только потом LightAtPoint. Не зря же при реверс инжиниринге втыкают заглушки вместо отсутствующих экспортов. Вот функция тебе и возвращала чёрт знает что, потому что по факту ты вызывал GetMatrix. Это, кстати, объясняет то, что значения менялись при повороте камеры.


Отправлено Chyvachok 09-12-2021 в 21:11:

Цитата:
Ku2zoff писал:
Обнови HLSDK до актуальной версии.


не знаю где его качать, и моды на последней версии, вроде того же Халф Пейна не работают под Ксашем или Пираткой. Сколько искал, не нашел чтобы кто-то новую версию ГолдСорца спиратил, не думаю что мне он актуален будет.


Отправлено Ku2zoff 09-12-2021 в 21:26:

Цитата:
Chyvachok писал:
не знаю где его качать

Это шутка? https://github.com/ValveSoftware/ha...eads/master.zip
Только осторожно, в клиентку линкуется SDL. Работать под ванильным ксашем не будет, только под FWGS. Если не хочешь отказываться от ванильного ксаша, обнови все хедеры в папках common и engine, заменив их на одноимённые из последнего билда ксаша (4529).

Добавлено 10-12-2021 в 04:26:

Цитата:
Chyvachok писал:
не нашел чтобы кто-то новую версию ГолдСорца спиратил

Есть довольно свежие билды, в основном сборки CS 1.6. Зачем пиратить голдсорс для запуска модов, если есть свенкооп в стиме? Кидаешь папку valve в корень свена, в либлисте мода пишешь fallback_dir "valve" и гамай на здоровье. У свен энджин лимиты будь здоров, там карта со стороной 172 тысячи юнитов и количество моделей/спрайтов/клипнодов и прочего просто запредельное. То есть, можно делать мод, не использующий какие-то фичи ксаша, а только лишь требующий повышенных лимитов на свежем HLSDK. И поиграть в него смогут даже копирасты-буржуи, которые не юзают ксаш принципиально.


Отправлено Chyvachok 09-12-2021 в 21:28:

Я не помню откуда качал СДК но с задницы какой-то, забыл что он на Гите есть.

Добавлено 09-12-2021 в 23:28:

Цитата:
Chyvachok писал:
Есть довольно свежие билды, в основном сборки CS 1.6. Зачем пиратить голдсорс для запуска модов, если есть свенкооп в стиме? Кидаешь папку valve в корень свена, в либлисте мода пишешь fallback_dir "valve" и гамай на здоровье.


Не знал что оно так работать будет, думал что он чисто под Свен заточен, Свен есть, как и Стим для игры в бесплатные моды что Source SDK Base используют, для них не надо ХЛ2 иметь купленный. Кстати а Свен двиг без запуска самого стима пашет?


Отправлено Ku2zoff 09-12-2021 в 21:35:

Чтобы последний сдк был совместим с ксашем, надо вернуть старый инпут из версии 2.3, и ещё прилинковать старую vgui.lib оттуда же. Короче, немного работы с клиенткой. В XDM 3.0.3.8 всё это можно подглядеть, Мастер обернул #ifdef'ами все нужные места.

Добавлено 10-12-2021 в 04:35:

Цитата:
Chyvachok писал:
Свен двиг без запуска самого стима пашет

Неа.
Цитата:
Chyvachok писал:
думал что он чисто под Свен заточен

Совместимость с халфой есть. Я первую главу Invasion прошёл без проблем. Клиентку, правда, собирал сам, потому что от версии к версии нового голдсорса баг с мышью в клиентках, собранных из сорцев с гитхаба, то появляется, то пропадает. То он есть всегда, то только при m_rawinput 1, то его нет.


Отправлено Дядя Миша 10-12-2021 в 06:00:

Цитата:
Chyvachok писал:
В общем проблема с LightAtPoint, оно выдает вообще непонятные числа, то минусовые, то гиганские там 9946234623 такого вида, и по одной координате.

это не он выдаёт, это мусор на стеке.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 10-12-2021 в 12:57:

В общем сделал эту аврорку, чтобы свет на нее влиял, и приделал опцию которая бы читалась из txt файла и влияла, освещается партикл или нет.

Осталось придумать с сервером, Аврора не сохраняется, и след исчезает у сущности если сохранится и загрузится, я вот думаю, а как сделать функцию, которая бы вызывалась только после того как игрок загрузился? Которая бы след восстанавливала бы.


Отправлено Ku2zoff 10-12-2021 в 13:01:

Chyvachok SendInitMessage из первой паранойи. Ну или Xash PostActivate System. Первое работает и в мультиплеере. Второе только в сингле.

Добавлено 10-12-2021 в 20:01:

Ещё DesiredAction из спирита. Правда оно больше для мовевитча, и посылка мессаг на клиент сделана через него, потому что по таймингам попадает в нужный промежуток.


Отправлено Chyvachok 10-12-2021 в 15:13:

Еще тоже с кусками и авророй, у меня след удаляется в функции WaitTillLand, но как я понял если куски пропадают из поля зрения, то игра их удаляет, а след остается, не очень удобно что вручную нужно удалять саму систему: https://imgur.com/a/gifVyNo

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

Добавлено 10-12-2021 в 15:16:

Цитата:
Ku2zoff писал:
Chyvachok SendInitMessage из первой паранойи.


Надо будет посмотреть, это на клиент отправляет или на сервере, мне надо у самого снаряда вызывать эту функцию после загрузки сохранения, я как-то делал давно, когда юзал эту Аврору, но это был КсашХТ и с тер пор прошло много времени, я этот код потерял. Главное что на Клиенте в этой авроре вроде есть код, который должен удалять партиклю если нет сущности, но видимо он не работает.

Добавлено 10-12-2021 в 16:00:

https://imgur.com/a/gifVyNo

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

Добавлено 10-12-2021 в 17:13:

// Don't update if the system is outside the player's PVS.
//if(!source || source->curstate.messagenum < messagenum)
// return true;

Если убрать код который останавливает апдейт системы частиц, если они вне поля зрения, то оно тоже не совсем фиксит проблему, партикль висит на месте где кусок улетел в нарнию, кстати в руках детонатор не зря, сатчелы тоже под полом: https://imgur.com/a/fCdmMyd


Отправлено Ku2zoff 10-12-2021 в 16:19:

Цитата:
Chyvachok писал:
source->curstate.messagenum < messagenum

Актуально только в сингле, кстати.


Отправлено Aynekko 10-12-2021 в 18:08:

Подскажите пожалуйста. Перенес TE_GUNSHOTDECAL на клиент. Код-то я сделал:

C++ Source Code:
1
case TE_GUNSHOTDECAL:
2
{
3
  pos.x = READ_COORD();
4
  pos.y = READ_COORD();
5
  pos.z = READ_COORD();
6
  entityIndex = READ_SHORT();
7
  decalIndex = READ_BYTE();
8
  gEngfuncs.pEfxAPI->R_FireCustomDecal( decalIndex, entityIndex, 0, pos, 0, 1 );
9
}
10
break;

А потом столкнулся с проблемой. На клиенте нет pfnDecalIndex. Что делать?

Добавлено 10-12-2021 в 21:08:

Что-то я так посмотрел, в ксаш-движке вообще не вижу R_FireCustomDecal. Она только r_efx.h упоминается. Похоже, вообще клиентские декали никак не сделать

__________________
Мой мод на Xash


Отправлено Дядя Миша 10-12-2021 в 18:18:

Цитата:
Aynekko писал:
На клиенте нет pfnDecalIndex. Что делать?

ну вот в EfxAPI она есть. Оттуда вызывай.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 10-12-2021 в 18:54:

Цитата:
Дядя Миша писал:
в EfxAPI она есть

Ах вот оно где запряталось. Все работает, спасибо. Только все равно я не могу понять, где вообще эта функция R_FireCustomDecal находится, если она натурально упоминается только в h файлах? Подменяется чем-то видимо…

__________________
Мой мод на Xash


Отправлено Chyvachok 10-12-2021 в 20:17:

Ну и говно это Аврора.

Добавлено 10-12-2021 в 22:17:

Код из Спирита-Паранои не дописан толком, а из Ксаша попробуй утяни, там ведь рендер свой, тем кто шарит в програмировании да, проблем нет никаких, но тем кто нет, очень сложно. Не удивительно честно учитывая как она пашет, что никто не юзал ее для следов-снарядов кроме мода Alternative Way.

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


Отправлено [CFR] B@N@N 10-12-2021 в 21:06:

Chyvachok
В XDM погляди партеклсистему.. Она тпм годная и исходники открыты.


Отправлено Chyvachok 10-12-2021 в 21:29:

[CFR] B@N@N она добавлена уже, пусть и с более старой версии, но там немного другие функции. Аврора это всякий там дымок, или следы типа след снаряда, но работает она через зад, как оказалось. А фиксить честно пока не осилил, в КсашХТ лучше работает вроде, хотя опять же, надо тестить, но там рендер другой, надо шарить как код этого клиента устроен, чтобы портануть хотя бы.


Добавлено 10-12-2021 в 23:29:

У ХДМ-овской тоже есть недостатки, она вся захардкодена, любое изменение требует компиляции движка, не читает параметры как автора из текстовых файлов и нету никакого визуального редактора.


Отправлено Ku2zoff 10-12-2021 в 22:26:

Цитата:
Chyvachok писал:
Ну и говно это Аврора.

Она позволяет делать только то, что распыляется. Огонь, дым от огня, дым от попадания пуль в стенки, пар из трубы, след ракеты и проч. Ещё намертво привязана к энтитям-эмиттерам в оригинале.
Цитата:
[CFR] B@N@N писал:
В XDM погляди партеклсистему..

Цитата:
Chyvachok писал:
она вся захардкодена

Эту систему нельзя рассматривать как скриптовую для мапперов. Это скорее замена pEfxAPI для кодеров, чтобы не упереться в лимит темпэнтить. Хочешь много возможностей - будь добр кодить. К сожалению, в последней версии 3.0.3.8 она обросла каким-то крутым кодом, что соответствует современным стандартам, но усложняет не только копипасту, но и отладку. Хотелось бы увидеть версию 3.0.4.0, но я так и не понял, какую загадку загадал Мастер. У него с версии 3.0.3.8 славная торадицыя - не выкладывать сорцы по человечески, а заниматься какой-то фигнёй.

Добавлено 11-12-2021 в 05:18:

Chyvachok если тебе нужна кровяка от гибсов, выкинь аврору и укради позаимствуй код Smoke Puff из паранойи. У PLut'а в BDef'е, как он писал, все партиклевые эффекты на нём основаны.

Добавлено 11-12-2021 в 05:26:

Для начала рекомендую сделать гибсы темпэнтитями. В HUD_AddEntity цеплять им партиклевый эффект, в HUD_TempEntUpdate ставить декали при коллизии и выключать партиклевый эффект, когда гибс сдохнет. Потом, когда всё будет отлажено, можно прикрепить эти эффекты к обычным серверным гибсам. Код из HUD_AddEntity перекочует в мессагу, а код из HUD_TempEntUpdate куда-нибудь в DrawTransparentTriangles. И то, необязательно делать второе. При смерти гибса достаточно отправить вторую мессагу.
Поделись спрайтами крови, если не жалко, или скажи где взял. У меня зачесались руки накодить то, что не получается у тебя. Хотя меня обычная кровь устраивает. Сижу дома с температурой, заняться нечем.


Отправлено Chyvachok 10-12-2021 в 23:11:

Цитата:
Ku2zoff писал:
Поделись спрайтами крови, если не жалко, или скажи где взял. У меня зачесались руки накодить то, что не получается у тебя. Хотя меня обычная кровь устраивает. Сижу дома с температурой, заняться нечем.


Сами aur файлы из Alternative Way взяты - они используют стандартный bloodspray.spr из папки valve. Думал это аврору не только для кровяки, но и для РПГ и энергопушек приспособить, но с ней возни и проблем столько.

Но если надо, могу из какого нибуть Ballistic Weapons спрайты вынуть.

Цитата:
Ku2zoff писал:
Chyvachok если тебе нужна кровяка от гибсов, выкинь аврору и укради позаимствуй код Smoke Puff из паранойи. У PLut'а в BDef'е, как он писал, все партиклевые эффекты на нём основаны.


Пробовал, след плазмы сделать, но пока не очень красиво получается на их основе.

Добавлено 11-12-2021 в 01:06:

Что-то такое наваял, но честно не очень нравится, не получается как у Plut чтобы красивые эффекты были.

code:
Эвент: void EV_RocketTrailCallback ( struct tempent_s *ent, float frametime, float currenttime ) { if ( currenttime < ent->entity.baseline.fuser1 ) return; if ( ent->entity.origin == ent->entity.attachment[0] ) ent->die = gEngfuncs.GetClientTime(); else VectorCopy ( ent->entity.origin, ent->entity.attachment[0] ); float puff_speed = 400, puff_size = 16, speed_side = 0; VectorNormalize(ent->entity.angles); // there is surface normal actually CObject *pObj = new CPlasmaTrailPart( ent->entity.origin, ent->entity.angles, 0.2, 1, puff_speed, puff_size, speed_side, "sprites/plasma_pistol_trail.spr", 1 ); g_objmanager.AddObject(pObj); dlight_t *dl = gEngfuncs.pEfxAPI->CL_AllocDlight ( 0 ); VectorCopy ( ent->entity.origin, dl->origin ); dl->radius = 64; //128 dl->dark = true; dl->die = gEngfuncs.GetClientTime() + 0.001; //Kill it right away dl->color.r = 0; dl->color.g = 180; dl->color.b = 0; } Сам след. CPlasmaTrailPart::CPlasmaTrailPart( vec3_t origin, vec3_t normal, float fLife, float fAlpha, float fVelocity, float fSize, float maxofs, char model [64], int iType, float r, float g, float b) { vec3_t up, right; VectorClear(right); VectorClear(up); MakeUpRight(normal, up, right); m_fAlpha = fAlpha; m_fLife = fLife; m_fr = r; m_fg = g; m_fb = b; spr = SPR_Load(model); m_iType = iType; VectorCopy(origin, PuffOrigin); PuffSize = fSize; VectorClear(PuffVelocity); VectorMA(PuffVelocity, fVelocity, normal, PuffVelocity); VectorMA(PuffVelocity, gEngfuncs.pfnRandomFloat(-maxofs, maxofs), right, PuffVelocity); VectorMA(PuffVelocity, gEngfuncs.pfnRandomFloat(-maxofs, maxofs), up, PuffVelocity); } int CPlasmaTrailPart::Draw(float time, float frametime) { float frac = (time - birthTime) / m_fLife; if (frac > 1) return 1; // delete object if (!spr) { gEngfuncs.Con_Printf("error: cant load sprite\n"); return 1; } CalcViewMatrix(); struct model_s *pModel = (struct model_s *)gEngfuncs.GetSpritePointer( spr ); int frame = (int)(pModel->numframes * frac); gEngfuncs.pTriAPI->RenderMode(kRenderTransAdd); gEngfuncs.pTriAPI->SpriteTexture( pModel, frame ); float alpha = m_fAlpha * (1 - frac); gEngfuncs.pTriAPI->Color4f( m_fr, m_fg, m_fb, alpha ); gEngfuncs.pTriAPI->CullFace( TRI_NONE ); gEngfuncs.pTriAPI->Begin( TRI_QUADS ); float size = PuffSize * (1 - frac); VectorMA(PuffOrigin, frametime, PuffVelocity, PuffOrigin); g_viewMatrix[0][3] = PuffOrigin[0]; // write origin to matrix g_viewMatrix[1][3] = PuffOrigin[1]; g_viewMatrix[2][3] = PuffOrigin[2]; gEngfuncs.pTriAPI->TexCoord2f( 0, 0 ); SetPoint(0, size ,size, g_viewMatrix); gEngfuncs.pTriAPI->TexCoord2f( 0, 1 ); SetPoint(0, size ,-size, g_viewMatrix); gEngfuncs.pTriAPI->TexCoord2f( 1, 1 ); SetPoint(0, -size ,-size, g_viewMatrix); gEngfuncs.pTriAPI->TexCoord2f( 1, 0 ); SetPoint(0, -size ,size, g_viewMatrix); gEngfuncs.pTriAPI->End(); gEngfuncs.pTriAPI->RenderMode(kRenderNormal); return 0; }


Добавлено 11-12-2021 в 01:11:

С кусками интересно бы сделать их чисто клиентские, они все равно на игру не влияют никак, и Stycky Gib-ы тоже бы как-то портануть на клиент, это которые к стенам липнут, я им даже модель улучшил. Вот кстати мой ретекстур Стики Гибов: https://files.gamebanana.com/bitpit/stickygib.rar


Отправлено Ku2zoff 10-12-2021 в 23:35:

Цитата:
Chyvachok писал:
С кусками интересно бы сделать их чисто клиентские

Да, но есть проблемка. Их надо как-то фильтровать, чтобы знать, что это именно гибсы. Самый простой вариант - по модели. Отправляем на клиент TE_BREAKMODEL с моделькой мясных кусков, отлавливаем темпэнтитю в HUD_AddEntity по названию модели, ставим ей новый флаг FTENT_GIB, например (флагов 21, можно добавить свои), а дальше - вперёд и с песней в HUD_TempEntUpdate рисовать декали при коллизии с бсп.
Цитата:
Chyvachok писал:
пока не очень красиво получается на их основе

Надо поиграться с параметрами, чтобы шлейф из спрайтов вытягивался в линию. Я уже сделал новый класс CBloodTrail со спрайтом bloodspray.spr, пытаюсь научить его распыляться как аврору. По задумке сразу все спрайты рисуются и разлетаются, а нам надо рисовать массив по очереди. И как только последний достигнет нужного размера, "убивать" его, и создавать новый, маленький, в точке отсчёта.
Цитата:
Chyvachok писал:
Stycky Gib-ы тоже бы как-то портануть на клиент

Наверное можно сделать так, как я предложил, с тем лишь отличием, что при первом коллайде у модели занулиться скорость, и она "прилипнет" к стене.
Лучше куски всё-таки делать на сервере, потому что от клиентских не будут сохраняться декали. У меня уже есть спрайтовые декали, которые пишутся в сейв, так что я бы мог это приспособить.
Пропробую накодить эту кровь от кусков, а потом надо заняться заменой темпэнтить на элементы RenderSystem из XDM. Она умеет почти во всё: искры, круги, эффекты типа env_funnel и проч.


Отправлено Дядя Миша 11-12-2021 в 07:57:

Цитата:
Chyvachok писал:
Она еще глючит начинает когда партиклей много спавнится, к примеру когда сразу много врагов гибаешь, они перестают исчезать и прочая дичь начинается, тоже самое с следом снарядов

Самая главная беда авроры - там почему-то Лаури не обнулил переменные.
Вот её и колбасит. Ну в ксаше, я естественно, это сделал.
Цитата:
Chyvachok писал:
в КсашХТ лучше работает вроде, хотя опять же, надо тестить, но там рендер другой, надо шарить как код этого клиента устроен

Аврора в ксаш-моде специально оставлена совместимой с HL. Она ничего не затрагивает из рендерера ксаш-мода. Её можно брать целиком и копипастить в халфу.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено [CFR] B@N@N 11-12-2021 в 10:07:

Цитата:
Ku2zoff писал:
У меня уже есть спрайтовые декали, которые пишутся в сейв, так что я бы мог это приспособить


Можно по подробние про это? В чом отличие от оригинала?

Добавлено 11-12-2021 в 13:07:

Цитата:
Chyvachok писал:
Пробовал, след плазмы сделать, но пока не очень красиво получается на их основе.

Ну у тебя тоже заардкожино всё будет)))
Ваще я так понял такой же визуальный ридактор и тхт файл никто больше ниосилел из авторов партекл систем. Походу оно ни так просто зделать


Отправлено Ku2zoff 11-12-2021 в 12:02:

Цитата:
[CFR] B@N@N писал:
Можно по подробние про это? В чом отличие от оригинала?

Декали из спрайтов, а не из картинок в ваде. Могут анимироваться, менять размер на ходу, много чего ещё. В основе декали из инвазиона. Они прикольные, но исчезают после загрузки или перехода на новый уровень. Это я почти заборол, могут иногда пропадать с движущихся энтить при загрузке и переходе. Ещё обрезку по краям брашей не сделал - половина декали может висеть в пустоте. Собсно, в инвазионе это не слишком бросалось в глаза, т.к. там только дырки от пуль. А я планирую пятна крови, взрывов и ещё что-нибудь. Как только победю отваливание от движущихся энтить - займусь обрезкой.

Добавлено 11-12-2021 в 19:02:

Цитата:
[CFR] B@N@N писал:
Походу оно ни так просто зделать

Самая сложность в том, какой функционал задать самой системе. В идеале, она должна уметь всё, что умеют pEfxAPI (касаемо спрайтов), аврора и дождик БУзера. То есть тут не просто какие-то дымки от выстрелов в стену, и не просто дым, рассеивающийся из трубы. Тут и лучи, закрученные в спираль, и закольцованные лучи, и лучи с шумом, и прыгающие от пола спрайты гаусса, и искры от выстрелов из инвазиона, и эффекты телепортов, дофигища всего. Накодить это можно, в XDM очень многое уже есть. Другой вопрос как всё это унифицировать, чтобы у совершенно разных систем, например искр и кольца от взрыва не было дублирующихся параметров, и как вообще это всё сохранять в скрипт.
Будет готовая система - можно будет и редактор написать. Только вот нужна ли она, именно такая система? В большинстве случаев функционал будет избыточным. Всё, на что хватает фантазии у моддеров - повторять чужие эффекты. Поэтому Дядя Миша просто взял, и портировал аврору в ксаш с исправлениями. Подавляющее большинство моддеров даже чужие aur-файлы берут. Те самые, которые Лаури как примеры к спириту приложил. Даже те, кто умеет кодить, не раскрывают в полной мере возможности pEfxAPI. Нет примеров, нет документации.


Отправлено Chyvachok 11-12-2021 в 13:21:

Цитата:
Ku2zoff писал:
А я планирую пятна крови, взрывов и ещё что-нибудь.


Если нужны более качественные спрайты вот из Ballistic Weapons кровяха: https://files.gamebanana.com/bitpit...eaponsblood.rar

Могу еще следы от пуль и взрывов скинуть.


Отправлено Дядя Миша 11-12-2021 в 14:40:

Цитата:
Ku2zoff писал:
Как только победю отваливание от движущихся энтить - займусь обрезкой.

Ну в ксаше же не отваливаются. Даже с монстров. Смотри как там устроено. Оно несложное, если разберёшься с переходом из глобального в локальное пространство.

Цитата:
Ku2zoff писал:
Поэтому Дядя Миша просто взял, и портировал аврору в ксаш с исправлениями.

К Авроре Ксер в свое время редактор написал. У нее на мой взгляд был только один недостаток - баги. Ну вот я их и поправил, а функционал немного дополнил. Сделал проекцию светового пятна на партиклы и всё такое.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Chyvachok 11-12-2021 в 17:57:

Такой вариант сделать другой цвет крови при выстреле в голову нормальный? Пока вижу что есть шанс если монстра разорвет на мясо выстрелом в голову, то куски будут желтую кровь оставлять, а если в тело то красную. Хотя как вариант влепить в Gib Monster проверку возвращающую цвет крови, или это лишняя проверка будет?

code:
void CZombie :: TraceAttack( entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType) { switch ( ptr->iHitgroup ) { case HBOX_HEAD: m_bloodColor = BLOOD_COLOR_YELLOW; break; } CBaseMonster::TraceAttack( pevAttacker, flDamage, vecDir, ptr, bitsDamageType ); if (m_bloodColor = BLOOD_COLOR_YELLOW) m_bloodColor = BLOOD_COLOR_RED; }


Отправлено Ku2zoff 11-12-2021 в 23:43:

Короче, я пошёл по пути самурая. CZombie::TraceBleed с аргументом цвета крови, что логично. CZombie::TraceAttack, CZombie::GibMonster, CZombie::SpawnGibs. Последнее делать не хотелось, но гибсы из SpawnRandomGibs по-умолчанию принимают цвет крови владельца. Пришлось сделать для зомби кастомную функцию, чтобы задать цвет вручную.

C++ Source Code:
1
#include "weapons.h"
2
 
3
void CZombie::TraceAttack(entvars_t* pevAttacker, float flDamage, Vector vecDir, TraceResult* ptr, int bitsDamageType)
4
{
5
  if (pev->takedamage)
6
  {
7
    m_LastHitGroup = ptr->iHitgroup;
8
 
9
    switch (ptr->iHitgroup)
10
    {
11
    case HITGROUP_HEAD:
12
        SpawnBlood(ptr->vecEndPos, BLOOD_COLOR_YELLOW, flDamage);
13
      TraceBleed(BLOOD_COLOR_YELLOW, flDamage, vecDir, ptr, bitsDamageType);
14
      break;
15
    default:
16
        SpawnBlood(ptr->vecEndPos, BLOOD_COLOR_RED, flDamage);
17
      TraceBleed(BLOOD_COLOR_RED, flDamage, vecDir, ptr, bitsDamageType);
18
      break;
19
    }
20
    AddMultiDamage(pevAttacker, this, flDamage, bitsDamageType);
21
  }
22
}
23
 
24
void CZombie::TraceBleed(int bloodColor, float flDamage, Vector vecDir, TraceResult* ptr, int bitsDamageType)
25
{
26
  if (flDamage == 0) return;
27
 
28
  if (!(bitsDamageType & (DMG_CRUSH | DMG_BULLET | DMG_SLASH | DMG_BLAST | DMG_CLUB | DMG_MORTAR))) return;
29
 
30
  TraceResult Bloodtr;
31
  Vector vecTraceDir;
32
  float flNoise;
33
  int cCount;
34
  int i;
35
 
36
 
37
  if (flDamage < 10)
38
  {
39
    flNoise = 0.1;
40
    cCount = 1;
41
  }
42
  else if (flDamage < 25)
43
  {
44
    flNoise = 0.2;
45
    cCount = 2;
46
  }
47
  else
48
  {
49
    flNoise = 0.3;
50
    cCount = 4;
51
  }
52
 
53
  for (i = 0; i < cCount; i++)
54
  {
55
    vecTraceDir = vecDir * -1;
56
    vecTraceDir.x += RANDOM_FLOAT(-flNoise, flNoise);
57
    vecTraceDir.y += RANDOM_FLOAT(-flNoise, flNoise);
58
    vecTraceDir.z += RANDOM_FLOAT(-flNoise, flNoise);
59
 
60
    UTIL_TraceLine(ptr->vecEndPos, ptr->vecEndPos + vecTraceDir * -172, ignore_monsters, ENT(pev), &Bloodtr);
61
 
62
    if (Bloodtr.flFraction != 1.0) UTIL_BloodDecalTrace(&Bloodtr, bloodColor);
63
  }
64
}
65
 
66
void CZombie::GibMonster(void)
67
{
68
  TraceResult	tr;
69
  BOOL		gibbed = FALSE;
70
 
71
  EMIT_SOUND(ENT(pev), CHAN_WEAPON, "common/bodysplat.wav", 1, ATTN_NORM);
72
 
73
  if (CVAR_GET_FLOAT("violence_hgibs") != 0)
74
  {
75
    SpawnGibs(3, 1);
76
    gibbed = TRUE;
77
  }
78
 
79
  if (CVAR_GET_FLOAT("violence_agibs") != 0)
80
  {
81
    SpawnGibs(3, 0);
82
    gibbed = TRUE;
83
  }
84
 
85
  if (gibbed)
86
  {
87
    SetThink(&CBaseMonster::SUB_Remove);
88
    pev->nextthink = gpGlobals->time;
89
  }
90
  else FadeMonster();
91
}
92
 
93
void CZombie::SpawnGibs(int cGibs, int human)
94
{
95
  int cSplat;
96
 
97
  for (cSplat = 0; cSplat < cGibs; cSplat++)
98
  {
99
    CGib* pGib = GetClassPtr((CGib*)NULL);
100
 
101
    if (human)
102
    {
103
      pGib->Spawn("models/hgibs.mdl");
104
      pGib->pev->body = RANDOM_LONG(1, 6 - 1);
105
      pGib->m_bloodColor = BLOOD_COLOR_RED;
106
    }
107
    else
108
    {
109
      pGib->Spawn("models/agibs.mdl");
110
      pGib->pev->body = RANDOM_LONG(0, 4 - 1);
111
      pGib->m_bloodColor = BLOOD_COLOR_YELLOW;
112
    }
113
 
114
    pGib->pev->origin.x = pev->absmin.x + pev->size.x * (RANDOM_FLOAT(0, 1));
115
    pGib->pev->origin.y = pev->absmin.y + pev->size.y * (RANDOM_FLOAT(0, 1));
116
    pGib->pev->origin.z = pev->absmin.z + pev->size.z * (RANDOM_FLOAT(0, 1)) + 1;
117
 
118
    pGib->pev->velocity = g_vecAttackDir * -1;
119
 
120
    pGib->pev->velocity.x += RANDOM_FLOAT(-0.25, 0.25);
121
    pGib->pev->velocity.y += RANDOM_FLOAT(-0.25, 0.25);
122
    pGib->pev->velocity.z += RANDOM_FLOAT(-0.25, 0.25);
123
 
124
    pGib->pev->velocity = pGib->pev->velocity * RANDOM_FLOAT(300, 400);
125
 
126
    pGib->pev->avelocity.x = RANDOM_FLOAT(100, 200);
127
    pGib->pev->avelocity.y = RANDOM_FLOAT(100, 300);
128
 
129
    if (pev->health > -50) pGib->pev->velocity = pGib->pev->velocity * 0.7;
130
    else if (pev->health > -200) pGib->pev->velocity = pGib->pev->velocity * 2;
131
    else pGib->pev->velocity = pGib->pev->velocity * 4;
132
 
133
    pGib->pev->solid = SOLID_BBOX;
134
    UTIL_SetSize(pGib->pev, Vector(0, 0, 0), Vector(0, 0, 0));
135
 
136
    pGib->LimitVelocity();
137
  }
138
}


Добавлено 12-12-2021 в 06:43:

Цитата:
Chyvachok писал:
если монстра разорвет на мясо выстрелом в голову, то куски будут желтую кровь оставлять, а если в тело то красную

Используй мой код. Куски будут оставлять оба цвета.


Отправлено [CFR] B@N@N 12-12-2021 в 01:23:

Цитата:
Ku2zoff писал:
. Ещё обрезку по краям брашей не сделал - половина декали может висеть в пустоте


А как они в движке тогда обриаются?


Отправлено Дядя Миша 12-12-2021 в 06:47:

Цитата:
[CFR] B@N@N писал:
А как они в движке тогда обриаются?

Элементарно. Вокруг полигона, на который наложена декаль строятся ограничивающие плоскости. Как кросспродукт от ребра и нормали.
И этими плоскостями полигон декали обрезается точно по его размеру.

Добавлено 12-12-2021 в 09:47:

Но поскольку декаль накладывается как трипланарная проекция, то её копии ложатся и на соседние полигоны, а лишнее просто удаляется.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-12-2021 в 15:07:

Дядя Миша а где всю эту математику поглядеть? Какие функции в gl_decals.c?


Отправлено XaeroX 17-12-2021 в 16:03:

Ku2zoff
https://en.wikipedia.org/wiki/Suthe...dgman_algorithm

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 17-12-2021 в 17:13:

Ku2zoff polylib.c, там всё. В любой кваке смотри.
Если хочешь понять принцип. Ну а если не хочешь - копипасти из паранои.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 17-12-2021 в 17:20:

Цитата:
Дядя Миша писал:
Если хочешь понять принцип.

Оно не хочется на самом деле, хочется побыстрее скопипастить. Но чем больше я изучаю физику и математику (даже в первом семестре), тем больше понимаю, что кодер без знания матчасти - ноль без палочки.


Отправлено Дядя Миша 17-12-2021 в 18:10:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 17-12-2021 в 18:40:

Цитата:
Ku2zoff писал:
кодер без знания матчасти - ноль без палочки

Истину глаголишь, я тут фонарик ксашмодовский уже пару месяцев пытаюсь пофиксить время от времени, там замуты с матрицами какие-то, а я в этом ничего не понимаю. У каждого мозги под свои задачи заточены, а я уж точно не математик

__________________
Мой мод на Xash


Отправлено Ku2zoff 18-12-2021 в 10:58:

Цитата:
Дядя Миша писал:
воплощать в коде уже имеющиеся - вполне себе

Всё равно надо разбираться, а не бездумно копипастить.
Цитата:
Aynekko писал:
фонарик ксашмодовский уже пару месяцев пытаюсь пофиксить

Я думаю, что тебе надо поштудировать оптику. Шейдеры же не от балды написаны, а с опорой на реальные физические законы.


Отправлено Aynekko 18-12-2021 в 12:22:

Цитата:
Ku2zoff писал:
Я думаю, что тебе надо поштудировать оптику.

Там судя по всему не в этом дело, а в том что все динамические источники света не учитывают angles и scale модели. На каком этапе это сломалось, я не знаю. Дядя Миша даже сам не знает. И похоже дело не в шейдере, а где-то в коде, т.к. это касается только студиомоделей. Это все пока, что удалось выяснить.

__________________
Мой мод на Xash


Отправлено ncuxonaT 18-12-2021 в 13:00:

Разве мы в прошлый раз не пришли к тому, что трансформация модели идет через modelview матрицу, а источники света этого не учитывают?


Отправлено Aynekko 18-12-2021 в 13:08:

Я смотрел в параное 2, там по сути все точно так же за некоторыми исключениями (копипастил - все сломалось). Точно так же строится rotationmatrix. Вот и говорю, какие-то замуты с матрицами мира/модели/света, как одно к другому складывается я вообще не понимаю.

__________________
Мой мод на Xash


Отправлено Дядя Миша 18-12-2021 в 18:31:

Цитата:
Aynekko писал:
Дядя Миша даже сам не знает.


Я напомню как обстояло дело. Когда я готовил обновление для билда 0.65 (которое мог бы вообще не делать), я частично взял рендерер от паранои, чтобы не изобретать велосипед дважды. Но параноевский рендерер более требовательный к видеокарте и я об этом упоминал в теме про разработку.
И сразу же нашлась куча людей, которые возмутились - как это так? Ксаш не будет запускаться на моей замечательной встройке 1654-го года выпуска?
А вот раньше запускался! Это недопустимо! Я тогда не стал с ними спорить, прикинул как бы ужаться в лимиты и сделал это. И тогда же отписался в теме - я сделал новый билд совместимым с вашим железом, но клянусь небесным котэ, я не завидую тому, кто будет это дебажить! Так и оказалось!

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 18-12-2021 в 18:51:

Цитата:
Дядя Миша писал:
как это так? Ксаш не будет запускаться на моей замечательной встройке 1654-го года выпуска?

Ага, а сейчас народ занимается PrimeXT на базе паранои и как оказалось он очень многим нужен в таком виде, хоть и требователен к видюхе еще больше (там чего уже только не прикрутили - pbr, hdr). Вот поди разбери.
Цитата:
Дядя Миша писал:
ну за минуту поисков найти ничего не удалось, а дальше я не стал разбираться.

Что мне сделать, чтобы ты потратил 2 минуты хотя бы? Я уже весь рендер моделей сравнил построчно 2 раза, только толку мало. Проблема в том, что кроме тебя тут просто некому разобраться. Я бы может и перешел на прайм или параною, но я уже столько фичей сделал для мода, что переезд просто не получится.

P.S. Я сузил проблему до этих строчек в DrawLightForMeshList
C++ Source Code:
1
tr.modelorg = m_pModelInstance->m_protationmatrix.VectorITransform( RI->vieworg );
2
Vector right = m_pModelInstance->m_plightmatrix.VectorIRotate( RI->vright );
3
Vector lightorg = m_pModelInstance->m_protationmatrix.VectorITransform( pl->origin );
4
Vector lightdir = m_pModelInstance->m_plightmatrix.VectorIRotate( pl->frustum.GetPlane( FRUSTUM_FAR )->normal );

Но она может быть здесь, а может быть и не здесь...

__________________
Мой мод на Xash


Отправлено Дядя Миша 18-12-2021 в 19:12:

Ничего делать не надо, когда-нибудь я сам найду на это время.
У тебя ведь еще далеко до релиза? К тому же, меня удивляет, почему товарищи форкеры это до сих пор не поправили. Как форкать - так они первые. А как баг исправить - немогут

Добавлено 18-12-2021 в 22:12:

Цитата:
Aynekko писал:
Я сузил проблему до этих строчек в DrawLightForMeshList

Задача сводится к тому, что в m_plightmatrix. Я уже просто не помню.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 18-12-2021 в 19:17:

Цитата:
Дядя Миша писал:
У тебя ведь еще далеко до релиза?

Пока далеко. Буду признателен. Я вот тени от точечных источников из паранои смог перенести и доделать. И вот столкнулся с освещением от лайтов на моделях, всю малину портит.
Цитата:
Дядя Миша писал:
почему товарищи форкеры это до сих пор не поправили

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

Добавлено 18-12-2021 в 22:17:

Цитата:
Дядя Миша писал:
Задача сводится к тому, что в m_plightmatrix.

C++ Source Code:
// build the rotation matrix
m_pModelInstance->m_protationmatrix = matrix3x4( origin, angles, scale );
m_pModelInstance->m_plightmatrix = m_pModelInstance->m_protationmatrix;

__________________
Мой мод на Xash


Отправлено Дядя Миша 18-12-2021 в 19:42:

Aynekko напомни, какие именно лайты глючат и как это выражается.
А то я сел разбираться и уже забыл в чём проблема.

Добавлено 18-12-2021 в 22:42:

Если мне память не изменяет, то кажется с рескейленными моделями там фонарь не работал или что-то вроде этого. Ну так те матрицы, которые строятся для прямого скейла совершенно не годятся для обратного.
Там обратный скейл нужен - еденица делённая на него. Для каждой компоненты. В декалях я это сделал, а для света забыл совершенно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 18-12-2021 в 19:48:

Цитата:
Дядя Миша писал:
как это выражается

Судя по всему, светильники не учитывают поворот модели (angles) и скейл. Я это понял после того, как сделал тени от точечных лайтов. Когда у модели скейл 1 и angles 0 0 0, свет и тени ложатся на модель идеально. Иначе - съезжает проекция тени тут же и аттенюация работает неправильно.

__________________
Мой мод на Xash


Отправлено Дядя Миша 18-12-2021 в 19:51:

Посмотрел, там всё еще интереснее. Оказывается для ксаш-мода этого фикса с декалями вообще нет, но для паранои он есть. В чём тут смысл - на статик с пользовательским скейлом декаль тоже ложится не оригинального скейла.
А в зависимости от размера этого статика. Если модель ужата по одной из осей, то декаль тоже ужмётся или растянется, чего естественно быть не должно. В параное, собственно, свет считается в мировом пространстве, поэтому там не нужны обратные преобразования. Но все вот эти VectorIRotate и VectorITransform они неполноценные преобразования.
Они скейл принимают всегда еденичный. Зато быстро. Поэтому надо построить m_plightmatrix с обратным скейлом. Для еденичного разницы всё равно не будет.

Чот такое попробуйте:

C++ Source Code:
// build the rotation matrix
m_pModelInstance->m_protationmatrix = matrix3x4( origin, angles, scale );
m_pModelInstance->m_plightmatrix = matrix3x4( origin, angles, Vector( 1.0f / scale.x, 1.0f / scale.y, 1.0f / scale.z ));

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 18-12-2021 в 20:16:

Цитата:
Дядя Миша писал:
Чот такое попробуйте

Увы

__________________
Мой мод на Xash


Отправлено Дядя Миша 19-12-2021 в 08:02:

Ну что увы? У нас теперь есть две матрицы. Они обе прямые, но в одной из них инверсный скейл. Значит ту вторую нужно использовать везде, где она вызвает функцию VectorIRotate или VectorITransform.

r_studio.cpp:4046

C++ Source Code:
tr.modelorg = m_pModelInstance->m_plightmatrix.VectorITransform( RI->vieworg );

вот первое место

r_studio.cpp:4048
C++ Source Code:
Vector lightorg = m_pModelInstance->m_plightmatrix.VectorITransform( pl->origin );

вот второе место
r_studio:4199
C++ Source Code:
tr.modelorg = m_pModelInstance->m_plightmatrix.VectorITransform( RI->vieworg );

Последнее для хрома. Правда хром не будет правильно освещаться на статиках, ну ничего, там всё равно нету костей, так что некритично.

И наконец в шейдерах
xash\core.pak\glsl\studiodlight_fp.glsl:87
C++ Source Code:
light *= textureCube( u_ProjectMap, -normalize( var_LightVec )).rgb;

Впрочем в последнем я не уверен, может функция сама нормализует вектор внутри.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 19-12-2021 в 08:36:

Особо ничего не поменялось. Аттенюация сменилась на обратную, теперь огромные модели наоборот видны издалека, а маленькие освещаются вплотную (раньше было с точностью наоборот).
Вот видео. Сначала тут точечный источник, закрепленный на игроке, потом показываю обычный фонарик:

https://www.youtube.com/watch?v=Pbi_Q2yph0A

Правильность наложения теней можно проверить по брашевому полу. На некоторых моделях от омнилайта она ложится правильно, потому что у них angles 0 0 0. А другие повернуты и все съезжает. Если модель лежит на боку, то тень тоже на боку будет. А от прожектора почему-то тени ложатся всегда правильно.
Видимо, потому что подход разный:

C++ Source Code:
shadow = ShadowProj( var_ShadowCoord, u_ShadowParams.xy, dot( N, L )); // прожектор
shadow = ShadowOmni( -var_LightVec, u_ShadowParams ); // динлайт

u_ShadowParams.zw, которые в диналайте, равны -pl->projectionMatrix[2][2] и pl->projectionMatrix[3][2], в параное2 так же, к слову. Видимо осталось от копипасты параноевской, так как теней от динлайтов изначально в ксашмоде не было.

__________________
Мой мод на Xash


Отправлено Дядя Миша 19-12-2021 в 10:40:

Эй-эй, так я про тени ничего не говорил, только про свет. А свет вроде как правильно начал накладываться. Он же у тебя раньше обрезался?

Добавлено 19-12-2021 в 13:40:

C++ Source Code:
matrix4x4 lightView = pl->modelviewMatrix.ConcatTransforms( m_pModelInstance->m_protationmatrix );

Возможно тут тоже следует использовать m_plightmatrix.
Да и я не вижу что ты там делаешь, я не вижу что вообще поменялось в форке, откуда я знаю, что там происходит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 19-12-2021 в 11:16:

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

Цитата:
Дядя Миша писал:
свет вроде как правильно начал накладываться. Он же у тебя раньше обрезался?


Да, он обрезался шейдером из-за if( spotDot < spotCos ) discard, на моделях со скейлом < 1. Сейчас вроде бы такого нет, но все равно скейл модели влияет - см. аттач, две модели, с виду они одинаковые, а по факту это 2 разные модели. Справа модель скейл 0.5, слева 1. С омнилайтом похожая ситуация. Они ведь должны освещаться идентично.

Цитата:
Дядя Миша писал:
Возможно тут тоже следует использовать m_plightmatrix.

Так стало еще хуже, свет от прожектора в моделях скейлом < 1 отображается точкой в оригине модели.
Цитата:
Дядя Миша писал:
Да и я не вижу что ты там делаешь, я не вижу что вообще поменялось в форке


В плане освещения вроде бы ничего критичного не менял, во всяком случае я вернул его в ксашмодовское состояние на момент 0.81 рев2. Ну разве что добавил тени от динлайтов в r_shadows.cpp. Прожектор не тронут.

Давай даже так. Я сейчас специально возьму 0.81 рев2 и буду фиксить все там. И показывать результаты.

Добавлено 19-12-2021 в 14:16:

https://youtu.be/i2YUJnMQSxM

Вот, 0.81 рев2 (клиент и сервер) с фиксами из последних постов с лайтматрицей. Та же картина.

__________________
Мой мод на Xash


Отправлено Дядя Миша 19-12-2021 в 11:54:

Если так и не разберёшься, может весной найду время.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 19-12-2021 в 14:51:

Может проще избавиться от локальных координат и сделать освещение динлайтами в мировых? Знать бы хоть где посмотреть в параное. Шейдеры выглядят плюс-минус одинаково.

__________________
Мой мод на Xash


Отправлено ncuxonaT 19-12-2021 в 16:00:

Можно завести отдельный юниформ для скейла, поворот и позицию передавать через кость и оставить в покое modelview матрицу?


Отправлено Aynekko 19-12-2021 в 16:08:

Цитата:
ncuxonaT писал:
Можно завести отдельный юниформ для скейла

Это я уже сделал, на что я только его не умножал и делил
Насчет второго, тут я уже затрудняюсь. Не разбираюсь в костях особо(

__________________
Мой мод на Xash


Отправлено FreeSlave 21-12-2021 в 22:33:

У кого-нибудь бывало, что при переходе на следующую карту нод граф создается, но с невалидными связями? (так что impulse 197 ничего не показывает).
В консоль при этом пишется "OFFGROUND!" - отсюда https://github.com/ValveSoftware/ha...nodes.cpp#L1820

Пока не определил причину, но похоже как-то связано с движением монстров в промежутке времени между загрузкой карты и созданием графа (он создается с задержкой).

В логах (.nrp файлы) всё одинаково до Walk rejection.

Пример части лога при валидной генерации:

code:
Walk Rejection: ------------------------------------------------------------------------------- Node 0: NODE_LARGE_HULL step 448 NODE_LARGE_HULL step 448 NODE_SMALL_HULL step 624 Rejected Node 35 - Unreachable by Any Hull


Та же нода в случае OFFGROUND ошибки:
code:
Walk Rejection: ------------------------------------------------------------------------------- Node 0: NODE_SMALL_HULL step 0 NODE_SMALL_HULL step 0 NODE_SMALL_HULL step 0 NODE_SMALL_HULL step 0 NODE_SMALL_HULL step 0 NODE_SMALL_HULL step 0 Rejected Node 35 - Unreachable by Any Hull

__________________
I'm on github
I'm on opendesktop.org


Отправлено Crystallize 22-12-2021 в 16:44:

Я в Fitzquake столкнулся с парой странных вещей. Например bound не работает, хотя никаких ошибок нет, просто не даёт эффекта. Или VectorAngles с какого-то момента стал корруптить тот компонент вектора который в коде пишется первым. Второй компонент пишется нормально. Причем если писать сначала в локальную переменную а потом из неё в компонент вектора, то ничего не корруптится, просто получается ноль. Я сейчас мучаю Cam_UpdateForDrawing.


Отправлено FreeSlave 22-12-2021 в 16:52:

В аттаче карта. Барник стоит посреди пустой комнаты, но покрывается желтыми частицами как если бы застрял (stuck in wall--level design error). Похоже, происходит так, только если он стоит достаточно близко к центру карты.
Собственно, желтые пятна не проблема, но хотелось бы узнать, почему игра считает, что он застрял?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 22-12-2021 в 17:04:

Цитата:
Crystallize писал:
Например bound не работает, хотя никаких ошибок нет, просто не даёт эффекта

Что такое bound и какие ошибки он должен выдавать? И какой эффект ты ожидаешь?

Цитата:
Crystallize писал:
Или VectorAngles с какого-то момента стал корруптить тот компонент вектора который в коде пишется первым.

Это называется NAN на входе - NAN на выходе. Вот как это называется.
Наверное и bound не работает, потому что ты ему NAN суёшь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 22-12-2021 в 17:16:

Ну bound это мини функция которая ограничивает число между двумя крайними значениями: bound(a, x, b)


Отправлено Aynekko 22-12-2021 в 17:34:

Цитата:
FreeSlave писал:
Барник стоит посреди пустой комнаты, но покрывается желтыми частицами как если бы застрял

Барник слишком высоко над землей.

__________________
Мой мод на Xash


Отправлено FreeSlave 22-12-2021 в 17:52:

Цитата:
Aynekko писал:
Барник слишком высоко над землей.


Я его и на землю ставил, и в половину той высоты, что сейчас на карте. Результат один и тот же.

Зато если от центра карты отодвинуть подальше, то всё норм.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 22-12-2021 в 17:54:

Я его просто вниз опустил и скомпилил, не было желтых партиклей о.о

__________________
Мой мод на Xash


Отправлено FreeSlave 22-12-2021 в 18:04:

Aynekko, а ты перекомпилировал оригинал (без изменения высоты)? Может, зависит от компиляторов. Ну и я запускаю на голдсорсе на обычной ХЛ, если что.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Aynekko 22-12-2021 в 18:23:

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

Добавлено 22-12-2021 в 21:23:

Ага. Проверил со всех сторон. Партикли возникают, если барник находится в районе 32 юнитов от центра. Со всех сторон, если смотреть на виде сверху. Ставил его на расстоянии 31-32-33 по всем осям. Высота всегда была одинаковая - 3 юнита от пола. Интересно. Наверное, какая-то движковая особенность.

__________________
Мой мод на Xash


Отправлено Дядя Миша 22-12-2021 в 20:18:

Цитата:
Crystallize писал:
Ну bound это мини функция которая ограничивает число между двумя крайними значениями: bound(a, x, b)

ну во первых не функция, а макрос. а во вторых сломаться может в единственном случае - если ты подаешь в нее NAN.

Цитата:
Aynekko писал:
Партикли возникают, если барник находится в районе 32 юнитов от центра

там наверное торчит этот тестовый хулл для нодов.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 23-12-2021 в 01:04:

Цитата:
Aynekko писал:
Ага. Проверил со всех сторон. Партикли возникают, если барник находится в районе 32 юнитов от центра. Со всех сторон, если смотреть на виде сверху. Ставил его на расстоянии 31-32-33 по всем осям. Высота всегда была одинаковая - 3 юнита от пола. Интересно. Наверное, какая-то движковая особенность.



А можешь скопировать карту из jmf в rmf и скомпилить? (надо только убедиться, что координаты те же и барник по-прежнему около центра). Для меня это внезапно исправило проблему. Может, что-то не так с геометрией в jmf?

Прикладываю зипник с jmf, rmf и сгенеренными из них .map файлами.

Добавлено 23-12-2021 в 04:04:

Update: на карте скомпиленной из rmf тоже воспроизводится всё-таки. Где-то я накосячил при проверке.
Похоже проблема действительно в тестовом хулле, как и предположил Дядя Миша, и проявляется только если нод граф ещё не создан.
Ради теста выставил в CTestHull::Spawn pev->solid = SOLID_NOT, перекомпилировал карту, чтобы у вызвать перегенерацию графа, и проблема исчезла.
Возможный фикс - создавать тестовый хулл с SOLID_NOT и менять солидность на SOLID_SLIDEBOX в CTestHull::DropDelay

__________________
I'm on github
I'm on opendesktop.org


Отправлено Crystallize 25-12-2021 в 21:13:

Цитата:
Дядя Миша писал:
Это называется NAN на входе - NAN на выходе. Вот как это называется.
Наверное и bound не работает, потому что ты ему NAN суёшь.

Если вписать printf внутрь самой VectorAngles, то видно, что туда заходит корректный вектор.


Отправлено Crystallize 30-12-2021 в 11:57:

В общем там в матчлибе я не объявил в хидере новую функцию. И потом когда я ее использовал в коде, парой строчек ниже там была эта VectorAngles которая и стала давать порченый результат.


Отправлено hgrunt_2020 16-01-2022 в 13:57:

Вопрос такой вылез, в ксаше есть папка scripts, там можно сделать фон в меню виде карты, но какие ещё есть скрипты по мимо того же меню?

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Aynekko 24-01-2022 в 17:53:

Не могу никак побороть баг с лучом трипмины. На другом конце карты есть одна трипмина, луч у нее активируется через 2.5 секунды. Естественно не в PVS. Вот две ситуации:

1) Через 5 сек вылетаю с ноуклипом, лечу туда. Луч есть.
2) Лечу к месту трипмины по карте, НЕ вылетая за ее пределы, чтобы не задеть PVS мины раньше времени. Прилетел к мине, луча нет.

Изредка бывает, что во второй ситуации луч таки есть. Процентов 10.

На клиенте есть функция R_AddEntity, где проверка на ET_BEAM. Когда луча не видно, эта проверка не срабатывает. Значит луч не приходит на клиент вообще.

Сделал вот так. Это в MakeBeam у трипмины

C++ Source Code:
1
m_pBeam = CBeam::BeamCreate( g_pModelNameLaser, 10 );
2
if( m_pBeam )
3
{
4
  m_pBeam->pev->effects |= EF_SKIPPVS;
5
  m_pBeam -> PointEntInit( tr.vecEndPos, entindex() );

EF_SKIPPVS я завел, чтобы пропускать ENGINE_CHECK_VISIBILITY.

И вот опять ситуации:
1) спавнюсь на карте. Через 2.5 секунды клиент рапортует, что нашел луч. ОК.
2) перехожу с другой карты на эту. После перехода через 2.5 секунды клиент видит луч. ОК.
3) перехожу с другой карты на эту. После перехода через 2.5 секунды клиент НЕ видит луч. ???

Я не понимаю, от чего вообще это зависит. Даже пропуск PVS не помогает (трипмине я тоже ставил).
И ведь почему-то с env_laser таких проблем никогда не было.

__________________
Мой мод на Xash


Отправлено Aynekko 25-01-2022 в 19:29:

В общем решил, что я смогу обхитрить мину и завел ей спаунфлаг "стартовать выключенной", чтобы активировать по триггеру (по тихому и без звуков), когда игрок гарантированно будет в PVS. И это не сработало

- спавнюсь, лечу к мине ноуклипом, запускаю - луч есть;
- спавнюсь, лечу к мине по карте, не вылетая за пределы карты. Вижу ее в прямой видимости, активирую. Луча НЕТ. MakeBeam срабатывает - вывел в консоль. А луча нет... Делаю сейврестор, луч появляется.

Это какой-то несусветный бред. Если раньше я мог хоть идентифицировать где багуется примерно, то сейчас я даже примерно не могу понять, что не так.

Добавлено 25-01-2022 в 22:25:

Но вот одну деталь обнаружил. Спавнюсь и сразу же делаю сейврестор. То есть мина еще не успела сделать луч. И о чудо, луч есть всегда. Вроде как. Еще потестю.

Добавлено 25-01-2022 в 22:29:

Да, так и есть.
Я вот знаком с ситуацией, когда что-то не работает после сейврестора. Но чтобы не работало до сейврестора - это просто вау.

__________________
Мой мод на Xash


Отправлено Ku2zoff 25-01-2022 в 20:17:

Aynekko не знаю, связано ли это с твоей проблемой, но порядок строк в AddToFullPack сначала отсекает энтитю по PVS, а потом уже задаёт ей тип ENTITY_BEAM. Который, скорее всего, особым образом обрабатывается движком.

C++ Source Code:
1
// Ignore if not the host and not touching a PVS/PAS leaf
2
// If pSet is NULL, then the test will always succeed and the entity will be added to the update
3
if ( ent != host )
4
{
5
  if ( !ENGINE_CHECK_VISIBILITY( (const struct edict_s *)ent, pSet ) )
6
  {
7
    return 0;
8
  }
9
}

Ниже такой код:
C++ Source Code:
1
state->entityType = ENTITY_NORMAL;
2
 
3
// Flag custom entities.
4
if ( ent->v.flags & FL_CUSTOMENTITY )
5
{
6
  state->entityType = ENTITY_BEAM;
7
}

Попробуй назначение state->entityType разместить перед ENGINE_CHECK_VISIBILITY.
Ещё момент. Как ты используешь новый спаунфлаг "стартовать выключенной"? При установленном флаге не срабатывает PowerupThink? А по триггеру ты уже запускаешь этот тчинк?
Карту можешь скинуть? Хочу проверить, есть ли подобный баг у меня.


Отправлено Aynekko 26-01-2022 в 09:27:

Цитата:
Ku2zoff писал:
Попробуй назначение state->entityType разместить перед ENGINE_CHECK_VISIBILITY.

Я писал об этом в посте до этого, ставил проверку и лучу и мине для пропуска этого условия.
Цитата:
Ku2zoff писал:
При установленном флаге не срабатывает PowerupThink? А по триггеру ты уже запускаешь этот тчинк?

Именно так. m_flPowerUp ставлю при этом 0, чтобы луч появился моментально.

В общем, я разобрал свою карту по брашам и сузил проблему. Если игрок заденет trigger_once до того, как активируется луч мины - луча не будет. Сделал тестовую карту - мина на стене в прямой видимости, спаун игрока находится внутри trigger_once. Триггер полностью пустой. Он ничего не активирует.

Сразу стоит сказать, что проблема только в моем моде. В ванильном ксашмоде или голде такого не наблюдается. Так что буду искать косяк.
Ну а ситуации такие:
- игрок спавнится в пустом trigger_once. Мина включается, и луча нет.
- спавн в trigger_once, у него стоит галка No clients. Луч появляется.
- спавн в trigger_push. Луч есть.
- спавн вне trigger_once. Триггер не трогаю. Луч есть. Трогаю триггер, бегаю по карте, убегаю из PVS мины, луч есть, все ОК.
- спавн вне trigger_once. Перед зарядом мины трогаю триггер. Луч не появляется.
- спавн в trigger_multiple. Луч есть.

ну что же, будем искать.

Добавлено 26-01-2022 в 12:00:

Проблема в этом:
C++ Source Code:
REMOVE_ENTITY(ENT(pev));

trigger_once удаляет сам себя. Стал тестить дальше, у меня есть команда ent_delete, запускающая UTIL_Remove по таргетнейму. Если я удаляю триггер, то луч не появляется. А вот если удаляю func_wall или точечную энтитю, то все норм. Ухх, капец.

Добавлено 26-01-2022 в 12:27:

Нашел баг. Недавно в CreateBaseline фиксили недостающую строчку
C++ Source Code:
baseline->effects = entity->v.effects;

Убрал ее и бага больше нет. Вопрос знатокам. Какого?

__________________
Мой мод на Xash


Отправлено Дядя Миша 26-01-2022 в 10:06:

Цитата:
Aynekko писал:
Недавно в CreateBaseline фиксили недостающую строчку

Вы её по какому принципу фиксили?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 26-01-2022 в 10:14:

Мне сказали, чтобы для статиков отключать тени через EF флаг.

__________________
Мой мод на Xash


Отправлено Дядя Миша 26-01-2022 в 11:33:

Ну сделай проверку там. Если playermodelindex равен нулю - это значит спавнится статик.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 26-01-2022 в 11:49:

Да, баг больше не проявляется. Надеюсь правильно поставил

C++ Source Code:
1
if ( player )
2
{
3
  baseline->mins		= player_mins;
4
  baseline->maxs		= player_maxs;
5
  // ... и далее
6
}
7
else
8
{
9
  baseline->mins		= entity->v.mins;
10
  baseline->maxs		= entity->v.maxs;
11
  baseline->sequence		= entity->v.sequence;
12
  baseline->colormap		= entity->v.colormap;
13
  baseline->modelindex	= entity->v.modelindex;
14
  baseline->movetype		= entity->v.movetype;
15
  if( playermodelindex == 0 )
16
    baseline->effects = entity->v.effects;
17
  // ...


Добавлено 26-01-2022 в 14:49:

Вообще, очень странный баг, это ж надо было. И как я его отрыть еще смог)) пришлось все карту очистить от энтитей, пока не сузил проблему до триггеров)

__________________
Мой мод на Xash


Отправлено SNMetamorph 26-01-2022 в 12:18:

Цитата:
Дядя Миша писал:
Ну сделай проверку там. Если playermodelindex равен нулю - это значит спавнится статик.

А почему без этого условия баговало? В чем там суть проблемы была?

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 26-01-2022 в 12:26:

Цитата:
Aynekko писал:
Надеюсь правильно поставил

Правильно.

Цитата:
SNMetamorph писал:
А почему без этого условия баговало?

Не надо в вазелин слать содержимое эффектов со старта. Почему не помню.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SNMetamorph 26-01-2022 в 12:32:

Цитата:
Дядя Миша писал:
Не надо в вазелин слать содержимое эффектов со старта. Почему не помню.

Это какая-то специфика того, как работает дельта-кодирование?
Или это ТОЛЬКО effects касается?

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 26-01-2022 в 14:46:

там какая-то часть эффектов - совсем не эффекты, очевидно же.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 22:29. Страницы (2): [1] 2 »
Показать все 3886 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024