![]() |
Страницы (2): [1] 2 » Показать все 3950 сообщений этой темы на одной странице |
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)
нуб вопросы от <censored> и других нубов
всем привет
народ помогите у меня куча проблем
первая проблема в uzi
почему они стреляют но не оставляет следы и не видны спрайты выстрела
проблема номер два в fnh
почему они стреляют как надо в двиге hl а в Xash3D все не так как надо короче смотрите видео видео
проблема номер три че за ошибка gl_upload16: s&3 как исправить ?
Добавлено 23-01-2015 в 06:11:
XaeroX не закрывай тему
__________________
в текстурах все норм может быть в спрайтах проблема ?
Может быть.
__________________
у меня походу с hud.txt пробдема
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
первое и второе готово
осталось исправить ошибку
че не у кого не была эта ошибка ?
***FantoM***
Написал же уже. Проверяй текстуры и спрайты на предмет размеров, не кратных 8.
__________________
у меня еще один вопросЪ
как сделать декали не вадом а тгашкой
***FantoM*** кастомный рендерер прикрутить. Вон в паранойе и в тринити есть. А лучше спрайтами сделай.
Ku2zoff
на спрайтах поподробней
народ как понять декали спрайтом ?
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
народ у меня ещк один вопрос
почему в моей модефикации не отображаются руский буквы
что делать как исправить
Добавлено 26-01-2015 в 05:21:
по моему в поранойе и в кс есть
модификации, русские буквы, паранойе.
Добавлено 26-01-2015 в 02:33:
***FantoM***
У тебя стим, нонстим?
__________________
ㅤ
нонстим
***FantoM***
http://hlfx.ru/forum/showthread.php?threadid=1827
не оно?
a-kush-er
на моем моде не идет
проверено на won и Non steam
***FantoM*** так у вас, батенька, кодировка неправильная
__________________
-Brain is dead-
KiQ
как понять неправильная
как исправить
***FantoM***
Например, так
__________________
Мои русификаторы и другие полезные файлы здесь
ЗАПОМНИТЕ, ПОИСК — БЛИЖАЙШИЙ ПУТЬ К ИСТИНЕ
KiQ У меня вообще Unicode patch стоит на халфе, он как бы для кс, но и во всех модах русский работает, халфа но стим 1.1.2.1 build 4554
SteamPlay43
этот патч вроде на метамод устанавливается и только имена и чат на русский
а мне надо русские буквы из titles.txt
SteamPlay43 для HL1121 не нужно никаких патчей - там и так везде UTF-8.
Про titles.txt я уже не помню. Надо потом посмотреть будет.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ 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 год
всем здарова
у меня есть еще вопрос как сменить шрифт в hl
какие программы для этого нужны ?
народ для чего нужен fmod.dll
какие эффекты создает ?
***FantoM*** Звуки качественее играется. И много функций для звука.
ЗЫ. Поправте, если я что-то путаю.
master07
Ясно
в каком файле изменить слоты и позиции для оружия
хочу поставить вместо фонарика в правую сторону
***FantoM*** ты ленивый или тролль? Используй Find in files в студии. ammo.cpp, там копай.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Ku2zoff
я не через студи делаю
я через блокнот
Добавлено 17-02-2015 в 04:50:
с студиоай у меня пробремы
у меня походу с виндовс что то
из за этова по моему не включается
Добавлено 17-02-2015 в 13:38:
народ помогите как передвинуть слоты и позиции для оружия на место фонарика
сам пытайся и не смог
гыгы... студия 2010 может намертво положить микрософт инсталлер, виндовс и сделать так, что вы не сможете не только переставить ВС, но и вообще ничего... и никогда... ХА-ХА-ХА-Хааааа! (но я не скажу, когда это случается)
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
народ помогите как передвинуть слоты и позиции для оружия на место фонарика
В исходниках ищи по ключевым словам SLOT и POSITION. По-моему, в weapons.h есть дефайны типа WEAPON_SLOT #
WEAPON_POSITION #,
где WEAPON_ - название конкретного оружия (Глок, Гаусс и т.п.)
Попробуй поменять цифры. После этого перекомпить и сервер, и клиент.
Фонарик никак не передвинешь, ибо ФОНАРИК != ОРУЖИЕ.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB]
я тебя не понял
Добавлено 18-02-2015 в 11:40:
я хотел перекинуть слоты на право где у меня был значок фонарика
по моему это в аммо цпп в int CHudAmmo::Draw(float flTime)
/
Тебе просто *ПЕРЕДВИНУТЬ* графику слотов оружия надо штоль?
Ну, тогда да, надо поменять координаты прорисовки спрайтов оружия.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
***FantoM*** в ammo.cpp
функция:
int CHudAmmo::DrawWList(float flTime)
смотри все "х" и "у" и меняй значения.
Там даже комментарий до функции есть.
// |
// Draw Weapon Menu |
// |
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:
НАРОД ПОЧЕМУ ТЕНИ НЕ РАБОТАЮТ В СЕТИ
***FantoM*** Для мультиплеера вообще лучше не делать эти тени. очень фпс жрут.
Компиль через визуалку и проблем не будет.
***FantoM*** Место фонарика указана по координатам "х" "у". Сам меняй и проверяй в игре.
master07 У меня даже после компила без ошибок их в игре не было) Наверное во всём была виновата шестая студия)
и еще как сделать такой еффект
или где найти тутор
***FantoM*** зачем тебе воду в фольгу превращать?
__________________
-Brain is dead-
***FantoM***
Отрисовать кубамапу или зеркало, а потом преломлять это изображение с помощью нормальки.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
народ как сделать хромовую поверхность но не на моделах а на брашах или на пример текстура называния chrometextures как ее сделать хромовай
***FantoM*** посмотри в ксаше
__________________
-Brain is dead-
KiQ
а че в ксаше есть
сейчас посмотрю
Добавлено сегодня в 04:40:
народ по моему в ксаш нет
если ест то помогите найти
где искать ?
Добавлено 24-02-2015 в 05:04:
хочу сделать хром на func_water
Ku2zoff Ложил, наверное потому что у меня в моде стандартные стен сильные тени уже стоят)
Добавлено 24-02-2015 в 17:09:
Ku2zoff А как отвязать opengl32.dll? А то не хочу чтобы меня потом за неё в кс 1.6 банили)
__________________
__________________
народ help
как сделать Шейдерню воду в халф-лайф
половино интернета пересмотрел не где нет
хотя один тутор быль на
http://detler.ucoz.ru/publ/shejdern...ast1/10-1-0-197
но второй части нет
ругается на cl_util.h и textures.h как поправить ?
Ну зачем, ЗАЧЕМ Шедевры 2.0 в ХЛ 15-летней давности?
Прикручивать Шедевры(тм) - дело нетривиальное. С такими познаниями матчасти и подробными логами тебе не светит
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
ㅤ
__________________
XaeroX Которые на r_shadows 1 включаются
ДОРОГИЕ форумчане
помогите пожалуйста как сделать анимированный спрайт
народ помогите как сделать анимированный спрайт в это туториале
http://hlfx.ru/forum/showthread.php...15&pagenumber=1
***FantoM*** А зачем? Пульсирование проще альфой сделать.
__________________
Base Defense on Steam, ModDB
PLut
если честно то мне не этот эффект нужен
мне нужен зернистость на экране http://hlfx.ru/forum/showthread.php?s=&threadid=2321 но там чем больше значения SPR_Set(hspr, 50, 50, 50);
тем светлее вокруг
а мне надо чтоб без света
чтобы просто перед экраном
Добавлено 13-03-2015 в 02:23:
уже не надо
***FantoM*** А 255 255 255 не пробовал? Тогда будет под цвет спрайта, как у прицелов в хл)
Добавлено 13-03-2015 в 20:24:
***FantoM*** И почему ты ничего не доводишь до конца? Сначала бы поэкперементировал, а потом уже на форум писал.
***FantoM*** Почему тогда пишешь, что уже не надо? И ты просил чтобы света не было, только спрайты, а теперь ещё возмущаешся...
Добавлено 14-03-2015 в 00:15:
***FantoM*** А для прозрачности спрайтов есть волшебный SPR_DrawAdditive
***FantoM*** Сразу бы так, а то зря людям голову морочишь.
XaeroX помоги как ты сделай font спрайтами
Добавлено 14-03-2015 в 20:46:
и почему эту строчку закомментировали
// m_hsprFont = LoadSprite("sprites/%d_font.spr");
Ku2zoff
а в какой версии не помнишь?
__________________
***FantoM*** неа. Если спирит, то 1.7 и новее. Если ксаш, то сейчас наверное официальную ссылку на скачивание не найдёшь. Щас гляну, может у меня что-то осталось.
Так, у меня ничего нету. Но ты погугли. В моде для включения шрифта используется квар hud_altfont 1. В каком моде такой найдёшь, тот тебе и нужен.
Из ttf же качественнее выглядит, и сделать несложно
__________________
-Brain is dead-
KiQ Как в хл2?
KiQ
Если бы это было несложно - наверное уже везде было бы, и в хлфх, и в ксаше?
В том-то и дело, что сложно. Как минимум, левую либу подключать надо.
__________________
XaeroX В hl2 beta это уже было, перенести никак?
SteamPlay43
Перенеси, а мы дружно оценим.
__________________
народ а можно ли запустить opengl32.dll не из папки игры а из папки мода на пример Half-Life\папка_мода\opengl32\opengl32.dll
Можно, но вызовы хакнутой дллки (которые делает движок, а не клиент, а движок понятия не имеет, что дллка хакнутая) требуют, чтобы opengl32.dll лежала в корне халфы. Поэтому что-нибудь из графических плюшек отвалится и не будет работать.
Ku2zoff
понятно
Ku2zoff Вроде на форумах аранжевогосмента про это писали) Он у них так и работает
народ у меня ошибка в туториале Создаем реалистичный фонарик от от дяде мише
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:
не буду делать этот реалистичный фонарик
***FantoM*** молодец, всё правильно сделал)
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
***FantoM*** на паранойе мне кажется не заработает.
P.S Вот на кой чъорт нужно пихать всё подряд?
Superuser8
почему ?
у меня на паранойе работает
Добавлено 19-03-2015 в 03:37:
товарищи у меня вопрос
короче так
когда гильзы падают на землю они исчезают через несколько секунд
как увеличить это время ???
Ku2zoff
1 этот фонарик криво смотрится в SDK и в паранойе
2 я не тупо копипаститу
3 для мульта в паранойе надо много чего дописывать и без этова фонарика
4 я уже понял почему фонарик не туда светил там надо было немного модель через MilkShape 3D поправить
Добавлено 19-03-2015 в 14:05:
товарищи у меня еще вопрос
когда гильзы,разбитые ящики,стекла и тп. падают на землю они исчезают через несколько секунд
как увеличить это время ?
Всё просто.
Если делаешь эффект на сервере, то смотри в настройках TE_BREAKMODEL,если на клиенте, то, соответственно, лезь в соответствующие настройки EjectBrass ---> TempModel
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den
спасибо помог
еще вопрос
как уменьшить скорость игрока
Добавлено 19-03-2015 в 21:21:
где посмотреть ?
Добавлено 19-03-2015 в 21:22:
в player.cpp ?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
еще настройки скорости игрока есть в pmmove, что в папке pmshared
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
народ помогите
я хотел сделать зажигалку как в invasion
и у меня у меня проблема
не могу прикрепить спрайт огня к зажигалке
***FantoM*** посмотри как muzzleflash сделаны
__________________
-Brain is dead-
и так значит
я посмотрел как muzzleflash сделаны
теперь у меня на зажигалке но теперь
как поменять спрайты в muzzleflash на огонек
искай по слову muzzleflash.spr но ничего не найдено
Ku2zoff
Лучше напиши тутор по инфракрасному зрению из того же инвазиона.
Только чур без читов в виде команд OpenGL, там оно и под D3D работает.
__________________
***FantoM*** да я же принцип имел в виду
__________________
-Brain is dead-
Ku2zoff
народ помогите
как сделать так чтоб при вторичной атаке
чтобы перед экраном тупо модель прицела была
Ku2zoff
а ну ка давай второй способ подробнее
Ku2zoff
помоги у меня проблема в прицеле
то есть я не могу отключить его
короче вот тебе видео
https://www.youtube.com/watch?v=1I1...eature=youtu.be
Код SecondaryAttack в студию.
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;
}
***FantoM*** вот фигни наворотил, и удивляешься, почему глючит.
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 | } |
Ku2zoff
всё работает
***FantoM*** задержки перед выстрелом не слишком большие при переключении? При убирании оружия прицел выключается? Видео залей, мне интересно. Был бы дома, скомпилил бы сам и проверил.
Ku2zoff
вот https://www.youtube.com/watch?v=rKH...eature=youtu.be
у меня еще один вопрос
как правильно вызывать серверные функций с клиента
приведите примеры
gEngfuncs.pfnClientCmd( "mycommand\n" ); |
или |
gEngfuncs.pfnServerCmd( "mycommand\n" ); |
else if ( FStrEq( pcmd, "mycommand" ) ) |
{ |
ClientPrint( pev, HUD_PRINTCONSOLE, "Received a client command.\n" ); |
} |
Тут не надо ничего серверного вызывать с клиента. Наоборот надо сделать отправку мессаги или эвента на клиент при разбивании брейкабли, при условии, что материал == matGlass. При создании карты указывать в качестве модели гибсов такой брейкабле невидимую модель, например null.mdl. Ну а сам эффект кодить на клиенте. При написании клиентской части я бы ориентировался на код "разбрызгивания" искр гаусса, там как раз спрайты-темпэнтити заюзаны. А вообще, стоит покопаться в структуре pEfxAPI, там много полезных эффектов есть, которые в халфе не заюзаны, или заюзаны не на 100%.
help
***FantoM*** на клиенте в void EV_FireMP5( event_args_t *args ) ищи строчку V_PunchAxis( 0, gEngfuncs.pfnRandomFloat( -2, 2 ) );
Вот она и шатает экран, закомментируй её и будет тебе щастье
люди помогите
я хочу немного уменьшить спрайт крови
в 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
***FantoM***
Там int
#define WRITE_BYTE (*g_engfuncs.pfnWriteByte)
void (*pfnWriteByte) (int iValue);
ComradeAndrew
понятно
помогите сделать кастомные декали
хотел немного изменить этот http://hlfx.ru/forum/showthread.php?s=&threadid=3454 туториа
сделать его к себе мод но как видно я не оч в кодинге
что мне там надо сделать
короч так я начал переносить декали из паранои
и вдруг у меня ошибка
что эта ошибка от меня хочет ?
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. |
***FantoM*** вот попробуй сам разобраться, правда. Ну это же банальная ошибка
__________________
-Brain is dead-
***FantoM***
По какой книге ты изучаешь С++?
Уже довольно много времени прошло, пора бы продемонстрировать народу какие-то результаты.
__________________
***FantoM***
Не забивай себе голову STL, в халфе его нет.
И пожалуйста, не задавай на форуме вопросы, ответы на которые становятся тебе самому очевидными через пару часов. Здесь форум по HLSDK, а не по основам С++.
__________________
XaeroX ну, может только слегка http://hlfx.ru/forum/showthread.php?s=&threadid=3531
__________________
-Brain is dead-
KiQ
Так Дядя Миша нас давно покинул.
__________________
люди помогите
что за фигня с 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
да это понятно но как исправить
***FantoM***
какая венда? попробуй в режиме совместимости запустить
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
***FantoM***
Я думаю тебе придётся качать 2010 студию и СДК под неё. У шестерки действительно есть проблемы с совместимостью, порой непредсказуемые.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
Или поставь vs 10, как тебе посоветовали выше, с обновленным sdk.
Не пытайся искать совместимость там, где её нет. Используй заведомо проверенные варианты разработки.
__________________
XaeroX
Да, не решит. Но я думаю есть решения этой проблемы проще чем переустановка OS.
ComradeAndrew
Вроде нету.
Я просто смирился, например.
__________________
__________________
***FantoM*** а асли открывать проект в уже запущенной ide, тоже вылетает?
Ku2zoff
да вылетает
***FantoM*** сервиспак стоит?
__________________
-Brain is dead-
KiQ
а что эта ?
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. Не возился с сейв/рестором. Уверен, что после загрузки сейва огонёк гореть не будет.
Видео:
__________________
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den
Ну ты в invasion играл?
Или хотя бы в doom3?
__________________
__________________
ㅤ
Пусть начнёт с видео.
Я, помнится, выложил видео вировок и продвинутого мовевитча из хлфх 0.7, мне накидали дислайков, ну я сделал выводы, что народ прекрасно без этого обойдётся.
__________________
__________________
ㅤ
__________________
По зажигалке:
Теперь огонёк сделан православно, тэмпентитей. То, что он отстаёт на видео, это из-за редких обновлений ориджина. Скоро доделаю как следует, отставать не будет.
Видео:
Ku2zoff
отлично смотрится
Добавлено 06-04-2015 в 00:48:
и кстати мне интересно че за карта
что та знакомая
Ku2zoff
Православно - привязывать спрайт к модели через аттачмент.
__________________
Лойс за проделанную работу. Действительно необычно и интересно.
__________________
ㅤ
Карта de_torabora
Добавлено 06-04-2015 в 01:21:
Если привязал к аттачу - чего ж она тогда отстаёт?
__________________
Темпэнтитя отстаёт от аттачмента. При рисовании через триапи отставания нет. Как ещё можно нарисовать спрайт в 3д средствами клиентской дллки или движка? Больше ничего на ум не приходит. Может создать простую клиентскую энтитю?
Добавлено 06-04-2015 в 10:38:
Софтвар у меня вообще почему-то не работает, не могу протестировать.
Ku2zoff
а разве в софтваре кто то играет ?
***FantoM***
Поддержка софтвара - вопрос чести.
Не все поймут, немногие оценят.
__________________
Тада! Отрисовка через триапи с небольшой примесью говнокода для координат спрайта и света. Свет пока что клиентский.
Ku2zoff нехилый свет такой
__________________
-Brain is dead-
А теперь о грустном: не работает в софтваре, потому что триапи. ЧСХ, в Инвазионе во всех режимах пашет, значит не триапи. Что они там намудрили ХЗ, но у меня темпэнтитя R_TempSprite обновляет ориджин с опозданием. Наверное попробую нарисовать луч, как у эгона, ведь его лучи не отстают от взгляда игрока.
Ku2zoff
В софтваре работает триапи в 3д.
__________________
XaeroX проверил, работает.
Добавлено 07-04-2015 в 00:40:
UPD: доделал, работает норм в софтваре.
Добавлено 07-04-2015 в 00:59:
Доделаю искорки для анимации, когда не зажигается, и сделаю серверный свет для всех игроков в мульте. Может быть сделаю спрайт от третьего лица. Ну а потом причешу всё это и выложу в виде тутора.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
__________________
Ku2zoff
Если плющит при включённых локальных пушках - значит, где-то несовпадение кода сервера и клиента. Как следствие - нарушение предиктинга.
__________________
Ku2zoff Искры легко стандартным эвентом в анимации сделать. Зажигалка крутая
__________________
Base Defense on Steam, ModDB
PLut если бы я ставил целью сделать зажигалку с новой моделью, так бы и поступил. А вообще, я и без эвента туда маззлфлеш прикрепил. Только он слишком большой, чтобы был похож на искорку.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den
А ещё пароль можно сбросить, чтобы каждый раз не логиниться.
И антивирус отрубить, ибо ресурсы жрёт.
__________________
А я вообще сижу без антивируса, UAC и обновлений.
Запускаю exe только с официальных сайтов. Если exe вызывает сомнение - пускаю его в виртуальной машине и кидаю его на virustotal.com. Крякнутым ничем не пользуюсь. Флешем в браузере не пользуюсь (HTML5 уже нормально работает). Дырявой Java в браузере не пользуюсь. За четыре года подобного использования винды всё нормально и ни одного вируса не поймано.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
Ku2zoff Очень красиво получилось. Мне, например, понравилось даже больше, чем в оригинале, в Invasion'е.
у меня есть несколько вопросов про формат .aur
1 что это такое ?
2 как их создавать ?
3 если не трудно объясните как он действует ?
4 и с чем его едят ?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den
какую ?
Добавлено 08-04-2015 в 18:02:
и где скачать ?
***FantoM***
http://hlfx.ru/pub/pfxEd.exe
__________________
***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!
__________________
ㅤ
__________________
-Brain is dead-
http://hlfx.ru/forum/showthread.php?s=&threadid=4573
__________________
ㅤ
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
почему в Paranoia не светит фонарик в MP
как исправить ?
__________________
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den
UAC не справляется с угрозами, а предостерегает пользователя о потенциальных угрозах. Если ты нажал "Да" - никакой UAC не спасёт. Но задуматься он заставляет. И главное - препятствует самовольному запуску левого софта. В былые времена, бывает, вставишь дискету - а там авторан, и готово, сотни вирусов расползаются по винту.
__________________
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
еще раз вопросЪЪЪ
почему в Paranoia не светит фонарик в multiplay
__________________
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
еще вопрос
как сделать смену карт в MultiPlayer
как в Decay и Sven Co-op
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den
не работает
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den
не работает даже в обычной hl
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
***FantoM*** уже сто раз об этом говорили, используй поиск
Superuser8
я уже искал на форумах по словам
coop
co-op
кооператив
куп
кооп
***FantoM*** и как результат? Неужто ничего не нашёл?
Superuser8
почему вот
http://hlfx.ru/forum/showthread.php...&highlight=coop
там где fire64 писал
1. mp_allowmonsters 1 надо прописать в конфиге сервера, тогда при запуске, монстры будут на карте.
2. Да, надо сделать на карте несколько стартовых точек, так как в противном случае игроки будут появляться друг в друге и либо сразу дохнуть, либо застревать.
3. Там нужно дизассемблировать сервер и пропатчить функцию ChangeLevelNow у энтити trigger_changelevel и тд и тп
я нне совсем понял как пропатчить вызов CHANGE_LEVEL
если не трудно объясните
***FantoM*** окей)
По третьему пункту, объясняю:
Открываем файл triggers.cpp
И находим
void CChangeLevel :: ChangeLevelNow( CBaseEntity *pActivator ) |
// Don't work in deathmatch |
if ( g_pGameRules->IsDeathmatch() ) |
return; |
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( st_szNextMap, st_szNextSpot ); |
еще одна проблема
я хотел немного изменить 9mmhandgun сделать так чтоб
на одно нажатия на кнопки мыши
один выстрел
я сделай так
1 | void CGlock::PrimaryAttack( void ) |
2 | { |
3 | if(! ( m_pPlayer->m_afButtonPressed & IN_ATTACK )) return; |
4 | GlockFire( 0.001, 0.003, TRUE ); |
5 | } |
***FantoM*** cl_lw 0
__________________
-Brain is dead-
KiQ
работает
а че эта за команда ?
***FantoM***
Одна из команд предиктинга. В ксаше он недописан.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
***FantoM*** клиентские пушки
__________________
-Brain is dead-
Superuser8 я думаю, ты будешь пренеприятнейше удивлён количеством действий, которые надо совершить ещё, чтобы получить более-менее годный кооператив...
(подсказывать не буду, пока что это ноу-хау )
***FantoM*** какой-то анальынй способ. можно было просто nextPrimaryAttack выставить в 0 или -1...
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ ну вот зачем ты так, братишка?!! Я же спать не буду теперь ночами!
Да я же вижу тебе злые monster_flyer мешают!
Хочешь я info_node_air создам, они сюда прилетят - и мы их убьём! И спать будет хорошо тебе.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
еще один вопрос
можно ли худ рисовать на прямую спрайтами а не через hud.txt ?
и можно ли вместо спрайта сделать худ моделью ?
***FantoM*** "А можно ли чистить туалет вилкой?" - Да можно, но зачем?
***FantoM*** худ моделью? В стиле третьей кваки что-ли? Или кукурузиса?
__________________
-Brain is dead-
***FantoM*** без hud.txt можно и моделью можно. Только этой модели нужен будет отдельный вьюпорт, чтобы она рисовалась перед вьюмоделью и темпэнтитями.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
вот че у меня получилось
и вот
***FantoM*** а если пострелять из гаусса, жёлтые круги не просвечивают через модель?
Ku2zoff
просвечивают
и еще если к стене прижатся то модель исчезает
это из за размера модели
я там ее подальше от экрана поставил чтобы игроку казалось что модель маленькая
потому что я больше способов не вижу как размер уменьшить у модели
***FantoM*** pparams->nextview = 1 + глобальная переменная для обозначения отдельного прохода(вьюпорта), например int g_iHudPass. Потом рисуешь модельку в DrawNormalTriangles только в этом проходе.
view.cpp V_CalcRefdef:
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 | } |
1 | if (g_iHudPass) |
2 | { |
3 | StudioDrawHud(); // ну или как она у тебя называется |
4 | return; |
5 | } |
а разве в ХЛ не было возможности скейлить модели?
also, spirit ещё актуален? кто-нибудь его movewith пользуется?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
***FantoM*** пока что не вижу преимуществ перед просто заскриненной и вырезанной моделью. Сделай анимашку или вращение, чтоль
__________________
-Brain is dead-
__________________
__________________
ㅤ
А разве между проходами не очищается буфер глубины?
__________________
Cybermax для ксаша надо?
__________________
-Brain is dead-
Есть средней паршивости модель бинокля, ей анимацию немного изменить и руки перетекстурить и норм будет. Мало ли кому пригодится. Если
Перезалил все три модели v_, p_, w_
https://www.dropbox.com/s/w2jp4i16e..._binos.zip?dl=0
__________________
ㅤ
__________________
ㅤ
Модель игрока, с анимацией лежа из Tour_of_Duty_Redux. Скелет почти как у стандартных моделей игроков. https://www.dropbox.com/s/vygcdz5fg...machgun.7z?dl=0
__________________
ㅤ
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
И вот он, в выходной день, вместо того, чтобы, проснувшись, сделать гимнастику, принять душ, съесть сладкого хлеба фруктового салата из папайи, манго, банана и рамбутана под йогуртом, сразу же на форум лезет....
Ну да ладно, раз уж так, покажи им, как НАДО рендерить!
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
ㅤ
калории в обед получать надо, а не нагружать с утра пузо, которое, как и весь организм, еще не отошло ото сна ..
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Вообще, это интересная мысль - вставить в ХУД модели от оружия. Опять таки, получится неплохая экономия ресурсов, плюс все это будет красивее выглядеть. А всякие эффекты при выборе нужного оружия из позиции можно модель делать более-или-менее прозрачной, добавить эффект GlowShell или еще чего там можно стандартными рендерами добиться. Для этого достаточно W_ модель заюзать. Ну или P_ , если первая уже вырезана, как в ХДМ.
Реально любоПЫТНО увидеть преображенный ХУД...
Единственный момент, который может меня настораживать - это одновременное появление на экране с десяток моделей, (особенно хайполи) когда открываешь нужный слот оружия...
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
для худа можно сделать дополнительную бодю со срезанной невидимой половиной треугольников
__________________
-Brain is dead-
__________________
-Brain is dead-
__________________
ㅤ
Cybermax
Слово "меш" традиционно мужского рода, уж простите граммар-нацизм.
__________________
Спасибо, учту. Просто был уверен что в обратном.
__________________
ㅤ
вот че у меня получилось c hud ом
***FantoM*** хорошо выглядит. Снарк анимируется? Его можно сделать бегущим. Видео снять можешь? А то на скриншоте всего не увидишь. Особенно того, ныряют модели в стены или нет.
***FantoM***
Это картинки или модельки?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
59 фпс - это ведь не то, что я подумал?
__________________
Ku2zoff
сейчас не могу у меня с драйверами проблемы
FiEctro
модельки
XaeroX
у меня в goldsource выше не поднимается
----------
еще несколько недель и будет тутор
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den
а это идея
сделать hud который будет показывать анимацию игрока
но по моему лучше будет сделать отдельно HUD где то над аптечкой
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Ku2zoff
я всю ночь мучился над этим худом
и решил что
да картинками лучше и площе сделать
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ku2zoff В hl decay картинками, но смысл от такого худа нулевой.
Насчет анимации выделенного оружия в ХУДе - думаю, что вращение вокруг своей оси будет самым правильным решением. Еще можно небольшую подсветку модели при этом сделать.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
нужна помощь
при переносе партикл систем аврора из спирита себе в мод возникли ошибки
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
***FantoM*** gmsgParticle копипасть из спирита. DesiredAction можешь заменить на Xash Post Activate System, на форуме есть тутор. kRenderFxEntInPVS можешь выкинуть, он не нужен в общем-то.
***FantoM*** в player.cpp добавил? В effects.cpp в начале файла написал extern int gmsgParticle?
а эту как ошибку исправить
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
Ну тривиально же.
Find in Files -> "CONTENT_SPECIAL1" -> copy-paste
__________________
XaeroX
у меня кроме этих трех строк больше не находит
***FantoM***
Видимо, ты ищешь только по срр-файлам. Поищи по h-файлам.
__________________
XaeroX
вроде там и там
Добавлено 13-05-2015 в 18:38:
вот
Infiles/file type: *.c;*.cpp;*.cxx;*.tli;*.h;*.tlh;*.inl;*.rc
***FantoM***
Ну у автора кода же как-то компилируется?
__________________
XaeroX
мне интересно как же у него компилируется?
***FantoM***
Возьми его проект целиком и найди там эти дефайны. Они там стопроцентно есть.
__________________
XaeroX
дефайны это же #define названия макроса и последовательность
символов
или я ошибаюсь ?
не обязательно, там может быть enum.
__________________
***FantoM*** Сделай поиск по всем файлам и не морочь себе голову)
SteamPlay43
поиск ничего не находит
***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***
Искать надо всегда во всех папках SDK. Во всех. Всегда.
__________________
XaeroX Он наверное уроки копипасты прогуливал
SteamPlay43
прогуливать уроки это круто.
нужна помощь
не могу поставить широкоэкранный режим в hl
пробовал в интернетe искать не помогает
через реестор не помогает
через бат с параметром -w -h не помогает
драйвера установлены все
***FantoM*** видеокарта какая? Винда какая? Версия халфы какая? Режим видео какой? OpenGL? Разрешение экрана какое?
Добавлено 18-05-2015 в 10:53:
***FantoM*** актуальная такая:
Protocol version 48 |
Exe version 1.1.2.2 (valve) |
Exe build: 13:14:12 Aug 29 2013 (6153) |
Ku2zoff
сейчас обновлю
Добавлено 18-05-2015 в 14:04:
не помогло
а теперь у меня по бокам черные линии
то есть теперь у меня картинка не растягивается
***FantoM*** блин, ты Display Mode сменил с Normal на Widescreen? У меня это разрешение точно есть в списке. На нвидии глючить не должно, все разрешения должны быть доступны. Это не интел.
Добавлено 18-05-2015 в 14:42:
Хотя, если у тебя есть в ноуте интеграшка в проц от интел, то она вполне может портить погоду.
Ku2zoff У меня интел и даже на старых версиях хл есть разрешение 1440х900, которое, кстати, реже, чем 1360х768.
__________________
Base Defense on Steam, ModDB
Кто то обещал тутор по моделькам в худе. И где он?
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ku2zoff
не могу я сменить
кнопка заблокирована
Ghoul [BB]
тутор будет если вы хотите но он ОЧЕНЬ нубский
вот если бы кто то помог бы исправить
тогда другое дело
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 |
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 У пеня кстати в масштабировании стоит сохранять пропорции, а других пунктов нет, и если две видеокарты, то масштабирование настраивается через видеокарту Интел.
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 |
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 |
***FantoM*** Понятное дело что на Source там у тебя все разрешения, он же д3д, причём девятый, а gold source OpenGL и d3d, причём 6
Добавлено 19-05-2015 в 12:14:
***FantoM*** Напиши полное название процессора, т.е. У меня например Intel core i7 3610QM
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
Всё ещё мучитесь с анальными вальвовскими дефайнами? В XDM уже давно CONTENTS_* пофикшены
Интел - говно. Факт. Все, что выше тогд же мнения, правы.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
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 встроенная видюха нужна в первую очередь для офисных компов и ноутов. Вот у меня радеон дискретный сгорел, так спасибо хоть, что можно на встроенной сидеть.
__________________
-Brain is dead-
Ku2zoff так я и говорю. При этом не стоит забывать, например, что даже дискретные видеокарты в ноутбуках, например M-серия у радеонов, также отличаются от десктопных аналогов, то есть, HD6770M проигрывает обычной HD6770, связано это с электропотреблением и теплоотдачей
__________________
-Brain is dead-
А давайте реренесем обсуждение видеокарт и показателей графики в отдельную тему, а?
эта тема несколько не про это....
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ Что значит интеловкий ноут? У меня самого уже третий ноут с процессором от Интел и т.п, но ничего не горело, это ты наверное сам его сжёг)
Добавлено 21-05-2015 в 10:41:
Ku2zoff Я тебе предлагаю погонять в халфу под ксашем на твоём нетбуке, он у тебя летать будет, у моего нетбука вообще был атом на 1.66 Ггц
Добавлено 21-05-2015 в 10:48:
Ku2zoff http://www.notebook.ru/notebook/ace...d250-0bqw-4538/
Вот такой был нетбук
SteamPlay43 intel fanboy detected.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ С чего это? Я радеоны тоже уважаю
__________________
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
XaeroX по кол-ву багов интел никто ещё не обошёл. FDIV - только ОДИН баг. Из тыщ мильонов.
Кажись, у фантома каникулы Или творческий кризис. Или наоборот - стало всё понятно
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
Ну понятное дело, у AMD багов нет.
__________________
нужна помощь
не могу создать первичную атаку в medkit как в sven coop
что делать ?
***FantoM*** я тебе сейчас дам кусочек кода от инженерного ключа, который добавляет броню союзникам и бьёт врагов.
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 | } |
if (pPlayer && (pPlayer->pev->team == m_pPlayer->pev->team)) |
if (g_pGameRules->PlayerRelationship((CBaseEntity *)m_pPlayer, pEntity) == GR_TEAMMATE) |
Ku2zoff
вот видео из свен купа https://www.youtube.com/watch?v=o8jRc7WbT8s
Ну так бы сразу и написал, что оживление нужно. Сложновато, но реализуемо. Придётся писать новые таски и скедьюлы для монстров. (Task и Schedule). Дерзай. schedule.cpp и monsters.cpp, там расположен этот код.
понятно
Ku2zoff А нельзя просто проверку на смерть сделать? Мне кажется, это тогда просто подбавит трупам здоровья и все)
И как вы собираетесь трупы оживлять? С помощью аптечки?! Не смешите!
Я уж молчу про то, что с фрагом делать? Отнимать при оживлении, да?!
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ku2zoff хотелось бы взглянуть на такую систему ( для игрока такое ещё бы было )
Ребят, раз тут нубские вопросы проскакивали, я бы хотел спросить: можно ли сделать так, что пока игрок держит оружие, на него не действовал определенный дамаг от trigger_hurt (dmg_nervegas, например) ?
Vadiman конечно. В функции триггера CBaseTrigger::HurtTouch делаешь проверку типа:
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 | } |
Ku2zoff спасибо большое
Сделал противогаз на основе оружия (либо он, либо ствол), потому как не смог разобраться как оно в параное работает.
нужна помощь
меня заинтересовал VGUI
у меня вопрос
как закруглить вгуи
***FantoM***
Никак, в вгуи таких функций нет.
__________________
***FantoM*** во вгуи1 точно такой функции нет. Во вгуи2, может быть есть, хотя ХЗ, наверное там вручную сделано, как я сейчас покажу. Короче, что можно сделать: рисуешь как на картинке, три панели, наложенные друг на друга, а в углы, где красные кружки, крепишь ТГАшки с альфаканалом и такой же прозрачностью, как у панелей. ТГАшки спереть можешь из КС.
XaeroX
а в Counter-Strike 1.6 вроде закругленный вгуи ?
З.Ы. можно обойтись двумя панелями, ну ты понял кароч. Это я с дуру три почему-то нарисовал.
Ku2zoff
как бы понятно
Ku2zoff Я про это и говорил, ведь даже у трупов есть хп)
Добавлено 26-05-2015 в 18:41:
Ku2zoff Помню как сорс с недостачей ресурсов запускал, там вместо округления были выкусаны квадраты)
Ku2zoff проверку по твоему совету осуществил, но вот условие нормальное не могу описать, то не работает, то вылетает. Как грамотно описать полный игнор игроком урона?
return туда поставь и всё. Только в начале функции, после условия
if ( (pev->spawnflags & SF_TRIGGER_HURT_NO_CLIENTS) && pOther->IsPlayer() ) |
return; |
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 | } |
Ku2zoff
Спасибо, теперь все как надо) Только если я подойду к триггеру не имея маски вообще, то вылечу с ошибкой.
Отладчик указывает на строчку
if ((pPlayer->m_pActiveItem->m_iId == WEAPON_MASK) && (m_bitsDamageInflict & DMG_NERVEGAS)) |
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 | } |
я лазил по форуму и наткнулся на этот тутор Глушитель для M4A1
и у меня возник вопрос
как вместо анимации менять суб модель(Sub-model) ?
У меня тоже вопрос есть. Т.к у меня маска реализована оружием, то в секции weapon_idle я сделал звуки дыхания для гг. Но, как только я беру маску в руки, гг дышит, а если сменить маску на какое-либо оружие, потом обратно, то звуки дыхания уже не слышны(
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 ); |
вопрос № 2
как в VGUI растянуть tga по всей панели ?
Vadiman
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 2, 4 ); |
__________________
Base Defense on Steam, ModDB
PLut Не помогло. Да и я убирал праймари-атаку от туда, на маске она не нужна
Vadiman Хм... Недавно сам разбирался почему правильно анимации айдла не воспроизводит у меня в моде, закончилось тем, что отрезал нахрен клиентские пушки и всё, что с ними связано. Вечно были какие-то рандомные баги с правильным получением времени в пушках, то все патроны вылетают за секунду, то еще чего. В одних случаях работал gpGlobals->time, а в других UTIL_WeaponTimeBase(). И плевать, что по сути это одно и то же.
Чего просто не вытащишь противогаз из паранойи? Там делов то на 5 минут.
__________________
Base Defense on Steam, ModDB
PLut Я пытался, но не смог разобраться до конца. Там хаки какие-то применялись, это мне пока не по зубам. Хотя конечно ты прав, делать противогаз на основе оружия идиотизм, но маска от газа сейчас защищает))
Vadiman Ты под хаками подразумеваешь создание энтити для определения освещенности игрока? Можно рисовать противогаз и не учитывать освещение игрока, это было сделано чтобы пыль на стекле противогаза получала цвет и яркость от источника света, выглядит довольно круто, но сомневаюсь, что многие просекли эту фишку.
__________________
Base Defense on Steam, ModDB
PLut Там много хитростей было. У меня была единственная ругань компилятора на "pl->m_pActiveItem->GetMode();". Плюс надо было еще приделать модель противогаза на фейс, вместо спрайта
Vadiman Это проверка на прицел оптический, т.е. мы не можем одеть противогаз, если прицеливаемся через оптику. А модель пришпандорить - взять код щитка на шлеме.
__________________
Base Defense on Steam, ModDB
PLut Где то я ее прошляпил, что не убрал. А как ее присобачить от щитка? Там Базер столько расписал.... Хотя, тут же недавно тутор по ногам для гг добавили, на его основе можно конечно попробовать...
Vadiman Выдираешь щиток, да и всё, после чего уже мелочи: поменять модельку и добавить защиту от повреждений.
А вот это не стоит. Логичнее брать то, что больше тебе подходит под нужные цели.
__________________
Base Defense on Steam, ModDB
PLut Попытаться еще раз можно, конечно.
Тут еще вопрос созрел: зомби когда бегут за мной, то тыкаются в игрока, но медлят атаковать, а вот в параное 2 зомбо-девки атаковали практически на бегу. Какие параметры в модельке за это отвечают?
Vadiman Этого не знаю, завтра, может быть, посмотрю.
__________________
Base Defense on Steam, ModDB
PLut Блин, не могу заставить работать маску из паранои, я оставлю это дело...
Ku2zoff Ужасы какие. Благодарю за объяснение, но факт есть фактом, что работало это через одно место.
__________________
Base Defense on Steam, ModDB
Ребят, как запретить использовать ноклип в сингле (ну или вообще запретить команду sv_cheats 1) и убрать команду куиксейва? Как разрешить ноклип в мп?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den может это не мое дело, но ИМХО убирать ноклип и квиесейвы хреновая идея, первое помогает когда игрок застрял в лифте, баг движка халвы ну и когда совсем не понятно куда идти полетать вокруг карты, вдруг не приметную вентиляцию или щель пропустил, если сильно захотеть зачитерить всегда можно, а квиксейвы для большинства игроков настолько привычная вещь что грех ее убирать, чекпоинты - зло. А вообще можно поискать в коде слова noclip и для квиксейва команду, а там что надо просто кусок кода закоментить.
Yo Den ты лучше умно стимулируй игроков реже пользоваться квиксейвом, статистику там заведи какую-нибудь
__________________
-Brain is dead-
if (CVAR_GET_FLOAT("sv_cheats") != 0) |
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Как сделать плавный поворот монстра при слежении за игроком? А то он поворачивается рывками градусов по 10.
Crystallize у монстра есть анимации поворота? С активностями ACT_TURN_LEFT/ACT_TURN_RIGHT? Можно попробовать накодить новую активность для разных углов поворота, см. функцию void CBaseMonster :: SetTurnActivity ( void ).
Crystallize
анимацию можно через MilkShape 3D изменить
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ а, ну да
Для сингла должно. А православно надо в CBasePlayer::PostThink, к примеру, проверку делать.
Crystallize это плохой метод. Если надо - суй в StartFrame() на сервере. Но только не в CBasePlayer().
Я бы схитрил и перерегистрировал команду noclip/save где-нибудь. Кроме того, сейвы можно элементарно запретить через DispatchSave().
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ а чем плох CBasePlayer? Я в него проверку на sv_cheats переместил из прекэша мира. Работает как в хл2, карту не надо перезапускать.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Я считаю, что Вэлв допустили грубейшую ошибку, зашив в движок те квары, которые не имеют к нему отношения. Noclip, god, mp_footspets, sv_cheats, например. Ими можно свободно оперировать внутри ддлок, отключая их воздействие, в коде pm_shared и проч. Но совсем вырезать их нельзя. Вообще, разрабы нагородили тупейший огород, чтобы прополоть который нужны десятки хаков. Ну вот нафиг mp_footsteps в движке, если проверка на проигрывание звуков продублирована в pm_shared? Да, квар глушит шаги. А если я хочу, чтобы шаги всегда были слышны?
я делаю фотокамеру на основе оружия и у меня проблема
как сделать так чтобы через PrimaryAttack активировалось команда snapshot
***FantoM*** Используй лучше команду screenshot
SteamPlay43 это одно и тоже.
Madara88 screenshot делаеть снимок в формате .tga и с лучшим касеством)
Добавлено 05-06-2015 в 21:06:
Madara88 А снап .bmp
SteamPlay43
значит screenshot лучше чем snapshot
Madara88
] screenshot
Wrote HalfLife00.tga
] snapshot
Добавлено 05-06-2015 в 21:12:
***FantoM*** Тебе решать
Главное отличие - куда сохраняется файл. В папку мода или в папку с hl.exe.
__________________
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
В консоли стал замечать такое сообщение
можно ли сделать все декали в четыре раза меньше ?
***FantoM***
Перерисовать decals.wad можно. Увеличить разрешение (то бишь уменьшить скейл) нельзя.
__________________
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Ku2zoff какбэ нарушаешь принципы разделения категорий ООП. Ты ж не будешь охранника предприятия только потому что он круглосуточно на работе заставлять принимать почтовую корреспонденцию и готовить обеды? (я надеюсь)
А ещё у тебя игроков может быть до ж.. тридцати двух т.е. И что, у тебя 32 раза в кадре будет проверяться одно и то же? Ай-яй-яй.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ ох, точно. Проверка ж для каждого игрока делается. Переместил в StartFrame. Действительно, что-то я про эту функцию не подумал. Для проверки серверных кваров - самое то место. И красиво, не затрагивает никаких классов, тчинкает по вызову движка.
у меня вопросы
вопрос первый
сколько максимум текстур можно засунуть в .wad ?
второй
какой максимальный вес вада должен быть ?
третий
какой максимальный размер текстуры можно запихать в вад ?
У меня есть ВАД на 1810 текстур.
Есть ВАД на 245МБ.
1024х1024, такие текстуры даже работают в ХЛ1 но в софтверном режиме.
Skaarj может, НЕ работают?
Мне пришлось бить на 512*512 таки чтоб всё работало. (см. DOM_SunDen). А так - текстура была 4096 или 8192 в квадрате... Главное gl_max_size в игре не забыть.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ в софтверном режиме.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
1). Сделать, чтобы вываливалось что-то можно, но команда всё равно будет работать, если не изменить код в pm_shared.c
2). ClientCommand в client.cpp. Заводишь там кастомную команду и проводишь операции с игроком. То же самое и для п. 1, только отправляешь какую-нибудь команду, которая должна вывалиться.
Добавлено 10-06-2015 в 10:31:
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Ku2zoff
в коопе, кстати, надо weapon_healthkit и дефибрилляторы.
__________________
http://www.moddb.com/mods/monorail-quest
// check for godmode or invincibility |
if ( pev->flags & FL_GODMODE ) |
{ |
return 0; |
} |
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Ku2zoff
глянь как у тов. икс-вайдера ченджлевел сделан, он там очень многое в этом плане наработал (возможно, нужно попросить его выложить свежую версию).
__________________
http://www.moddb.com/mods/monorail-quest
Yo Den вы какой-то откровенной х...ерундой занимаетесь. Вместо того чтобы консолоь отключать, сходите посуду помойте, что-ли... (пока пользователи не пришли и не покалечили)
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
так это всё YOBA-игры. для умственно неразвитых
(хотя я в НФС играл, и помню, что какая-то комстрока там есть)
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den типично яблочная логика, кстати. Зачем, действительно, консоль? Надо всё делать в рамках. А я почему-то с детства не люблю сидеть в рамках игры. Если нет классного меча в Морровинде - я его запилю и буду с ним ходить (то же самое и для всех сиквелов). Кроме того, в некоторые игры авторы не удосуживаются запилить редактор настроек, а конфиги иногда бинарные. Ещё и графику настроить не дают. Бывает, что без читов проходить игру уныло и скучно. А яблочники - это люди, которые мыслят иначе - им нравится в тёплых уютных рамках, где за них решают, что и как им делать. Так что, если автор решил, что ты не можешь прыгать набегу, то...
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Не в консоль, а в чат надо писать/смотреть квары, как в WoW.
Skaarj вот уж не соглашусь... Как вспомню DeusEx - блевать хочется. Все команды пиши руками, никаких скроллов/дополнений, никакого визуального пространства, автодополнений. Зато надо среди чата искать, что же ты ввёл и что же получил...
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ Тебе играть или что? Запусти терминал/cmd и оттягивайся сколько влезет, раз уж так хочется.
Skaarj дая как-то хотел zsh к халвовской консоли прикрутить... вернее, мне посоветовали
Кстати, хороший аргумент! Я писишник и не уважаю консольные игры потому что там нет консолей. Такие дела.
Ku2zoff ага, ПЕРВОМ анриле.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
А что в ПЕРВОМ анриле? Там есть удобный "адвансед опшонс" где можно настроить всё.
Skaarj я и говорю, что в ПЕРВОМ. А в новых быдлоанрылах - хренвам, а не адвансед опшнс. Хотя УТ2004 сам по себе ничего такой.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ всё там есть в УТ2к4.
А в УТ3 самих опций в игре больше стало и никто не запрещает редактировать ини или написать мутатор с более тонкими настройками.
Например, в игре мыльный доф отключается сразу вместе с блумом но есть мутатор Blossom управляющий мылом и блумом по отдельности.
16b32364664542fe83aec7dc855d8949.jpg
1,599.53 KB (1,637,918 bytes)
Спасибо, не знал. А как оно вызывается?
Skaarj да, размазня - это первое, что пришлось отключать в УТ3.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
сегодня я баловался исходным кодом studiomdl.exe
и заметил что текстуры в моделях больше 512х512 у меня в моде не идут
как это исправить ?
В УТ3 вообще забавно, опция, которая переключает нормал и спекуляр, называется "Проективные текстуры", никогда бы не догадался.
Добавлено 20-06-2015 в 23:00:
__________________
ㅤ
ееще один вопрос
как правильно прицепить Aurora Particle System
например k ракете от rpg ?
***FantoM*** гугли сорцы старого ксашмода 0.39. Или спроси 0.45 у FiEctro. У меня, к сожалению, не осталось. И те и другие пропали. Перезатёрты другими файлами на винте. У кого есть, выложите куда-нибудь. С ними я смогу восстановить свои старые сорцы спирита с встроенным рендерером паранойи и рендерсистем из XDM. Не хватает fmod.h и cva.h. Ну и ещё кое чего.
Ku2zoff не знаю насчёт остального, но RS лучше сейчас не трогать, т.к. в новом релизе она лучше и стабильней (особенно с энтитями).
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Пожалуй, чтобы не создавать новую тему, задам здесь свой нубский вопрос: как сделать чтобы нпц не поворачивался к игроку полностью, а только вертел головой в его сторону? Боунконтроллер выставлен.
У меня нпц стоит у стены и когда он начинает рывками поворачиваться полностью к игроку, то выглядит тупо, нужно чтобы он стоял всегда спиной к стене, но поворачивал временами голову к игроку.
__________________
Base Defense on Steam, ModDB
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 | } |
GioHAUS0n Ну и что? yaw_speed и так 0, нпц всё-равно вертится.
__________________
Base Defense on Steam, ModDB
PLut Врогде голограмма из bs game patch'а могла голову на игрока направлять
Оказалось всё просто, находим код monster_sitting_scientist и используем его.
__________________
Base Defense on Steam, ModDB
Еще один вопрос возник: почему текст в кнопке съезжает и обрезается? Кто-нибудь сталкивался?
Рисую кнопку вот так:
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
Разобрался, CommandButton смотрит наличие привязанной кнопки, если есть, то вставляет её номер перед текстом, однако, если этой кнопки нет, то он вставляет кучу пробелов. Текст обрезается из-за дефайна MAX_BUTTON_SIZE числом 32, соответственно в кнопке может быть только 32 символа, чтобы текста в них можно было написать больше, то просто увеличиваем дефайн.
__________________
Base Defense on Steam, ModDB
PLut этот страшый VGUI...
давай, ковыrяй его!
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
я уже вторую неделю пытаюсь перенести Paranoia Render себе в мод
у меня вопросЪ какие эффекты нужно убрать
чтоб не тянуть c модом хакнутый ОреnGL32.dlll ?
***FantoM*** ЕМНИП, те, что требуют стенсил-буффер. Не помню точно, но у меня, кажется небо не работало и что-то с освещением было.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
я могу ошибаться но многие эффекты из паранои берутся из системного ОпенГЛ
по моему в игре в игре опенгл нужен для отражения света ну или т.п.
Добавлено 25-06-2015 в 23:05:
и еще один вопросик
почему то если удалить опенгл из халфы то в игре наблюдается один баг
не знаю как объяснить
короче вот видео https://youtu.be/64hO08ZVdFg
из-за чего это может быть ? что я не так скопипастил ?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
ㅤ
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Наверно такой вопрос задавали тут миллион и один раз, но внятного рабочего варианта вроде бы не попадалось. Как сделать burst fire, который за нажатие делает три выстрела подряд?
И еще один классический вопрос: ограничение переносимого оружия по слотам. Тобишь выкинь дробовик, чтобы взять мп5, выкинь рпг чтобы взять гаусс, итд...
И вопрос не по кодингу: v_модель оружия в 8к полигонов перебор для hl1, или можно оставить?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den в принципе да, только тутор не работает
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
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 ); |
Ну тут уж смотря кто как использует. Я брал от туда пухи максимум 8к полигонов, нпц не больше 5. На текущем компе просадок fps никаких, но на втором пк, что послабее, они явно будут.
добрый день ( или ночь) НУЖНА ПОМОЩЬ!
немогу создать ауру вокруг монстра в Paranoi
делаю
pev->renderfx = kRenderFxGlowShell; |
pev->rendercolor.x = 55; |
pev->rendercolor.y = 255; |
pev->rendercolor.z = 255; |
pev->renderamt = 150; |
***FantoM***
pev->rendercolor = Vector( 55, 255, 255 ); |
pev->rendercolor.x = 55; |
pev->rendercolor.y = 255; |
pev->rendercolor.z = 255; |
master07
не знаю почему
но на модели и так нет ауры
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Доброго времени суток!
у меня вопросс
чем отличается параноевский 3ssky от
обычного хайф-лайф sky ?
***FantoM*** ну, тащем-то тем, что в паранойе 3д, а в халфе 2д. Текстуры неба вокруг самой карты не рисуются. На их место проецируется изображение с "небесной" камеры из коробки, в которую маппер ставит энтитю этой камеры. Используются две энтити: сама камера и центр "мира", относительно которого считается смещение, чтобы "небесные" объекты не были статичными, а сдвигались, создавая иллюзию, что зд небо тоже часть мира, как в сосрсе. Главное отличие от спирита - не нужно покрывать небо на самой карте специальной текстурой. Второе отличие - само смещение неба относительно мира. И третье - паранойевское небо работает только в OpenGL.
Добавлено 09-07-2015 в 12:38:
З.Ы. для правильной работы нужно собирать карты паранойевскими компиляторами.
Доброго времени суток!
сегодня ночью я пытайся сделать минига (MiniGun)
не получается сделать раскрутку стволов
вопрос
Есть ли у кого нибудь код минигана ?
Есть. Все там же....
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Не компилится карта!помогите!
bumprad.exe выдает ошибку
code:
bumprad.exe - Ошибка приложения Инструкция по адресу "0x00409b94" обратилась к памяти по адресу "0x6c9eb1e8". Память не может быть "read". "Ок"-- завершение приложения "Отмена" -- отладка приложения Ок Отмена
с миниганом разобрался
сейчас мне надо добавить глоку фонарик в SecondaryAttack
как я понимаю мне надо тупо взять из player.cpp с кода включение фонарика и переместить в SecondaryAttack ?
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
if (m_pPlayer->FlashlightIsOff()) |
m_pPlayer->FlashlightTurnOn(); |
else |
m_pPlayer->FlashlightTurnOff(); |
Уважаемые знатоки, подскажите что-нибудь по такому вопросу: допустим, сделал я второй вид зомби, унаследовав класс от оригинального. Все, что мне нужно сделать, чтобы этот новый зомби в момент гибели не проигрывал анимацию падения а просто исчезал, или на куски взрывался (не важно гранатой или плевком его убили)
Vadiman из функции CТвойНовыйЗомби::KIlled надо вызвать GibMonster(). Будет тебе кускование.
не могу объявить идентификатор gmsgFlashlight
помогите
extern int gmsgFlashlight;
Вне тела функции в файле. Всё просто.
Ku2zoff
на клиенте
hl_wpn_glock.obj : error LNK2001: unresolved external symbol "int gmsgFlashlight" (?gmsgFlashlight@@3HA)
***FantoM*** а зачем ты мессагу вызываешь напрямую из кода глока, если есть инструменты для этого в коде игрока?
if (m_pPlayer->FlashlightIsOff()) |
m_pPlayer->FlashlightTurnOn(); |
else |
m_pPlayer->FlashlightTurnOff(); |
#ifndef CLIENT_DLL |
// тут твой код с вызовом |
#endif |
Ku2zoff
Спасибо, как всегда выручил))
Напоследок, есть кое что еще:
1) Сделал item_laptop. Это ентитя ноутбука, которая при юзе меняет скин модельки и воспроизводит звук (ambient_gerenic). Можно ли сделать так, чтобы юзать ее можно было только 1 раз? Есть ли некий флаг, который за это отвечает?
2) Как уменьшить скорострельность у monster_sentry? В модельке это не регулируется. Я сделал на его основе танк, который стрелял как миниган. Добавил строчку (pev->nextthink = gpGlobals->time + 0.3; ) в spawn, но теперь он работает мягко говоря, не очень. Если брашевый танк сначала наведет дуло, потом выстрелит, то этот пытается делать все одновременно и в итоге попадает крайне редко.
Vadiman:
автор ограничил доступ к видео.
Добавлено 28-07-2015 в 23:13:
1). Заведи булевую переменную BOOL m_bUsed. В спауне задай значение FALSE, в юзе TRUE. И в самом начале функции Use вставь условие:
if (m_bUsed) return; |
Ku2zoff
Вроде поправил
Спасибо еще раз, теперь помогло, до этого аналогичным путем я уже поступал, только ошибку допустил, т.к if (m_bUsed) return; втыкал в конец метода. Нуб чо)
Покопаюсь с этой штукой, в противном случае танк можно и выпилить, просто для интереса делал
Настал черёд для моего нуб-вопроса. Скачал и установил CodeLite в качестве IDE, MinGW 4.8 в качестве компилятора. Запускаю сборку проекта и не могу понять, какие ошибки мне выдаёт в консоли вывода (build output). Вместо них каракули и иероглифы. Лазил в настройки CodeLite, кодировку в командной строке менял, так и не смог починить. Перерыл кучу интернетов, но решения нигде не нашёл. Помогите плиз, уж терпения нет.
З.Ы. За придурошные кодировки я бы авторам руки-то пооткрутил.
а что делать если фонарик включается и выключается по сто раз в секунду если держат правую кнопку мыши
можно ли это исправить ?
Попробуй сделать проверку на нажатость кнопки:
if (m_pPlayer->m_afButtonLast & IN_ATTACK2) |
return; |
А можно ли от какой-то модели рисовать только чётные строки экранных пикселей, а нечетные брать из фона?
ЧТО?
Ты, вроде, по-русски написал, но ничерта не понятно, что имел ввиду...
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
А зачем такие эффекты? Я несколько секунд на картинку посмотрел, уже чуть не сблевал и в глазах неуютно. а ты предлагаешь в такое играть?
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Crystallize
Ты же понимаешь что оно в игре покроется муаром?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Как режим Fuzzy в DooM?
Нет, вот так:
В спирите вообще можно motion_manager включать-выключать на ходу? Через мультименеджер не получается.
Чтобы не создавать новую тему, воспользуюсь старой. Вопрос по стимовской версии хл, есть ли там какой-нибудь ридми-ридер, типа как в ВОН-версии было, чтобы из меню можно было легко открыть текстовый файл с информацией о моде?
__________________
Base Defense on Steam, ModDB
PLut насколько мне известно, нет. Сам искал
XaeroX Благодарю за ответ. Очень жаль.
__________________
Base Defense on Steam, ModDB
Flashlight Attachments To Weapons
хочу прикрепить фонарик на оружие в ParanoiaRenderer как в Left 4 Dead 2
как посоветуете сделать?
***FantoM*** На тринити подобное делал, но сорц того мода взорвался вместе с компьютером.
__________________
Base Defense on Steam, ModDB
PLut смотрится круче чем в Left 4 Dead 2
Чтобы не создавать новую тему, воспользуюсь старой.
Три месседжа по байту или один месседж на 3 байта. Что лучше и почему?
__________________
Base Defense on Steam, ModDB
Второе. У каждого мессажа есть отдельный, скажем так, заголовок.
XaeroX Спасибо!
Еще один вопрос появился: есть key у dlightов, зачем он нужен, как его правильно ставить?
Я о том, что в скобках:
dlight_t *dl = gEngfuncs.pEfxAPI->CL_AllocDlight( 0 ); |
__________________
Base Defense on Steam, ModDB
key нужен для того, чтобы повторно использовать один и тот же длайт, в том числе активный. Если ставить 0, то будет при каждом вызове выделяться неактивный длайт (а если все активны - то первый в списке).
XaeroX Спасибо за ответ, т.е. самое простое и безопасное - это, как раз, ноль?
__________________
Base Defense on Steam, ModDB
PLut
В каком смысле - простое и безопасное? Это зависит от твоих целей. Если тебе нужно каждый клиентский кадр обновлять свет, а не создавать новый - для этого и нужен key. При каждом аллоке с нулевым ключом будет создаваться новый источник света в рамках лимита на них, что может привести к бессмысленным тормозам.
XaeroX Теперь понял, спасибо
__________________
Base Defense on Steam, ModDB
В спирите взял вектор от View Angle игрока, и пытаюсь развернуть его на 90 градусов по питчу вниз, что было как будто игрок на животе лежит. Но питчевая компонента развернулась, а yaw - нет. Я думал yaw превратится в roll.
В Спиритах начиная с 1.4 появился свап осей вращения в моушн_менеджере. Только почему-то нифига не работает, в 1.4 и 1.5 по крайней мере. Help.
Crystallize
Ну зачем ты вопросы такие задаёшь? Не думаю, что кто-то до сих пор спирит использует. Исходники его открыты - изучай.
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?
Я смотрю, чтобы повернуть вектор, они просто переводят его в углы, и прибавляют угол поворота. По-моему это бред.
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();
Пытаюсь сделать для yaw игрока такое же ограничение углов -89...89, как это сделано для питча. Пробовал в функциях AdjustAngles и MouseMove, по аналогии с питчем писал
code:
if {viewangles[yaw] <= -89} viewangles[YAW] =-89;
if ( yaw < 0 ) yaw += 360, не?
Что делает функция 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); }
Crystallize
Округляет угол до ближайшего 16-битного значения, которые используются для пересылки по сети.
Делал гигантизм в Хаммере, получается карту с visibility matrix больше примерно 200мб в принципе нельзя осветить на 32-х битной версии из-за нехватки оперативки?
Как добавить на клиента функцию ALERT?
Crystallize возьми и сделай обёртку для ConPrintf.
Спасибо. Погуглю конечно про обёртку, но особо не надеюсь... А можно напрямую заюзать gEngFuncs.ConPrintf? Или она принимает не нормальные типы данных, а эти ваши эдикты?
Crystallize не совсем понял, при чём тут эдикты. Серверный ALERT имеет два аргумента: тип алерта и собственно текст. Тип не особо важен, если ты просто хочешь слать в консоль диагностические сообщения. НО если хочешь прям как на сервере, придётся писать мудрёную функцию. Чтобы учитывать каждый тип алерта:
at_notice - просто уведомление в левом верхнем углу экрана
at_console - уведомление с записью в консоль
at_aiconsole - то же, что и at_console, но только при кваре developer 2
at_warning - не помню точно, чем отличается от предыдущих. По-моему, добавляет перед текстом "WARNING: "
at_error - вроде бы добавляет перед текстом "ERROR: "
at_logged - сообщение в серверную консоль, так же пишется в лог сервера
Помогите, пожалуйста, с Iron Sight. Сделал, я, значит, эту штуку на Мосинке, теперь она практически работает: анимация, разброс, легкий зум. Осталось сделать замедление скорости передвижения игрока. Как это можно сделать? А то скачет с зумом, как угорелый.
Плюс вопрос: как убрать диагональное ускорение игрока? А то вперед и вбок нормально ходит, а диагонально скорость увеличивается чуть ли не в два раза.
И еще: как сделать двойное условие? Если зум включен и если патронов больше 1, то... Если зум включен и если патрон единственный, то...
Работаю в XashXT.
__________________
Killing Floor: Horzine Outbreak
Есть проблемка с пулеметом из opposing force: перезарядка состоит из двух анимаций (SAW_RELOAD1_1 и SAW_RELOAD1_2) Как воспроизвести одну за другой, ведь обычно в DefaultReload только одна анимация?
Vadiman Смотри как в дробовике перезарядка сделана, вот по аналогии делается перезарядка пулемета.
__________________
Base Defense on Steam, ModDB
KorteZZ насчет скорости: это все уже есть, остались только проблемы с получением максимальной скорости на клиенте. Да и еще на клиенте есть квары cl_sidespeed, cl_forwardspeed, cl_backspeed и sv_maxspeed. Посмотри на клиенте input.cpp по поиску этих кваров. Там есть формулы высчитывания гипотенузы, т. е. именно той диагонали. Нужно всего лишь скормить этому коду максимальную скорость игрока на сервере
насчет условия: тут без куска кода не понять
KorteZZ [Кодинг] Замедление игрока
__________________
Base Defense on Steam, ModDB
Ku2zoff ну в опфоре перезарядка разделена все же не из-за юзания, а из-за бодигрупной ленты, чтобы указать правильную боди нужно уже перезарядить оружие.
Спасибо большое за помощь! Со скоростями разобрался, а насчет условий:
Это первичная атака Мосина. Мне надо сделать так, чтобы учитывался еще и последний патрон, как на Глоке.
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 | } |
1 | if (m_iClip == 1) |
2 | SendWeaponAnim( MOSIN_FIRE_LAST); |
3 | else |
4 | SendWeaponAnim( MOSIN_FIRE1 + RANDOM_LONG(0,2)); |
__________________
Killing Floor: Horzine Outbreak
1 | if (DefaultReload( 100, SAW_RELOAD1, 2.0, 0 )) |
2 | { |
3 | SendWeaponAnim( SAW_RELOAD2 ); |
4 | m_flSoundDelay = 1.5; |
5 | } |
m_flSoundDelay |
1 | if (DefaultReload( 100, SAW_RELOAD1, 2.0, 0 )) |
2 | { |
3 | m_flSoundDelay = UTIL_WeaponTimeBase() + 1.5; |
4 | } |
1 | if (m_flSoundDelay <= UTIL_WeaponTimeBase()) |
2 | { |
3 | SendWeaponAnim( SAW_RELOAD2 ); |
4 | m_flSoundDelay = 0.0; |
5 | } |
Ну, надо сделать чтобы были условия:
1) Если с зумом и патронов больше 1, то играть MOSIN_IRON_SHOOT
2) Если с зумом и патрон единственный, то играть MOSIN_IRON_SHOOT_LAST
3) Если без змуа и патронов больше 1, то... MOSIN_SHOOT
4, Если без зума и патрон единственный, то... MOSIN_SHOOT_LAST
А просто по аналогии с глоком я сделал. У меня XashXT. Сейчас проигрывается стандартная анимация выстрела, вне зависимости от наличия зума. Он просто убирается.
__________________
Killing Floor: Horzine Outbreak
***FantoM*** А у тебя есть псевдоисходники опфора? Поделишься? Я на каком-то зарубежном сайте ухватил файлик волтигоры, но гонома там не видел.
***FantoM*** KorteZZ Проще только буллсквида взять.
__________________
Base Defense on Steam, ModDB
Vadiman С чего ты взял, что он крашит игру?
__________________
Base Defense on Steam, ModDB
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
как работает режим indexalpha в спрайтах?
Normal - без прозрачности.
Additive - чёрный цвет прозрачный, белый непрозрачный.
Indexalpha - градиентная прозрачность первых пикселей цвета, похоже на Additive, только прозрачный не чёрный, а видимо, любой.
Alphatest - один цвет, последный в палитре, прозрачный.
Тут описание Indexalpha переведённое мной лично. В учебниках по деланью спрайтов пишут такое: "Черно-белый спрайт; последний цвет в палитре определяет цвет спрайта". Не знаю, чему верить.
***FantoM***
Ты прав, там не спрайты, а декали в вад-файле. Я изначально делал это спрайтами, а потом сделал иначе.
Но суть в том, что индексальфа-спрайт и декаль это практически одно и то же.
Можно-ли изменить прозрачность у v_модели оружия?
Задумка в том, чтобы вторичная атака придавала эффект невидимости (модель оружия и рук становилась прозрачной) и желательно, чтобы нпц в этот момент переставали реагировать
Заменить модель на прозрачную?
__________________
ㅤ
Как сделать анимированную кровь при попадании в монстра или в игрока.
Заранее спасибо.
FanaT2 кровь и так сделана анимированным спрайтом. Опиши подробнее, что хочешь видеть.
Игра берет один кадр из спрайта, а мне нужна каждый кадр.
Игрок не рисуется через trigger_camera, пустое место.
А переменная player чему равна?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В консоли переменная 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 он видимо имел в виду model
__________________
-Brain is dead-
KiQ А, спасибо.
Дядя Миша бывает helmet или gordon.
Добавлено 06-07-2016 в 00:38:
и да, при включении thirdperson моделька рисуется.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Можно ли красить монстров связкой kRenderTransColor и rendercolor? Я пробовал так, но результат никакой.
pevCreate->rendermode = kRenderTransColor; |
pevCreate->rendercolor = Vector( 255, 0, 0 ); |
pevCreate->renderamt = 255; |
__________________
Base Defense on Steam, ModDB
__________________
XaeroX Модельки, значит, никак краситься не будут? Даже с помощью других kRender?
__________________
Base Defense on Steam, ModDB
PLut
В ксаше - будут, в халфе - нет.
В халфе можно имитировать раскраску вручную, в студиорендере, используя освещение (StudioSetupLighting или что-то вроде того).
__________________
XaeroX Ааа, да, я видел реализацию этого в сорцах инвейжена. Не зря, видимо, так извращались. Спасибо!
Добавлено 08-07-2016 в 14:59:
А, кстати, вышло то, что нужно
__________________
Base Defense on Steam, ModDB
Поскольку на форуме и так создал предостаточно тем, решил написать в эту, специально, как я понял, созданную для подобных вопросов .
1. Где настраивается цвет текстовых сообщений HL (ClientPrint, чат, ники убитых игроков в правом верхнем углу). В ХЛ он рыжий, в Sven Co-op - в той же версии 3.0, например, на белый исправили.
2. Где, опять же, поменять цвет рамочки вокруг кнопки OK в motd?)
Заранее спасибо
__________________
Fight for Peace, Fight for Love
Shadow762
1. В папке мода resource/trackerscheme.res там EngineFonts вроде.
2. Кнопка эта в самом конце vgui_MOTDWindow.cpp
__________________
Base Defense on Steam, ModDB
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); |
__________________
Fight for Peace, Fight for Love
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
Жуть какая) Нет, ну правда. Ладно, разберусь. И где все же править цвета сообщений в чате и ников кто кого убил? Я уже все везде пересмотрел, цвета типа 255 160 0 и прочие оттенки рыжего перегнал в белый. Все равно не помогает. Может в трекершэйме что действительно надо писать, но ни в одном моде, которые я перекопал за этот вечер ничего подобного не нашел. только цвета меню игры.
__________________
Fight for Peace, Fight for Love
Shadow762
Цвета ВГУИ если не ошибаюсь хранятся в ресурсах игры, а не в коде.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
pButton->setBorder( new LineBorder( Color(255 * 0.7,255 * 0.7,255 * 0.7,0)) ); |
__________________
Fight for Peace, Fight for Love
gEngfuncs.pfnDrawSetTextColor( 1, 1, 1 ); |
__________________
Fight for Peace, Fight for Love
Почему в Спирите такие странные внутренние названия у параметров энтитей?
Создаем спрайтик таким образом:
pSprite = CSprite::SpriteCreate( "sprites/sprite.spr", pev->origin, FALSE ); |
if ( pSprite ) |
{ |
UTIL_Remove( pSprite ); |
pSprite = NULL; |
} |
__________________
Base Defense on Steam, ModDB
PLut
Зависит от тебя.
Ты будешь потом по этому указателю обращаться? Если мамой поклянёшься, что не будешь, тогда можно не обнулять.
__________________
XaeroX Ну, к следующему моменту, обычно, создается новый pSprite, да и везде проверки стоят на существование указателя.
__________________
Base Defense on Steam, ModDB
PLut
Не бывает никаких проверок на "существование указателя".
Указатель - это переменная, такая же, как int или float. Она всегда существует в своей области видимости.
__________________
XaeroX Ну, я ламер же, буду знать Я имел в виду проверки на "не ноль".
__________________
Base Defense on Steam, ModDB
PLut
Я же говорю - поклянись, что никогда, слышишь, никогда больше не обратишься к этому указателю для чтения, и я разрешу тебе его не занулять. Если ты не можешь поклясться - тогда обязательно зануляй.
__________________
И когда объявляешь "пустой" заранее, тоже нуляй =)
Усёк, спасибо за ответы
Я вот чего рисовал:
__________________
Base Defense on Steam, ModDB
Красиво) А частички я сделал бы восходящими
__________________
Killing Floor: Horzine Outbreak
KorteZZ Благодарю, совет хороший
__________________
Base Defense on Steam, ModDB
PLut а ещё не забывай про сейв/ресторы, если он окажется внутри какого-нибудь класса.
Добавлено 24-07-2016 в 10:52:
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
PLut тебе что лень занулить? Или ты боишься что это адски затормозит код?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
~ X ~ Ну конечно же
Дядя Миша Всмысле лень? Я уже занулил и хотел убедиться, что понимаю всю соль этого действия, а не просто всунул потому что "вот так".
__________________
Base Defense on Steam, ModDB
Как заставить танк целиться в пушаблю? Или хлтя бы создать видимость этого?
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 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'
Дядя Миша Спасибо.
Вопрос есть, давно уже не кодил под халву, да и вообще хрен знает скоко к C++ не прикасался, решил опять попробовать что-то сделать на основе кода XashXT, но вот никто не может напомнить какой там студией он компилиться? Станет эта древняя студия на 7 винду , обязательно именно ей компилить, а то и тупо забыл уже совсем.
Chyvachok 6-ая студия нужна. Желательно с сервис паком. Пятым что ли... На семерку почти всегда гарантированно встаёт. Бывало, что у некоторых не ставилась или не работала по каким-то странным причинам.
Ku2zoff спасибо за ответ, я помнил что вроде 6-я, но решил уточнить, простую там или с сервис паком надо.
насчет 2010-ой, она у меня есть, мне для универа нужна была, да и помню что-то под сорц пытался ей делать, но ксаш я попробовал, не компилит, куча ошибок, а адаптировать у меня врядли опыта хватит.
Студия без СП6 - генератор крошева.
Если б только она могла работать с компилятором 2010ой...
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
А вообще для кодинга ХЛ, есть разница какой эдишин, стандарт, профешинал, энтерпрайз и т.д.?
Хочу использовать взгляд игрока "в вертикальной плоскости" как вектор для движения по горизонтали. На всякий случай пусть будет круговое ограничение обзора. В конце функции 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]; }
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'
Дядя Миша У меня вращение только по двум осям и только на 10 градусов. Какой тут Gimbal Lock? Я пока просто игроком смотрю.
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'
Дядя Миша Нет, проблема возникает даже когда игрок просто стоит на месте.
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 );
Нужно сложить углы или повернуть вектор на угол, оба изменчивые. В calc_velocity_polar угол задаётся жестко в редакторе. Как поменять его на референс на энтитю?
При запуске карты в GS вылетает ошибка
AllocBlocck: full
Что она значит? и как ее исправить?
***FantoM*** лайтмапы кончились. Упрощай карту.
__________________
А ф ксашы заведется
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
XaeroX
А есть ли команды для компилятора или другие способы исправления этой ошибки?
Дядя Миша
В ксаше работает на ура.
***FantoM***
Способ есть - закрашивать невидимые грани текстурой NULL, а если это невозможно, то увеличивать скейл текстуры на таких гранях (но без фанатизма - а то вылезет другая ошибка, Bad surface extents).
__________________
__________________
__________________
Избавиться от ошибки мне не удалось.
Добавлено 04-10-2016 в 07:10:
Кому нужны исходники de_dust из кс:с вот ссылка https://yadi.sk/d/6NeP6ElEwAa9T
***FantoM*** так кому они нужны, если не компилятся?
__________________
-Brain is dead-
KiQ ошибка не в компиляции карты, а при запуске ее на GS.
К тому же,Xash хорошо переваривает такие карты.
***FantoM*** а, ну это тогда под ксашем гонять только
__________________
-Brain is dead-
__________________
ㅤ
Cybermax
Полигончиков маловато.
Если это шутка, то не смешная.
__________________
ㅤ
Нет, это не шутка
По сравнению с оригиналом де_даст из ксс, на карте по ссылке полигонов мало.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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)'
***FantoM***
По месту вызовов sin и cos аргумент, который передаёшь внутрь, кастуй в double
Примерно так:
sin(static_cast<double>(a)) |
env_laser бьёт из tank_laser, как сделать чтобы положение спрайта (не декали) в точке попадания обновлялось каждый кадр?
Появилось пару вопросов, не соизволите ли ответить.
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̶
Эх, щас бы свои движки написать или как минимум два года собственный мод разрабатывать, и не ответить в этой теме... А раньше отвечали
Зачем при каждом создании поля в классе используется DEFINE_FIELD? Там какой-то offset считается, но зачем он нужен для поля обычного типа, а не структуры, допустим?
__________________
ILZM коверкай название движка, приводи заведомо ложные утверждения и не удивляйся что тебе не отвечают.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша хорошо, больше не буду, обещаю. Это у меня привычка осталась после вас. Мне очень нужна помощь, потому что я в С и С++ не шарю (даже если и набрал 5 из 10 баллов в том опросе), только немножко в Java Хотелось бы не наломать дров изначально
__________________
XaeroX делать ИК на старой платформе, в которой устаревший геймплей - нецелесообразно. Так что давайте повременим с ИК)))0)0
SelectNextItem в player.cpp не используется нигде. И по игровой части все нормально без нее. И это на протяжении 18 лет стояло в коде
Что вы в данном случае понимаете под инверсной кинематикой?
nemyax расчет костей по обратной иерархии, я думаю. В халве, в принципе можно запилить, но это надо как-то трейсы из позиций кости выпускать, в общем муторно. Вообще, я заметил, большинство современных игр ИК не используют, а просто юзают заготовленные анимации
__________________
-Brain is dead-
Я к тому, что в некоторых движках айкеем называют динамическую коррекцию анимаций в случае, если особо обозначенная кость с чем-нибудь колоизирует. А у аниматоров айкей — совсем другое.
nemyax это одно и то же как и в редакторах, просто сама игра двигает хандлер. Это не только для коллоизации используется, а еще для перестановки ног в случае поворота туловища или просто для корректных переходов анимаций ног.
KiQ что ты подразумеваешь по большинство? В Max Payne 3, Battlefieldы всякие, HL2 для страйдеров как минимум, Mafia 3, Dead Space, GTA, наверное Watch Dogs, Unchatred, Tomb Raider и т.д. Все игры, где используются "живые анимации". Вот недавно кто-то туловище без торса показывал, там оно тоже было, так что большинство TPS или FPS используют
nemyax хорошо. Как бы ты реализовал без ИК, допустим ходьбу по ступенькам в HL? Очень хотелось бы послушать . Если что, ступеньки бывают разной высоты
Стырил бы код из третьего дума =)
Там проигрываются готовые анимации, но модифицируются в зависимости от условий.
nemyax не мог бы ты привести любой пример как они меняются на ходу? Я просто давно в него не играл
Проверь мое баловство. На латинскую P переключение между видами. Желательно погулять с маленькой скоростью через шифт или упереться в стенку. http://rgho.st/7hkWwgnK7
nemyax ты пишешь в начале что ИК не нужно, но потом скидываешь документацию про настройку ИК . Ладно
В "демке" ноги проваливаются в землю, потому что обычной интерполяции недостаточно и нужно уровень ног подправлять ИК. Это как один из примеров для чего она еще нужна
nemyax у тебя есть примерное решение? Пиши, возьму на заметку
ILZM
У меня нету решения, откуда? =)
Но думаю, в сети полно пейперов по IK, да и пара реализаций найдётся. Тот же блендер или Kraken. А что ты собрался делать?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша эта анима идет как слой. Она добавляется на конечную анимацию ходьбы, только там с руками была проблема. Пока не понятно как в КСГО на 24 кадровую анимацию добавляя 1-кадровую получают не дребезжащее удерживание оружия в руках. Там либо ИК, либо какие-то магические операции
nemyax у тебя в игре 20 пистолетов с похожими анимациями. Ты собрался их все 20 делать? Достаточно сдвинуть эффектор и все.
Как ты анимациями сделаешь разный уровень ног на ступеньках? Если на земле плоскость ровная, то на лестнице она возвышенная. У игрока тоже меняется угол ног. В совокупности это около 50 анимаций только на idle и walk. Ты хоть раз ковырял анимации игр? Такое ощущение, что тебе кажется типа на каждый чих есть готовая анимация, но это не так. Их количество уменьшается всякими слоями и ИК контроллерами
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
nemyax в чём колхозность? Есть игры, где вся анимация построена на инверсной кинематике.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
В том смысле, что он узкозаточенный под одну задачу и не делает всего, что обычно связывают с IK.
nemyax да с чего ты вообще взял что только нижних конечностей?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я про реализацию в думчеге. Там целевое использование как раз для нижних.
Я вообще впервые слышу чтобы в 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'
С хл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 я забыл тебе сказать (или не забыл, не помню). Но я тут проанализировал свободные переменные в формате студиомоделей и пришёл к такому выводу, что можно запилить развесовку как в хл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'
Так это ж просто праздник какойта!
А как в 2010 студии сделать чтобы после компиляции студия сама копировала длл-ки в нужную папку?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Chyvachok кагбэ тагжэ как и в шестой. Кастом билд вроде. Или пост-билд. Я постоянно пользуюсь этим.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
1. Объясните концепт CBasePlayerItem. У него есть два состояния?
1) Цепляется к игроку. Невидимое и не посылается на клиент
2) Материализующееся и игрок может его касаться
2. В каком месте создаются элементы массива m_rgpPlayerItems? Т. е. сами пушки
3. Хочется создать энтити с двумя состояниями: нематериальное у игрока, и материальное само по себе. Это нужно два разных метода Spawn?
4. Насколько безопасна такая реализация? По задумке энтити не видно.
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
__________________
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 в 23:50:
Дядя Миша у мене реалистичный мод. Вырежу нахрен pszAmmo и заставлю игрока думать патронами.
В !теории максимум 3 энтити оружия + 9 энтити магазинов. Это же немного, если сравнивать с массивом кватернионов для 512 костей и 32 игроков.
Добавлено 03-12-2016 в 23:53:
XaeroX Ок. Рад что ответили все. Ушел писать с уверенностью ̶M̶a̶g̶e̶n̶t̶a̶
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
int m_afButtonLast; |
int m_afButtonPressed; |
int m_afButtonReleased; |
1 | void CBasePlayer::PlayerUse ( void ) |
2 | { |
3 | // Was use pressed or released? |
4 | if ( ! ((pev->button | m_afButtonPressed | m_afButtonReleased) & IN_USE) ) |
5 | return; |
ILZM pressed и released это стейты кнопки - нажали её или отжали
__________________
-Brain is dead-
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
KiQ значит m_afButtonLast то, что нужно
Добавлено 05-12-2016 в 01:26:
Дядя Миша pev->button хранит кнопки из текущего кадра, а m_afLast из прошлого?
Послушай, как ты собрался делать инверсную кинематику, если не в состоянии отследить три строчки кода?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ILZM посмотри просто, откуда они считаются. Скорее всего, именно по pev->button. Созданы они для удобства - не более.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Как избавиться от двух пересекающиеся в центре линии
при рисовании спрайта через TriAPI?
***FantoM*** Размер спрайта - степень двойки?
__________________
Base Defense on Steam, ModDB
PLut у меня текстуры и спрайты всегда кратны 16.
вот такой у меня код
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(); |
Статья с гейдева.ру года так 2001го советует нам добавлять/вычитать УВ-координаты т.е. уменьшать проекцию меша на текстуру, чтобы края текстуры уходили за пределы билинейного размыватора. Мне пришлось делать так. А ещё там говорилось, что, чтобы избежать щелей между фейсами, надо, чтобы они наезжали друг на друга. Тоже чуть-чуть. В общем, уныние, анальщина, хаки и т.п.
***FantoM***
(struct model_s *)gEngfuncs.GetSpritePointer( SPR_Load("sprites/blackblur.spr") ), 0
аж ЧЕТЫРЕ раза за один кадр - стыдоба. Надеюсь, это черновой код.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
~ X ~ Слаботало!
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'
Дядя Миша очередной ксашевысер в тред, где тебя не спрашивали. Позорище.
***FantoM*** по-хорошему, спрайты надо сначала, ОДИН РАЗ загрузить, проверить, а потом рисовать по указателям или хэндлам. Коды hud_zoomcrosshair.цпп тебе в помощь. Например:
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 | } |
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Я к тому, что такие вещи было бы нелпохо писать туда, где это уместно.
У нас скоро в каждом треде будет по странице на тему "XDM vs Xash".
XaeroX бугурт от избытка спецификаторов?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ бугурт от передачи флоата по константной ссылке, очевидно же.
__________________
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]
ПАРОЛЬ: paladin_solo
Чтоб не засорять лишними темами напишу в тут.
Собственно проблема в том, что я не могу понять что не подключил к проэкту или не написал инклюд где-то по этому прошу помощи.Лог прелагается.
__________________
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
Гуглил?
__________________
__________________
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
Ну я к тому, что проверял ли ты общие советы, которые там дают? Про precompiled header-ы, например. И вообще, какая версия студии, проект сам создавал или взял готовый?
__________________
__________________
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
Ну это код смотреть надо. Какие-то хедеры не подключены. Подозреваю, что исходники были перенесены неаккуратно - авторами были сделаны ещё какие-то изменения в других файлах клиентки.
__________________
__________________
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.
__________________
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
Ну так у тебя заголовочные файлы STL не подключены, разумеется, не будет компилироваться. Открывай исходники GoMod и смотри, в каком месте они там подключены.
__________________
__________________
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.
Ну там std::string используется, для него надо подключить один из заголовочных файлов STL, а именно #include <string>. Поищи поиском по тому моду, откуда воду брал - в каком-то файле он стопроцентно подключается.
__________________
__________________
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.
Правильно думаешь. Как минимум, нужно подключить 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.
Индекс локального игрока на клиенте всегда будет единицей? Иначе говоря, можно ли получать свой никнейм таким способом: g_PlayerInfoList[1].name ? То есть мне не нужны ники других игроков (как в таблице счета, например), нужен только свой.
__________________
Base Defense on Steam, ModDB
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша Спасибо, а на выделенных индекс может быть другим? То есть, возможно, что если я зайду на какой-нибудь выделенный сервер и эта строчка мне выдаст ник другого игрока?
__________________
Base Defense on Steam, ModDB
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'
Дядя Миша Ну если бы я понимал, я бы спрашивал?
Спасибо, это то, что мне нужно было знать.
__________________
Base Defense on Steam, ModDB
Хотелось бы узнать, что нужно крутить в тенях от тов.Бузера, что бы достичь такого наложения как в хакнутых халфовских?
__________________
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.
Что такое ASSERT?
В чем разница между
1 | if ( !gmsgSayText ) |
2 | return; |
3 |
4 | MESSAGE_BEGIN( MSG_ALL, gmsgSayText, NULL ); |
5 | ... |
6 | MESSAGE_END(); |
1 | ASSERT( gmsgSayText > 0 ); |
2 |
3 | MESSAGE_BEGIN( MSG_ALL, gmsgSayText, NULL ); |
4 | ... |
5 | MESSAGE_END(); |
__________________
Base Defense on Steam, ModDB
PLut я не программист и точно не скажу. Но, как я понимаю, это УТВЕРЖДЕНИЕ.
ASSERT( gmsgSayText > 0 ); |
1 | if ( !gmsgSayText ) |
2 | { |
3 | ALERT(at_error, "gmsgSayText isn't initialized!\n") |
4 | return; |
5 | } |
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'
Ku2zoff XaeroX Дядя Миша Спасибо большое!
__________________
Base Defense on Steam, ModDB
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А я сделал ассерты так, что при 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]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша я рассматриваю вопрос с позиции что на сервере нет локальных игроков. На сервере может быть 0 игроков. А речь шла вроед о клиентской строне. Если человек будет на клиенте искать локального игрока всегда по единичке, его ждёт неприятный сюрприз. Даже если пишешь 100% сингл, руки не отвалятся написать GetLocalPlayer()->index (хотя, я бы поставил пару ифов и ассертов )
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
~ X ~ Я так решил проблему. Эта функция уже была, я только строчку добавил.
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
Почему спекуляр в рендере п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.
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'
Как лучше возводить компонент вектора в квадрат, x[1]*x[1] или pow(x[1],2)? Есть разница в скорости?
Как с помощью Xash postActivate system вызвать эту функцию вместо
SendInitMessage?
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.
Модераторы и Администрация
Переименутe пожалуйста тему.
***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*** убрал
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А имеет ли смысл задавать вопросы про классику типа трейсов или тчинков, которая уже разобрана в других местах? В расчёте не только на то что с человеком общаться приятнее чем с копипастой, но и на то что кто-то другой может заинтересоваться, вспомнить что тоже хотел по этому поводу что-то спросить или показать.
Crystallize я думаю, что стоит. Но для начала надо хотя бы пару раз прочитать каждую из Дядьмишиных статей об устройстве квейк-движков. Часть вопросов отпадёт.
По поводу трейсов и тчинков основательно советую покурить сорцы ксаша и ReHLDS, чтобы иметь хоть поверхностное представление, в каком порядке всё это работает. У меня конечно от трейсов и физики уже голова кругом идёт, но теперь я знаю, чем вызваны те или иные ограничения, и почему кое-что накодить нельзя, юзая только функционал дллок.
Добавлено 09-03-2017 в 02:45:
[оффтоп]И таки да, если вытащить физику брашевых энтить в дллку, появится шикарная возможность грамотно исправить мовевитч (что было сделано в hlfx 0.7). Если это захочется, наверное стоит копнуть в сторону MOVETYPE_COMPOUND в ксаше. Про него я ещё почти ничего не смотрел, но думаю, что это верное направление мысли.[/оффтоп]
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.
Ku2zoff запилишь паренты под халвой - мы тебе памятник поставим.
Добавлено 09-03-2017 в 11:29:
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Он его анонсировал всё-таки. Я уже и позабыл
Даа, было дело. Ну не расстраивайтесь, часть наработок вошла в 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'
Дядя Миша тем не менее, этот брашевый танк весьма прилично катается, в отличие от танка в Инвазионе, например. Но то, что есть в Инвазионе, вполне можно взять за основу и допилить.
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?
Почему не работает 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.
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.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
XaeroX хотите - верьте, хотите - нет, но первый API, который я стал накручивать для музыки был Xaudio. А шумиха по фымоду началась позже. Но я тогда уже понимал, что Wandows-only - это плохо. Потому на фымод и перешёл.
Добавлено 13-03-2017 в 13:36:
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
В консоли перестали выводиться сообщения во время загрузки. То есть ранее разные сообщения типа
__________________
Base Defense on Steam, ModDB
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'
Ребят, подскажите, в bsp какой паддинг у фрагментов лайтмапы? Один пиксель?
да нет там не какова падденга. 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'
Дядя Миша да не, я не об этом.
Вот когда рассчитываешь текстурные координаты фейса под лайтмапу, берешь обычные текстурные координаты и вписываешь их в квадрат (0,0) - (1,1). По краю делается какой-то "бортик"? Ну то есть вписывается в квадрат (0.1,0.1) - (0.9,0.9) или что-то такое?
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; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну вот в атласе текстурные координаты фейса точно совпадают с его лайтмапой, или они чуть меньше? Потому что я распаковал эти фрагменты лайтмап, и у соседних кусков крайние ряды пикселей совпадают.
Я думаю там режим текстуры clamp_edge или типа того (nomipmaps тоже вероятно должно быть).
В к3 такая фигня с крайними пикселями, если лайтмапа внешняя задана шейдером; внутренние по-другому налаживаются, корректно.
Ну естественно там 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'
Какой толк от CLAMP_TO_EDGE, если лайтмапа в атласе?
Если карта состоит из одного квадратного фейса, какие у него будут текстурные координаты лайтмапы? 0,0-1,1?
CLAMP_TO_EDGE это вроде clamp given texture region, don't tile, а не клапм текстуры целиком; во всяком случае практический толк очень даже толковый.
Garux чо-т я такой инфы не нашел. Везде пишут, что клампятся текстурные координаты в отрезке 0-1 без каких-то регионов.
Ну вот кроч. 2 куска из лайтмапы, соприкасающиеся пиксели у них совпадают, поэтому если их просто сложить рядом, получится такая ступенька. Но в игре такой ступеньки нет. Такое может быть, только если текстурные координаты сдвинуты от краев фрагмента. Так на сколько они всё-таки сдвигаются?
У тебя какие-то ошибки округления может?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша где именно, в игре или вытаскивании кусков? По-моему, ни там ни там ошибок нет.
Я беру у Trigger_Camera его yaw и передаю мессагой на клиент, прибавляю его ко viewangles игрока. Таким образом, утрируя, W и S всегда двигают игрока по оси камеры. Однако при стрейфе мы не движемся по ровному кругу вокруг камеры, как должны бы, а быстро уходим прочь по спирали. Чтобы идти по кругу, нужно повернуться к камере на лишние примерно 20 градусов. Это тот самый предиктинг виноват? Просто у камеры стоит SetNextThink ( 0 ), так что не похоже. Я пробовал менять cl_lc, cl_lw, безрезультатно. Попытался прикрутить для сглаживания углов функцию V_SmoothInterpolateAngles ( ) которая во view.cpp, но я вроде кормлю ей такие же vec3_t, а она выдаёт ошибку преобразования типов.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_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 ты определись уже кто у тебя за кем следит )))
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А существует описание формата ксашеского/голдсорсного mdl?
Я загуглил, конечно, но везде говорят смотреть сорсы моделвьювера, а мне как-то не хочется.
ncuxonaT описанием форматов моделей занимались ребята с xentax, у них там имелся универсальный распаковщик ресурсов (который работал на описательных скриптах) и вроде были попытки аналогичное сделать для моделей. Вики с описаниями форматов тридэ точно было. Только не знаю, есть ли там ХЛ.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ увы, ХЛ там не нашлось
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 в новых компиляторах вся реализация
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша в чем будет проще разобраться - в сорсах моделвьювера или компилятора?
ncuxonaT ты рисовать собрался или тени считать? Я подозреваю, тебе вообще не хочется разбираться, а найти готовую реализацию под задачу, я тебе и предложил, собственно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша мне чтобы тени считать, нужно рисовать модель. Соответственно нужно загрузить всю геометрию в VBO. Я надеялся найти какую-то документацию по типу этой про bsp: http://hlbsp.sourceforge.net/index.php?content=bspdef
Но раз такого нет, то по каким сорсам проще понять, где в мдле вершины, где треугольники и так далее?
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'
Дядя Миша и оно не отключается?
в cmdlib.h находишь строчку
#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 используй компиляторы для халфы из набора. Там она выключена.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша понял, благодарю
Парни, тут вопрос по егону появился.
Добавил туда SecondaryFire и анимацию соответственно, но при нажатии на пкм зараза жрет аммо, а анимашку не проигрывает(проигрывает, если долго жать клавишу).
Как сделать так, чтобы анимация воспроизвелась полностью?
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 | } |
Альтаттак - это переключение или другой луч?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
На пкм ракетой шмаляет
Возможное ли плавное затухания худа или он может только резко исчезать и все?
__________________
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]
ПАРОЛЬ: paladin_solo
Luciferchik ну вообще-то да. Нужно код отсчёта времени засунуть в CHud::Redraw или CHud::Think. Первая функция работает всегда кроме паузы, и только в игре (при открытом меню в стим версии не работает), вторая работает всегда кроме паузы. Подсмотреть уменьшение альфы можно в файле ammohistory.cpp.
Остаётся вопрос, как этим правильно управлять. Наверное придётся завести новый флаг наподобие HIDEHUD_ALL, например HUD_FADEOUT, и отправлять его с сервера. А в CHud::Think написать примерно такое условие:
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 | } |
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.
Luciferchik при чём тут таймер? Я про время, от начала угасания худа до полного его исчезновения (отключения). Как здесь:
float scale = (rgAmmoHistory[i].DisplayTime - flTime) * 80; |
ScaleColors(r, g, b, min(scale, 255) ); |
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.
Luciferchik сделай обёртки для всех функций (их штуки 4), рисующих HUD-спрайты и пихай туда какую угодно альфу. Я так сделал эффект повреждения костюма, когда HUD мерцает и корёжится.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
~ 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.
Luciferchik лол, гляди сорцы xdm правда, фэйдаута там нет. Теоретически можно, но всё равно излишество.
Дядя Миша не играл в крузис - не видел.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~: Хех, как раз подумывал скачать
Добавлено 14-04-2017 в 22:05:
__________________
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 один форумчанин сознался, что у него это заняло не более 20 минут включая скачивание. кроме того, он сразу узнал пару-тройку фишек мода в процессе.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
Я малость удивлён вашим удивлением... счас напишу что сырцы выложил крупным шрифтом, а лучше - отдельной новостью )
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Есть кнопка, которая открывает дверь. У кнопки стоят флаги toggle и dontmove. То есть кнопка мгновенно переходит из одного положения в другое. Юзать её можно соответственно без задержки, и положение двери может не совпадать с кадром текстуры на кнопке. Правильно, это когда открыта - зелёная, закрыта - красная. Если же кнопку поюзать, когда дверь движется, то кнопка переключается, а дверь не успевает.
Вопрос к мапперам: как вы решали такую проблему? Я вышел из положения, сделав кнопку невидимой (отключив флаг toggle, чтобы работала задержка юза), а визуально в качестве кнопки использовал func_wall.
Всё было здорово до тех пор, пока я не исправил баг с юзаньем объектов сквозь стены: тут важно, чтобы трейс упёрся именно в юзаемый объект, на который наведён прицел. А он упирается в func_wall, соответственно, кнопка не юзается. Ладно, это я исправил, добавив несколько строк в код кнопки, чтобы она работала как надо с флагами dontmove и toggle одновременно. Осталось только добавить какие-нибудь рамочки выделения юзаемого объекта на экран, например, как в Deus Ex. Тутор хотите, когда клиентский эффект сделаю?
P.S. код немного не такой как в спирите. Там сначала пытаемся юзать то, что попало в прицел (чтобы точно нажимать мелкие кнопки в лифте), если ничего нет, ищем стандартным способом ближайшую энтитю в поле зрения игрока. Естественно, в спирите кнопки юзаются сквозь стены. У меня уже после нахождения ближайшей энтити идёт проверка, целимся мы в неё или нет. Это конечно требует дополнительного допиливания, но c добавлением рамочек должно выглядеть круто.
>А он упирается в func_wall, соответственно, кнопка не юзается.
Так кнопка покрашена nullом и находится перед wallом.
>Тутор хотите, когда клиентский эффект сделаю?
Да, было бы очень кстати, например, рисовать [👆] когда находишься в радиусе кнопки.
__________________
http://www.moddb.com/mods/monorail-quest
Ku2zoff дверь - мастер для кнопки, пока она движется. Т.е. пока дверь не станет на место юзать кнопку нельзя.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В халфе и не сработает, нужен спирит или ксашмод.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Поглядел, чем UTIL_IsMasterTriggered отличается в спирите от оригинальной халфы. Оно там тащит за собой стейты, чисто спиритовскую фишку. Это много копипасты. Проще в тчинках самой кнопки завести условия, как сделал я. Хз, если буду тащить когда-нибудь из спирита, что-то связанное со стейтами, то перенесу. А пока и так сойдёт.
Может быть существует туториал: сетевой мод, 2 команды, оружие по классам. Просто почему спрашиваю, на моддб есть сетевые "class based" моды, с VGUI меню сделаны как под копирку TFC.
Как правильно вырезать клиентские пушки, чтоб было как в спирите?
__________________
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 Нумс, я все сделал по его тутору к 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.
Кстати, про сам спирит. Я давеча глядел виндиффом его код, сравнивал с актуальным хлсдк. Так вот, что хочется сказать: главная фича - это мовевитч, именно из-за него изменения в большинстве файлов. То есть, по сути, все другие фичи, окромя локусов и глобальных лайтстилей, портируются в любой мод довольно просто, изменениями в двух-трёх файлах. Собсно, мне таки придётся перешерстить весь код, т.к. планирую перенести мовевитч. Есть вопрос по поводу тчинков:
// use the old frametime, even if the engine has reset it |
gpGlobals->frametime = cached_frametime; |
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.
Luciferchik вырежи из hl_weapons.cpp всё, кроме HUD_PostRunCmd, а внутри этой функции закомменти вызов HUD_WeaponsPostThink.
Добавлено 24-04-2017 в 21:00:
Это, кстати, функция, из которой тчинкают клиентские пушки. Достаточно просто её закомментить, и они перестанут работать. Без правок на сервере будет криво, ясен пень.
Добавлено 24-04-2017 в 21:14:
Клиентские пушки это не так уж и плохо на самом деле. Да, время загрузки они увеличивают, но всего на пару секунд. Да, увеличивают траффик. Но, если выкинуть часть пользовательских мессаг, и заменить их инфой из дельты - будет наверное даже лучше. Возможно, потребуются какие-нибудь дополнительные изменения для устранения мелких багов типа запоздания смены бодей и скинов. Единственный минус здесь - ограниченное количество энтварсов в структуре weapondata_t, доступных для передачи данных на клиент. Половина иузеров и вузеров занята патронами
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 ну правда, с клиентскими пушками мод чуть дольше грузится. Конечно не на пару секунд, а на секунду-полсекунды, в самом конце. Не знаю, с чем эта задержка связана.
Ku2zoff время загрузки на уровень не увеличивают. Подгрузки самой библиотеки, наверное, да. Но какой же у вас CPU, что это выдает большую разницу?
Ну и при правильном их написании и использовании трафик они наоборот уменьшают.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Разве в халфе лимит не 64 оружия, в последних стим-версиях?
__________________
Давненько еще нашел у себя в моде баг. Загружаю карту через консоль, перехожу на новую через ченджлевел, и тут бац: на новом уровне появляется кровь на полу, предметы куда-то пропадают, а одна дверь вообще заглючила так, что я даже сам не понимал как описать ее поведение. Позже методом тыка я обнаружил, что если удалить некие HL1-3 файлики из папки сейв, то уровень загружается как положено. Сейчас прочитал статью Дяди Миши про ченджлевел в Халфе и так понял, что эти самые HL1-3 файлики должны своевременно удаляться, НО у меня они почему-то не удаляются. Точно такая же проблема была когда я недавно захотел во второй (не в первый) раз поиграть в Poke646, там уровни сразу загружались с убитыми монстрами, подобранным оружием, разбитыми ящиками. Сейчас глянул, там такая же ситуация, файлы HL1-3 в папке SAVE не удалены. Поэтому играл на WON версии) Хотя на других модах я подобного не замечал. Стоит еще отметить, что файлы создается не в папке [моймод]/save, а в [моймод]_russian/save, может быть, проблема из-за этого? Или в чем она вообще? Как это пофиксить?
Если это важно, то халфа у меня пиратская, лицензия есть, но на ней я не проверял это.
__________________
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну чем-чем обусловлен. Есть клиентский фрейм-тайм, а есть серверный.
Серверный фреймтайм как легко догадаться используют все объекты на сервере, кроме игроков. А у каждого игрока - свой персональный фреймтайм, посчитанный на клиенте, то самое поле 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'
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB]
Да ладно, нас с Ku2zoff от тебя всего час отделяет.
__________________
Ghoul [BB]
Про 26 апреля разговор был, про 2017 не было.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Почему при установке блендов на анимацию в qc файле, её фрем становится 2? Посмотрел в моделях из кс, там такая же ситуация, но некоторые проигрываются нормально.
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 | } |
__________________
XaeroX, выражаясь словами Мастера: "Хак и анальщина". Вот это действительно хак, так хак
__________________
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]
ПАРОЛЬ: paladin_solo
Дядя Миша
Там нужен не бот в смысле fake client, а бот в смысле приконнектившийся реальный человек, но который ничего не делает. То есть в самой простой реализации - клиент, запущенный на том же компе, что и выделенный сервер. Можно в принципе и урезанного клиента создать в рамках протокола, который шлёт примитивные юзеркоманды ничегонеделанья, единственная цель которых - не попасть в таймаут.
__________________
XaeroX а как это можно сделать? Средствами дллки возможно? Я пробовал создавать игрока и спавнить его, но для него даже PM_Move в таком случае не вызывается.
Ku2zoff
В смысле - как? Запускаешь халфу на компе и вводишь в консоли connect имя сервера. А чтобы этот клиент спавнился в секретной комнатке, сделай ему ник "SpawnMeInSecretRoom", а в движке проверяй этот ник и выбирай соотв. спавн-поинт.
__________________
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В чем возможна эта проблема работал на хр норм было запустил на 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.
Народ подскажите что не так, почему оружия не работает в 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 Ну у меня оно работает так подобрал пушку выпустил весь магазин сменил пушку меняю обратно, а остается модель той пушки которою сменил, клиентские пушки удалены у меня
__________________
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 У меня у всех пушек стоит флаг ITEM_FLAG_SELECTONEMPTY, никаких проблем нет. Клиентские пушки удалены. Может быть, в твоем случае дело в самой пушке? Может, в функции Deploy? Попробуй поставить флаг на другое оружие и проверить. Или у тебя на всех пушках такая проблема происходит?
у меня всего две пушки но они не халфовские,а добавление собой
код в деплой такой
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.
Luciferchik Попробуй поставить этот флаг на халфовские оружия, и посмотри, будет ли тот же баг
__________________
Никогда не поздно сделать мод под хл1
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.
Народ, подскажите как правильно сделать чтоб в параноевском худе где хп иконка ложилась под полоску хп.
З.Ы. Типо как на этой картинке.
__________________
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 у меня есть, не дам.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша дай карты твоего брата тогда.
__________________
XaeroX боишься что негр на часах запустит?
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'
Crystallize
А ты разве негр?
__________________
Дядя Миша ну а разве он работает?
XaeroX если особо захочется, это можно и самому написать.
Luciferchik Там HUD на VGUI1, всё есть, но немного в непривычных местах. Где иконка на твоём скрине я не вижу, разве что подложка, цифры и бар. Буду дома, могу поискать в каком там файле здоровье рисуется, сейчас не помню.
__________________
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.
Luciferchik Это худ из арранжевого мента? Почему полоска от правой части худа?
__________________
Base Defense on Steam, ModDB
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 Я вот нашел координаты плоски но как их крутить правильно не знаю.
Вот такой код там:
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.
Меняй значения m_iHealthBarXpos и m_iHealthBarYpos.
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 правильно сказано. Зачем трепаться и спрашивать про сорцы у каких-то жлобов, если можно написать самому.
a1batross
Для хамов есть замечательный форум - КСМ, туда и предлагаю отправиться восвояси.
__________________
XaeroX при всём моём уважении за полезные обществу дела, предлагаю посмотреть в первую очередь на себя.
a1batross
Объясни, пожалуйста, почему ты мне дерзишь на моём же форуме.
А также поясни, что именно я должен увидеть, посмотрев на себя. Если мне не изменяет память, то я обычно что-то делал, а уж потом рассуждал на форуме, что-де это можно написать. И прилагал видео либо скриншоты своей работы. Твоей работы я не вижу, следовательно, кредит доверия ты не заработал - а следовательно, я имею полное право ставить под сомнение твои слова и считать их априори трёпом. Конечно, ты можешь игнорировать моё мнение - но ты зачем-то мне хамишь. Пытаешься заработать респект этим, вместо кода?
__________________
pmove->velocity[2] -= (ent_gravity * pmove->movevars->gravity * pmove->frametime ); |
pmove->velocity[2] += pmove->basevelocity[2] * pmove->frametime; |
pmove->basevelocity[2] = 0; |
__________________
XaeroX потому что мне всё равно твой это форум или нет.
Не видишь -- ну и ладно. Я этим никак не взолнован. Ну не получу неодобрение или одобрение от какого-то XaeroX, сильно много не потеряю. Да и тебе зачем время на меня тратить.
И вообще, я с тобой согласился даже, не понимаю чем ты недоволен. Трёп не нужен, нужны результаты, это правильно. Только я ещё добавил, что высказывания нежелания делиться тоже трёп, поскольку цена этому -- нуль. Большинству вещей можно научиться самому, не выпрашивая что-то у нежелающих делиться. Именно на это я и намекнул. Полностью ваше право, но это не отменяет нулевой полезности от пустых и бесполезных сообщений.
И ещё раз повторяю, трёп не нужен. Посему предлагаю его закончить на этом. Если тем не менее хочется продолжить, то приглашаю в ЛС или джаббер.
__________________
можно ли в хл сделать определенному монстру эффект 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 а как ты гуглил?
Ku2zoff stipple это штриховка.
__________________
Ребят, как заставить работать правильно модели из контры в халве? Знаю что анимации не сходятся, а как их добавить и где чот не знаю, подскажите плиз
__________________
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.
9-вей блендинг добавь по вкусу
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша На форуме есть тутор по добавлению 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.
Luciferchik там только клиентская часть. Серверная (невидимая модель player.mdl) будет блендиться так же, как и клиентская видимая без добавления 9-way блендинга. На форуме целая тема была по этому поводу, несколько лет разжёвывали её. Просто так с клиента не утащить StudioSetupBones и не вставить на сервер. Там некоторые нюансы есть, поэтому бери сорцы regamedll, и тащи из них SV_StudioGetBlendingInterface, и всё, что за ним тянется. Можно конечно кое-что переписать, а можно скомбинировать с клиентским кодом, как делал я. Да и делал я не с regamedll, т.к. его тогда вроде ещё не было, а с каких-то кривых сорцев от китаяса.
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.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff
удивительно, а я стащил. Даже гейты серверные запилил. И небольшую дебаг утилиту по отрисовке серверных хитбоксов через Physic API Ксаша. Наглядно и красиво!
Отрисовка есть в моём форке ReGameDLL, а всё остальное могу выложить, но я прямо так особо не тестировал и поэтому не заливал.
Ну очевидно же гейт анимируется на сервере, а на клиент передаём гейтфрейм. Надо только его грамотно заварпить.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Здравствуйте. Назрел такой вопрос: я не знаком с маппингом под первый Half-Life, поэтому хотелось бы узнать - правда ли свойства rendercolor и renderamt для всех новых энтить изначально стоят по нулям? В fgd для Blue Shift, например, так и есть, но если это так же соответствует положению дел в первой халфе - подскажите, кто знает, почему так? Неужели при нулях в rendercolor с renderamt энтитя отрисовывается как если бы они были установлены в 255? Спасибо
__________________
За халфу я ничего не скажу - лень ковырять, а в волатиле я сделал так, что 0 должны быть все три поля рендерколор и при этом рендерамт, чтобы они все стали 255. Тогда чёрный цвет это (0,0,0,255). Может быть, оно и в халфе так?
__________________
У меня странная штука происходит в моде. В общем, скопипастил я еще давненько из Паранойи МП3-плеер. Он иногда заставлял игру зависать и вылетать, но это я все пофиксил. Но потом я заметил один странный баг. После загрузки сохраненки, в которой на данный момент играет музыка, то есть m_strCurrentMp3 у игрока != 0, музыка все равно выключается, а не должна. Я думал, это я криво что-то сделал, но потом вывел в консоль инфу и увидел следующее: "Warning: CMP3 : couldn't load music/quick", или же вообще "Warning: CMP3 : couldn't load music/half-life-000" после загрузки сейва. То есть понятно, он почему-то пытается воспроизвести название сейва сразу после загрузки этого же сейва. И я подумал, и в общем вот мой вопрос, может ли быть такое, что у меня каким-то образом мессаги сдвинулись или что-то подобное? Потому что это бред какой-то.
__________________
Никогда не поздно сделать мод под хл1
Sigurth ты вполне мог накосячить со строками. Это же Си. ДМ писал тут в соседней теме, что работа со строками в этом языке довольно странная и отпугивает многих. Давай сюда свой код, будем поглядеть.
Сейчас писал сюда фрагменты кода и в голову пришла мысль. На сервере есть строчка
ALERT(at_console, "MP3 player: playing file [%s]\n", STRING(m_strCurrentMp3)); |
CON_D_PRINTF("CMP3: playing %s%s (%s)\n", MUSICDIR, pszSong, bNotLooped ? "not looped" : "looped"); |
__________________
Никогда не поздно сделать мод под хл1
Sigurth ты сохраняешь в сейвдату игрока только имя трека без расширения, или полный путь с расширением? Второе вообще небезопасно. Лучше парсить всё на клиенте, а сервера слать мессагой только имя. Как у тебя формируется строка m_strCurrentMp3, и как ты отправляешь мессагу после загрузки карты?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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
Sigurth ты эту строчку в сейв-то сохранил?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша Сохранил
DEFINE_FIELD( CBasePlayer, m_strCurrentMp3, FIELD_STRING ), |
__________________
Никогда не поздно сделать мод под хл1
Sigurth так поставь брейкпоинт на клиенте и смотри кто же тебе её вызывает.
Если в трейсе будет CL_DispatchUserMessage(или что-то в этом роде), значит её точно выслал сервер, если так, то ищи все вхождения gmsgPlayMP3 на сервере, ставь везде брейкпоинты и смотри что происходит.
Я так понимаю, вся проблема в том, что вместо реального названия трека в сейв записывается нечто другое?
Да мусор у нево на клиенте
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
a1batross Дядя Миша
Короче, я понял в чем проблема. Альбатросс был прав, что вместо реального названия трека в сейв записывается нечто другое. А именно m_strCurrentMp3 каждый кадр принимает различные значения. Они меняются в зависимости от нажатия клавиш, а после сохранения игры - название сейва. Я решу проблему, как и хотел. Уберу эти проклятые строки и буду сохранять индекс трека, а на клиенте сопоставлять индекс и название. Всем спасибо
__________________
Никогда не поздно сделать мод под хл1
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша Да я уже переделал под индексы. Так удобнее даже
__________________
Никогда не поздно сделать мод под хл1
Кстати а как зарядить оружие меньше чем 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 );
Chyvachok
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 | } |
__________________
-Brain is dead-
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 а в чем вообще достоинство тех партиклей? Никогда не обращал внимание что они там вообще есть. Я вообще в эффектах не разбираюсь особо, те на видео это вообще первые эффекты что я в игру добавил.
Вообще я помню из инвазиона из новых эффектов разве что эффект попадания пуль в стены, ну или огонь из огнемета "поджарь себя", та же плазма супергана там просто спрайт.
Как вы эти парт-системы между собой различаете. Они все имеют примерно одинаковый функционал, кроме авроры. И главное отличие авроры - постоянно действующий эмиттер, вокруг этой концепции выстроен весь код. Обычные партикли устроены несколько иначе.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
~X~ про колоизацию вроде бы упоминал. Конечно, более вероятны проблемы с отсечением невидимых областей, или рисование лишних полигонов. Надо почитать тему по XDM 3.0.3.8, чтобы освежить это в памяти.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Кто нить знает нормальные примеры раскачки камеры при ходьбе типа аля сталкер или сру от страха?
__________________
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.
Из-за чего могут мерцать (моргать) энтити?
1 | typedef struct |
2 | { |
3 | int iNumber; |
4 | int iAmmoCount; |
5 | const char *pszAmmo; |
6 | } ClipInfo; |
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'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну, а если я захочу weapondata_t расширить? Там блин вообще доступны только 4 иузера и 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'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Для халфы он без надобности просто - код внутри самого движка.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну так и клиентский код тоже внутри движка есть. Но, тем не менее он продублирован в клиентке через интерфейс студиомодельрендерера, а в СДК даже есть пример кастомного 4-way блендинга. Почему на сервере нет такого примера, и почему блендинг не продублирован - зогадко.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Да смог, уже давно. Не совсем такой, как в кс, но работает как надо.
Как играть в WON-версию с музыкой с виртуального CD-привода?
Ku2zoff Кстати, вот таким образом в хл сохраняется в сейврестор структура dynpitchvol_t у ambient_generic
DEFINE_ARRAY( CAmbientGeneric, m_dpv, FIELD_CHARACTER, sizeof(dynpitchvol_t) ), |
__________________
Никогда не поздно сделать мод под хл1
Sigurth там написан огромный комментарий по этому поводу. То есть, сохраняется структура как бинарные данные, и менять её (в коде) не стоит, если важно, чтобы старые сохранения загружались корректно. Но, тем не менее, этот вариант прекрасно мне подходит.
Ну что, товарищи. Магазины я сделал. Перезаряжаются циклично, запоминают количество патронов внутри себя. Заряжают либо на 1 патрон больше (если остался в стволе), либо ровно объём магазина (если ствол пустой). Осталась пара косметических мелочей, например, оставление этого самого патрона в стволе, и сохранение в магазин количества m_iClip - 1. И ещё что-то. Ну и сохранение в сейв. Кстати, я тут пришёл к выводу, что патроны достаточно хранить в виде целого числа таким образом:
int WeaponClips[MAX_WEAPONS][MAX_WEAPON_CLIPS]; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А, спомнил. Проблема в том, что далеко не у каждого оружия есть магазины. Было бы удобнее рассматривать эти магазины как полноценные энтити, я об этом уже говорил. Потому что у магазина есть модель магазина и кол-во оставшихся патронов в ём. А то что они эдикты жрут. ну надо посчитать сколько магазинов на 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'
Я думаю вот что: зачем нужна куча полноценных энтить, когда из дохлого игрока выпадает ствол с текущим заряженным магазином, а рядом рюкзачок (веапонбокс) с запасными магазинами внутри. Использованный магазин при перезарядке можно выкидывать темпэнтитей, пусть исчезает через некоторое время. А полные (новые) подбираемые магазины так и оставить обычными ammo_*, ну или точнее clip_*, пусть только добавляют игроку не именно патроны, а патроны в определённый запасной магазин.
Добавлено 13-07-2017 в 01:12:
visual studio. xashXT
вообщем эта тема же посвящена нубо-вопросам ведь так? ладно, задам несколько вопросов:
1) Бывает с визуал студией(win32,использую под виртуальную машину не ну а что? ), проблема , а именно , ни с того , ни с сего , слетают методы уже написанные, которые я вообще не трогал вылазит сообщение типа не смогла найти методы и кнопка ок. Кто-нибудь с таким сталкивался ?
2) Еще одна трабла с визуал студией этой. Если ты вдруг не исправишь все ошибки и закроешь программу(по идее ничего страшного ведь не случиться), после повторного запуска этой программы она не хочет открывать этот проект (server.dsp), менял тока его расположение файлов именно такого D:\папка с файлами компиляции dll. Тот же вопрос:Кто-нибудь с таким сталкивался ?
3)Написал пушку которая не наносит урон, то есть работает как краско-пульт блин, еще трабла с анимацией HOLSTER когда начинаешь стрелять пушка с левого положения переходит по середине , что очень усложняет прицеливание ну и некое мерцание есть как поправить?
4) для пушки я писал свой тип патронов, добавлял в читерскую impulse 101 и все равно остались баги. Вопрос такой с какими файлами кто работал под ксаш нужно работать (дайте весь список), чтобы нормально ничего не пропустив докодить эту пушку. спасибо.
SOZON
Ось какая? 6я студия корректно работает только с XP и более ранними версиями. Начиная с 7ки, она годится разве что для поиска по файлам и компиляции
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
Crystallize Gigabyte GA-970A-DS3. Проц FX8350, видяха GTX 760. А что, в драйверах дело? Странно.
Ku2zoff ну например я полтора года пытался ломать тфлекс по инструкции, и пришёл к выводу что это материнка виновата в том что на более старые компы даже с семеркой кряк ставится с полпинка, а на новых приходится проходить многоступенчатый ритуал. (всё интел) Хром 49 вон тоже даёт BSOD только на Асусах.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Так стоп, если у меня fx amd не помню ток какой линейки, то какие могуть быть траблы? И чего все так хейтять amd линейку?
Из-за чего может не работать параметр _ambient у light_environment? Я уже даже на карте-коробке проверял. Обычное солнце работает.
настройка компиляторов.Тока поставил 2010.
такой еще вопросик можно скрин по настройке компиляторов? получается проект)каталоги vc++) (просто интерфейс русский блин слегка так непонятно), дирректории link.exe и cl.exe я нашел. А то так попробовал сейчас в стоке компильнуть кучу проблем вылезло, хотя вроде все правильно сделано. стандартный проект ничего не заменено и.т.д под X64 поставил собираться. То есть я правильно понял ярлык можно в режиме совместимости вообще запускать , а вот библиотеки можно X64 сделать? Да и ничего такого интересно в exe нету , что интересовало бы в самой игре. И чего также dsp открывать в открыть проект ?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Можно ссылки.
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
Не цитируй, пожалуйста, весь пост в ответе. Оставляй в цитате только нужное.
__________________
Ku2zoff я тебе там вопрос задал. Ты не видел?
Какие стандарты игнорирует шестая студия?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша современные. Если некоторые проекты, изначально написанные в шестой студии, не собираются другими компиляторами без предварительной правки, значит, что-то в ней не так. Это не значит, что шестёрку надо выкинуть, нет. Она не для всех задач подходит. Например, современное кросплатформенное приложение в ней разрабатывать - не самая лучшая идея. Для этих целей можно сразу использовать GCC, которая чувствительна к тысяче мелочей, т.к. линуксоиды помешаны на соответствии стандартам. Поэтому, наверное, линукс так плохо совместим между собой от версии к версии. Тут, как говорится, каждая лягушка хвалит своё болото. Не важна среда разработки и компилятор, важен конечный результат.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
После компиляции .qc в studiomdl, удаляются ненужны кости.
Как отключить эту фичу?
***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'
__________________
-Brain is dead-
__________________
Дядя Миша
Где можно посмотреть описани всех параметров Mdlкомпилятора?
Какое отношение либы имеют к языку? Студия это вообще IDE, как из-за неё программа будет работать медленнее или быстрее?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro я к этому и веду. Кому-то расширения языка и новые тулкиты нужны и полезны (тем, кто создаёт приложения для массового рынка, часто кроссплатформенные), а кому-то они нафиг не упали (например, Дяде Мише, у которого движок на сях написан, и вообще он в консольные утилиты любит, а не в гуй).
А уж чем собирать - без разницы. Спор-то у нас идёт о стандартах, а не о расширениях языка. Если ксаш не собирается 2010-17 студией без дополнительных правок - это признак того, что правила написания кода для новых компиляторов более строгие, чем в шестёрке. Ну и ещё хедеры и либы могут быть с изменениями, а кое-что deprecated (кажется правильное слово), может быть вообще выкинуто в новых версиях.
Ничего, доживём до того момента, когда x86 станет deprecated. Вот тогда точно придётся переехать на 2010 студию, т.к. более ранние не умеют собирать в x64.
Добавлено 20-07-2017 в 14:50:
Сейчас Дядя Миша снова какой-нибудь аргумент приведёт в пользу шестёрки, я уверен. Я про остроту и простоту языка заранее в ответ на него скажу: HLSDK, адаптированный под новые студии, отлично собирается в шестёрке. О чём это говорит? Правильно, о правилах написания кода, которые не соблюдались в шестёрке.
Ещё раз повторю, каждому своё, всё зависит от конечной цели. Если ксаш собирается шестёркой без проблем, то и менять ничего не нужно. Будет. Ровно до той поры, пока не возникнет необходимость. Например, портирование куда-нибудь.
FiEctro
Под студией обычно подразумевают также её родной компилятор.
В отличие от многих других IDE, в микрософтовской так просто его не поменяешь. Только в 2015 (емнип) появился выбор между CL и Clang, да и там последний несколько специфичный и заточенный под студию (например, параметры командной строки).
Добавлено 20-07-2017 в 16:51:
__________________
__________________
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мои пять копеек.
Шестёрка имеет только одно преимущество перед всеми другими студиями -- в качестве сишного рантайма софту собранному шестёркой нужен только MSVCRT.DLL, который во всех актуальных виндах есть из коробки.
Всем остальным студиям нужен MSVCRT определённой версии, который идёт всегда вместе с установщиком, а потом в системе ворох Microsoft Visual C++ 20xx Redistributable. Отсюда можно и надумать множество субъективных проблем с распространением, установкой и прочего.
Впрочем, если кто-то умеет делать так, чтобы новые штудии использовали MSVCRT.DLL доступный в системе, попрошу рассказать. Хотя не думаю, что это возможно касательно С++, но может возможно для Си.
Добавлено 20-07-2017 в 18:03:
XaeroX
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В хаскеле всё время вставляют код после ретарна, и ничего.
Как увеличить размер определенного игрока? Чтобы большая модель не была в земле.
fl0wer заменить ему модель на такую, которая большая, и ориджин у неё смещён ниже. От ориджина до пола в стоячем положении должно быть 36 юнитов, в сидячем - 18. Но размеры игрока останутся прежними, а трейсинг весь съедет, если серверную модель не изменишь на увеличенную. Да даже если изменишь, не факт, что будет трейситься правильно.
Если ты хочешь сделать более-менее грамотно - сделай игрока по-умолчанию сидячим, чтобы у него юзался "сидячий" хулл. А когда увеличиваешь его - убирай флаг FL_DUCKING и меняй модель. Ещё придётся поменять размеры хуллов в дллке и использовать хуллфайл для компиляторов с новыми размерами (чтобы игрок стал не только в два раза выше, но и шире и длиннее). И самое печальное - игрок не сможет приседать, то есть будет как в первокваке, всегда в полный рост, и в два раза больше, если увеличен.
Короче, довольно сложно это. Можешь напороться на всякие подводные камни. Но если тебе надо только визуально, сделай по первому варианту.
А как увеличить ориджин до пола? В pm_shared? Я увеличил модельку игрока в 4 раза. Вышло 144 юнита, попадает по нему всё ок, но моделька в полу.
Могу ошибаться,но нужно же еще размер задать,у вас это UTIL_SetSize вроде
__________________
//generated by Quake, do not modify
//I want QuakeC in XashNT
http://www.moddb.com/games/conscript
Я тут хотел попробовать свою запекалочку на картах из Жекиной Ареи 51, но возник казус при загрузке BSP. У некоторый фейсов какое-то запредельное число рёбер (nEdges) 10К-50К, такого быть просто не может. Но Ксаш и Паранойя грузят эти карты спокойно. Подскажите, где я мог ошибиться, при условии что обычные карты загружаются нормально? Загрузку BSP делал по этим спекам: http://hlbsp.sourceforge.net/index.php?content=bspdef
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'
Дядя Миша я понимаю, но ведь старый Ксаш открывает и не плюётся. 31 отличается чем-то от 30 помимо разрешения лайтмап?
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 когда не рубишь в си, толку от кода немного
Добавлено 27-07-2017 в 03:53:
Ну и еще я подумал, что проще, чем разбираться в коде, будет спросить у людей, которые это написали, почему у некоторых фейсов nEdges и iTextureInfo содержат что-то непонятное.
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'
Дядя Миша не, проблема оказалось не в этом. Короче, я лох. Нужно было просто увеличить лимиты. Потому что я считывал в массивы фиксированного размера, не проверив, влезет ли. И в итоге одни массивы перезаписывали куски других.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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
Дядя Миша так он на паскале, вы бы не стали разбираться. Я скорее спрашивал, нет ли каких-то изменений в формате записи фейсов, лумпов или типа того.
(_-=ZhekA=-_) да пока что ничего интересного. Но то, что у тебя 1000 лампочек на карте, это конечно.. странно. Не помнишь, сколько пеклось освещение на r0a2?
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
ncuxonaT
Зачем ты пишешь на паскале? На дворе вроде ж не 1999-й год.
__________________
(_-=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
__________________
ncuxonaT char(rand(255))
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
торрентик
дайте нормальный торрентик на visual , чтобы прям работоспособный,а то уже несколько сборок по 15 гб , скачал все запарывают со своими драйверами приложения некоторые потом не запускаются вообще 000000x5 вот такая ошибка вылазит и все. поэтому снес ее от греха пока. И сама прога заглючила запускаю можно только файл открыть нажать ни проект ничего не открывается... операционка win7
кинул в лс
Корочи, вопросец такой. Наверное поднимался мной и ещё кем-то в моей же теме-туторе про ноги игрока от первого лица. Пишу сюда, т.к. не понимаю, почему возникает нижеописанный баг. И таки выходит, что вопрос нубский.
Немного теории-предыстории:
CStudioModelRenderer::StudioDrawModel вызывается много раз за кадр для целой тучи моделей. Если в неё запихать рисование кастомной модели (даже не используя темпэнтить, а просто подменяя модель на манер p_моделей), и не обозначить условие когда рисовать, вместо всех моделей станет рисоваться кастомная. В случае с ногами игрока самым подходящим условием является проверка, что текущая модель - это вьюмодель:
if (m_pCurrentEntity == gEngfuncs.pfnGetViewModel()) |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Придумал. Нам же надо сообщить движку, что thirdperson включён, а потом сразу выключить, чтобы не исчезла вюмодель. При этом не включать камеру от третьего лица. Значит, нужно поменять условия функции CL_IsThirdPerson на такие, которые камеру не включат без команды thirdperson. И все проверки на CL_IsThirdPerson в клиентке (например в view.cpp), поменять на какую-нибудь свою, которая будет знать, включена камера или нет. До кучи добавить колоизацию камеры, чтобы она не проваливалась в стены.
Как научить npc подниматься по лестнице?
fl0wer либо сделать это скриптом, как в CS CZ: DS дельта снайпер залезает на башню, либо долго и упорно кодить. Ты наверное обратил внимание, что в ХЛ нет монстров с разными мувтипами? Ну то есть таких, которые сначала бегают, а потом летают, или ползают, а потом плавают. Из-за сложностей в реализации, либо из-за ненадобности. Так вот. Чтобы монстр лазил по лестнице, он должен иметь на этот момент MOVETYPE_FLY. Переключить мувтип несложно. Сложно сделать навигацию и код движения, чтобы монстр не тупил. И самое сложное - анимации.
Добавлено 06-08-2017 в 13:21:
Если хочешь, сначала стоит попробовать сделать чужих, которые могут лазать по стенам.
З.Ы. можно пойти извращенским путём, как мапперы Cube 2: Sauerbraten. В сойере нет вертикальных лестниц, поэтому вертикальные лестницы там - суть обычные лестницы, но с очень короткими ступеньками в 1 тамошний юнит. Игроку, чтобы залезть, достаточно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1) Пожалуйста, можете скинуть инфу или рассказать про создание интерфейса меню. Например, в CS меню закупки, как отрисовывается затемнение экрана(понятно, что прямоугольный примитив, я имею ввиду функцию), как задаётся ширина и высота каждого пункта меню. Я как-то давно смотрел текстовые файлы CS, и какой-то из них как раз описывал пункты данного меню. Но, мне бы узнать как и что описать в самой программе.
2) Есть ли какая-либо документация по программированию для GoldSrc. Я уже на этом сайте где-то видел, что человек объединял гайды из сети в единый файл. Но, я имею ввиду наподобие https://developer.valvesoftware.com/wiki/SDK_Docs. Просто, пока что кое-какие свойства объектов не совсем понятны за что отвечают.
semerjon качай тутор из аттача в этом посте.
Добавлено 21-08-2017 в 23:12:
Ku2zoff По-моему все туторы из веб-архива и так доступны на Wavelength?
Crystallize нет. Например, те, что были на valve-erc недоступны. И на planethalflife некоторые. Кое-где страницы живые ещё, но не полностью.
Ku2zoff Пожалуйста, помогите найти ещё статьи про сообщения и события. Автор про них упоминал в туторе.
semerjon сообщения? Ну это наверное текст из titles.txt. Ничего сложного. Просто добавляешь свои строки туда, вот и всё. А про события в самом туторе написано, функция AddActionSignal. С помощью сигналов можно менять как переменные на клиенте, так и отправлять команды на сервер и клиент. И даже функции какие-либо вызывать.
Вообще, это единственный тутор по ВГУИ, который объясняет теорию, а не только показывает, как сделать на практике. Так что пробуй, делай.
Я не совсем понятно написал. В одном из абзацев написано:
"При нажатии на кнопку, как и задумано, панель со свистом закрывается, курсор исчезает, и мы можем бегать как обычно. Чтобы показать нашу панель опять, надо откуда-нибудь вызвать gViewPort->m_pMyPanel->setVisible(true), а затем UpdateCursorState. Откуда это вызывать - это, конечно, ваше дело. Можете создать мессадж или эвент, и при его приеме показывать панель (создание мессаджей и эвентов в этой статье не рассматривается)"
И я так понял у него есть статьи на эти темы. Возможно, там будет рассказано про то, как какой-либо клавише назначить процедуру открытия VGUI. А так, всё то что написано в статье про VGUI, всё ясно.
Есть какой-нибудь тутор по редактированию меню? Я так понял, его описывает файл menu.cpp, но что-то после пары поправочек, изменений не происходит.
semerjon меню шлётся с сервера. В виде строк. А с клиента отправляются команды при выборе строки. Зачем что-то менять на клиенте, если все изменения идут с сервера? Опиши точнее, что ты хочешь сделать.
Касательно ВГУИ это не действует. Там менюшки строятся на клиенте. Можно конечно передавать с сервера что-то, вроде MOTD.TXT, но сами меню пишутся на клиенте.
Ku2zoff Я имел ввиду меню паузы(или, ещё проще, Главное меню), в котором содержатся пункты меню: Resume game; Create Server и прочее. А так просто, интересно, можно ли переоформить меню. Вместо пунктов меню, сделать что-то наподобие быстрой строки из DOS-овских программ. Там ещё писали F3 Open и т.д.
semerjon в меню можно изменить только текст, фон и звуки. В вон-версии текст в виде большой BMP-картинки, фон тоже BMP + видеоролик в верхней части фона. В стим-версии текст находится в GameMenu.res, + можно поменять шрифт. Фон там в виде нескольких tga-картинок, есть специальная прога, которая нарезает готовое изображение на части и делает текстовик с масштабом под разные разрешения: BackgroundLayout.txt
Больше в халфе ты ничего сделать не сможешь. А вот в ксаше можно как угодно кастомизировать меню, т.к. его исходный код открыт.
Ku2zoff а как насчет Cry of Fear?
Cybermax там кастомный лаунчер, написанный на б-гмерзком дотнете, который по определённым адресам делает инъекции в движок, на манер AMXX.
Как из input32.cpp получить доступ к viewentity->angle?
Crystallize ну я думаю, что доступ можно получить только в view.cpp. А из инпута слать команды с помощью глобальных переменных. А что за надобность такая возникла?
Добавлено 01-09-2017 в 12:17:
Есть ли возможность активировать ScreenShake на клиенте? На сервере это пользовательское сообщение, а вот на клиенте нет ответки, она зашита в движок. Не хотелось бы тащить из ксаша код на клиент.
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 | } |
А еще проще взять внешний указатель на весь 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'
2Ku2zoffя дополнил структурки Chud но он говорит ошибка 2274 на твою строчку.
2Дядя Миша
В общем я понял, нужно GetEntityByIndex делать всегда. Поганый Си уводит не в том направлении, говорит непроинициализировано.
Зачем нужны структурные переменные, ну те которые в халфе оканчиваются на _t? Почему нельзя сразу обратиться к переменным из которых состоит сама структура blah_s?
Зачем вот этот "треугольник":
code:
struct blah_s {...} blah_t struct blah_s *lol *lol = &blah_t
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Опытные пользователи подскажите, возможно ли реализовать регенерацию жизней игрока в hl sdk 3.2 либо есть тутор по созданию такой функции. Заранее спасибо.
Eternal12 конечно можно. Вот небольшая тема по этому поводу, может быть поймёшь суть, если немного знаком с кодингом, или умеешь внимательно читать код Valve. Даю посказку где ещё можно подглядеть: ищи по pev->airtime в файле player.cpp. Там есть регенерация после выныривания из воды, когда игрок немного задохнулся.
Вот тут тутор для Сорса из Alien Swarm SDK. Скорее всего без всяких правок заработает в HL2, и с небольшими правками в HL1.
Добавлено 03-09-2017 в 21:31:
Crystallize да там какая-то бредятина неформатированная.
Имя структуры нужно, чтобы использовать её многократно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
if (m_flLastDamageTime < gpGlobals->time && pev->health < pev->max_health) |
К ошибке could not load library client.dll приводит глобальная переменная
code:
float purerange = 1-joy_yawthreshold->value;
Подскажите пож, как правильно сделать выключаемые текслайты для спирита? Для халфы трюк с функ_валл и лампочкой у меня получился. А в спирите лампочка не нужна, лайтстиль задаётся прям в коде функ_валла. Но чота не работает нифига. Использую джек и вхлт, что в комплекте с ним.
Может быть есть карта-пример именно для спирита? Для халфы я аж целых две нашёл, но это немного не то.
Добавлено 13-09-2017 в 19:25:
Доброго времени суток форумчанам, возникла такая проблема с кодом смены рук в движке тринити не совсем понятно именно вот этот момент из кода
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 ты можешь спавнить их монстермейкером. Если нужно именно воскрешение, как у зонбе в кваке, тогда придётся кодить. И не забывай про кускование. Разорванного на мясо довольно трудно воскресить.
Может глупые вопросы, но после работы в 3ds привык при создании локации, чтобы было без лишних полигонов и чётко по размеру. Хотя понимаю, направления программ отличаются.
1) Возможна ли работа с метрическими величинами(сантиметрами и миллиметрами)?
2) Есть ли возможность задавать фиксированный размер объектов? Например, что если потребуется создать комнату 400см x 300см x 300см. Конечно, я могу примерно сам подогнать, задав величину grid'а, и растягивать по сетке, но мне кажется по любому есть более лучшее решение, в котором, примерно как в 3ds, заполнив поля параметров объекта.
3) Есть ли возможность изменить местоположение объекта, задав координаты? Наподобие панели в 3ds XYZ.
В Хаммере(Джеке) насколько я знаю
1)нет
2)нет
3)нет
semerjon смотря в чём ты работаешь. Если речь про хаммер и джек, то:
1). Нет. Умножай сам размеры на 2.5, получишь сантиметры. (1 юнит ~ 1 дюйм).
2). Можно использовать заранее заготовленные куски карты (с известными тебе размерами) и масштабировать их с помощью инструмента "Трансформировать".
3). Можно сдвинуть объект относительно текущего положения на определённое кол-во юнитов, используя инструмент, как в п.2.
И вообще, постарайся выкинуть из головы мысли о метрической системе и точном соответствии размеров и масштабов игровых объектов объектам ИРЛ. ИРЛ размеры и пропорции выглядят в игре очень маленькими. Помещения получаются тесными, а проходы узкими. Делай карты на глаз, сверяясь с оригиналом, тогда будет выглядеть хорошо.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Возможно, немного туго объясню вопрос.
Допустим, задача создать локацию в виде куба. Для этого мы 6 раз создаем браш и внутри локации нашей локации будет сущность игрока. По сути, для нашего персонажа требуется 6 полигонов от всех этих 6 брашей. Вопрос. Что происходит с полигонами брашей, которые не попадают в обзор игрока? А ведь, даже если с помощью noclip выйти за пределы куба, то мы не будем видеть эти стороны прямоугольников, а будем видеть нашу локацию(то что внутри куба).
И ещё, чтобы бы если был инструмент создания плоскости (plane из 3ds), а не box'ы "вытягивать". Я понимаю, что если создать браш размера нашей локации, и внутрь браша вставить сущность игрока, то, точно не помню, игрок при спавне в нём застрянет и вроде звуки воды ещё будут. Но я к тому, что если создавать 6 брашей, то будут лишние полигоны, которые игрок не сможет видеть и займут лишнюю память.
Думаю вы поняли, что я хотел сказать. Хотя личные догадки тоже есть, возможно компилятор предусматривает, что не будет попадать в обзор и отсекает лишнее.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Появилась идея сделать мирную зону. Заметил что func_water имеет на несколько видов оружия действие как запрет выстрела в воде (например mp5).
void CMP5::PrimaryAttack()
{
// don't fire underwater
if (m_pPlayer->pev->waterlevel == 3)
Следовательно подскажите в какую сторону копать либо делать новую копию func_water и вырезать от туда все лишнее что бы было как не в водной среде. Либо копать в сторону функции waterlevel == 3. Выслушаю все мнения по этому поводу.
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
Похоже, нужно просто дополнить сам класс CBasePlayer свойством bool m_bInJail(файл Player.h). И по поводу PlayerPrethink, может в других версиях как-то по другому, но у меня PreThink. Чтобы лучше ориентироваться пользуйся окном классов. Сразу открываешь hldll - CBasePlayer - PreThink.
Задача такая: есть функ_валл, который должен быть несолиден только для игрока. То есть игнорить его должна только трасса в pm_shared. Все прочие должны в него упираться, чтобы оставались декали, взрывались гранаты, не могли пройти монстры. Как это сделать? Копал в сторону PM_PlayerTrace, там последним аргументом принимается int, который видимо индекс игнорируемой энтити. Но это не индекс. Что это, и в правильном ли направлении я вообще думаю?
Добавлено 19-09-2017 в 18:32:
Думал не туда UTIL_SetGroupTrace помогает решить задачу.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff отлично получилось, кстати пистолет в руке большой, это ты научил игру аттачить w_модели? Вообще забавно выглядит то что w_модели оружия в халве какие-то огромные, больше чем p_модели. Кстати во второй халве там тоже как и в ХЛ1 у оружия есть кости руки там, то есть тоже игра соединяет скелет моделей оружия с моделью игрока или НПС.
>>Осталось решить пару проблем, и можно в виде тутора это сделать. Для сингла на данный момент всё отлично, а вот в мульте кое-какие огрехи проявляются.
Выглядит отлично! Какие проблемы мульте?
Ku2zoff а чево не сделал мини-хулл на месте второго хулла?
Он же нужен только здоровым монстрам, типа гарга.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
та какой гарг в мультиплеере?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Можно ли в хаммере вставлять prop_модели. Я знаю как в версиях для source добавлять. Но я немного запутался. Примеры моделей в sdk есть, но добавлять нельзя чтоли? Хотя можно создать новый класс в fgd, но наверняка есть более простое решение.
Можно, для этого есть энтитя cycler.
Еще есть monster_furniture - это если надо, чтобы модель умела играть скриптовые анимации.
__________________
Решил попрактиковаться на Source. Скачал из стима Source SDK, Source SDK Base 2007. По инструкции из документации настроил проект, DLL компилируются, копируются в папку с модом. После создания мода через SDK, у нас имеется проект Episode Two(сама игра у меня не установлена, так что не потестил я ничего). Как я понял, если наш GoldSrc-мод не мог найти файлы в своей директории, то он мог использовать контент самой HL, находящийся в папке valve, то тут мод может использовать контент в директориях, описанных в gameinfo.txt.
Честно говоря, пока что не хочется лишнюю игру устанавливать ради отладки, мне пока что HL1 хватает, но Source тоже хочется. Возник ступор. Можно ли найти какое-либо применение Base 2007 для модификации? Всё-таки ~4 гб весит.
З.Ы. Похоже стоит удалить моё прошлое сообщение в техн. разделе.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
Никогда не поздно сделать мод под хл1
Я где-то встречал упоминание cstrike_custom кажется.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я помницца в своей имплементации физикса для проверки застрявшего тела чекал каждый вертекс поинт-контентсом на солид. Тоже тупо, но вполне работало.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Сделал ползание отдельным хуллом. Геморно оказалось из-за жёсткой привязки 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:
И при оригинальных так же. Проходит в узкие дырки спокойно.
Вопросы по поводу ресурс-файлов(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) Мне бы статейки какие-нибудь на эту тему, может есть? Даже, если от старых версий есть, скиньте пожалуйста, просто из интереса почитать.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Я сюда запостил, потому что тут в принципе раздел посвященный HL, а также чтобы отдельную тему не создавать.
По поводу определённого набора команд и редактирования. Не думаю, что тут всё жестко заточено. Раньше, когда я увлекался разными сборками CS, были сборки Version Pack от cs-redemax.ru. И у них помню в главном меню свой пункт был. То есть, дополнительная пункт, открывающий фрейм, в котором вроде бы указана информация о сборке. То есть, похоже действительно можно создавать свои элементы.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Как же тогда окно выбора модели персонажа, меню закупки, а также вспомогательное меню(на клавишу H)?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den, cstrike/resource/UI - тут содержатся элементы интерфейса CS.
Ku2zoff, так в итоге есть ли возможность создавать свои элементы интерфейса таким образом? Просто для чего тогда делать такую систему, если ею нельзя пользоваться.
Кстати, не знаю как в старых версиях CS, но в нынешней отсутствует GameUI.dll.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Если вам интересно как использовать VGUI2 внутри клиентки, то вот есть https://github.com/CKFDevPowered/CKF3Alpha. Рекомендую почитать. Китайцы восстановили хедеры и прикрутили VGUI2, прям как в CS.
Саму по себе логику работы GameUI менять нельзя, поскольку вальва в движке захардкодила путь к GameUI.dll как valve/cl_dlls/GameUI.dll. Никаким образом заменить в моде не выйдет. (Кроме перезаписи памяти)
В res-файлах на те же кнопки можно повесить команды. Как там слайдеры ставить я ее знвю.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den, спасибо. То что элементы редактировать можно это я понимаю. Я интересуюсь именно про создание новых. То есть, создать свой res-файл, каким-либо образом создать команду для пункта command файла GameMenu.res, чтобы тот открывал мой элемент. Вообщем, похоже тут плачевно.
А так, про VGUI-элементы я уже читал, а сейчас интересуюсь созданием элементов интерфейса через res. Ведь как-то же в CS реализовали такую систему, хотя может тут уже вэлв постарались, а кроме CS не могу привести пример.
__________________
Никогда не поздно сделать мод под хл1
Sigurth в бинарнике движка строка присутствует именно такой, какой я описал.
Ku2zoff в CSBTE сорцы неполные, так как реализована только та часть, которая посредством перезвписи кода в памяти будет заменена. То есть он использует оригинальный клиент. А в ckf исходники полные. Бери и компиляй.
1) Либо в книжке по программированию игр или в статейке где-то прочитал, посвященным DirectX, что во время инициализации компонентов, каждый "пытается" получить аппаратное обеспечение у компонентов системы, а в противном случае он работает программно. Неточная формулировка, пытался найти фрагмент текста в книжке, не смог, но где-то я это видел. Как понимаю суть в том, что если какой-либо из компонентов не может работать с устройством системы, то обработка информации происходит через CPU.
В таком случае, я не понимаю с помощью чего происходит обработка, с помощью драйверов(не DirectX, а например nVidia)?
2) Про видеорежим Software в HL.
В этом режиме обработка графики происходит посредством графических драйверов? Или может без использования GPU? Просто не совсем понятно, почему графика в низком качестве, и это не только во время геймплея, но и фон меню игры тоже выводится нечётко. И кстати, не работает net_graph.
3) Никогда ещё не играл в первый квейк, но вроде там нету поддержки Direct3D, в отличии от HL. В связи с чем, в обновлённой стимовской версии HL убрали его поддержку?
4) Порой в некоторых видео, или статьях где обсуждают про Direct3D и OpenGL, часто вижу, что у игр с использованием OpenGL стабильнее fps. Сразу скажу, ни в коем случае я не пытаюсь устроить срач, а лишь хотелось бы узнать в чём дело. Ведь у DirectX очень обширные возможности, но порой OpenGL "облегчает" работу программы. Может тут вы свою точку зрения расскажите? В каких ситуациях, что лучше использовать?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den А ещё там 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'
Вот вам пример как Z-файтинг отсутствует в D3D.
З-файтинг может отсутствовать только в софтварном рендерере, при условии что з-буффер целочисленный. Собственно это прямое следствие использования плавающей точки, а не какая-то заслуга именно софт-рендера.
Добавлено 09-10-2017 в 18:27:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А с чем кстати вот это связано? Вадник из чернобыля, показаны мип-уровни, но в игре при удалении от объекта они не используются, хотя по идее должны быть, т.е. текст остаётся русским
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
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 заметил, но оно ж нефизичное всё равно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
что в софтваре, что в гл отстойная вода, для большинства случаев эти бесконечные круги и волны не подходят
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
XaeroX как говорил наш друг - это вкусовщина. Ну тебе нравятся эти капельки, так чтоже с того?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Назрел такой вопрос, почему худ не может воспроизводить черный цвет это баг такой что-ли?
__________________
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.
В аддитивном режиме черный цвет трактуется как полностью прозрачный.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша:А сменить его можно?
__________________
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.
рисуй через 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'
__________________
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.
__________________
Можно ли на клиенте перезаписывать v_origin игрока напрямую, не полагаясь на SetViewAngles?
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.
Luciferchik
Это вроде бы через TriAPI делать можно.
И ещё можно 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.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Есть вопрос почему в тринити рендер не написали бамп это типа ради совместимости так сделали, рендер же написан на основе параноевского редера и хотелось бы узнать много ли нужно писать в тринити чтоб его туда перенести ещё интересен спекуляр
__________________
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.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
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.
__________________
__________________
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.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
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
Да это одно и то же. Я ни разу не видел, чтобы кто-то употреблял понятие "бамп-маппинг" в оригинальном значении. Кроме википедии и "умных" статей о графике.
__________________
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.
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.
То, что ты в дллках делаешь - этим двиг уже не занимается. То есть самому всё обеспечивать нужно.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
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.
__________________
__________________
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
Это кто тебе такую глупость сказал?
В Won-версии халфы есть Direct3D-рендерер. Не веришь - сам включи и убедись.
__________________
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.
Luciferchik
В стим-версии его нет в принципе. Ни эмулятора, ничего.
__________________
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.
Там вроде нет никаких лимитов.
__________________
__________________
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.
А, это. Так это стандартный лимит 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.
__________________
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 была Win7 x64, SP1. Работало норм. На десятке не пробовал, думаю, тоже заведётся. Скорее всего дело в железе, а точнее в каких-то драйверах, которые конфликтуют с древней IDE.
Ku2zoff Да, я пробовал на Lenovo и на Thinkpad X40, с сервис-паком и без, разные разрядности, всё равно работает.
Расскажите как работают ивенты в халве, вот в нас есть такой ивент "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.
event 5004 32 "weapons/reload.wav" |
При закрытой консоли на экран печатается только последние 4 консольных сообщения, как сделать больше?
contimes?
__________________
XaeroX Спасибо! Жесть какая, и ведь гуглится только в контексте сорса или кс16, в исходниках тоже не ищется. Но работает.
А что, на клиенте диапазон углов 180, но клиентские функции AngleMatrix и VectorAngles всё равно работают с диапазоном 360?
Хотелось бы поинтересоваться. Возможно ли на ГС реализовать 3д небо как в Паранойе, но без использования хакнутой опенгл32.длл? В спирите небо на бесконечном расстоянии от игрока, а в Паранойе сделано очень красиво, но работает только на ее кастомном рендерере.
__________________
Никогда не поздно сделать мод под хл1
Sigurth сделать моделью?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Никогда не поздно сделать мод под хл1
__________________
Никогда не поздно сделать мод под хл1
__________________
Никогда не поздно сделать мод под хл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.
__________________
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.
Возникла идея сделать 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.
Luciferchik нужно сделать ещё по одной модели оружия от 3-го лица, которая приаттачена не к руке игрока, а к спине. Запихать m_iId нужной нам пушки в pev->iuser4 игрока, например, и проверять его на клиенте, и аттачить нужную модель в коде StudioModelRenderer. Только вот нужно определиться, какие пушки стоит отображать, а какие нет. К примеру, если в твоём моде, как в кс, первичное и вторичное оружие, то отображать надо первичное, когда оно не в руках. Навесить на игрока всё оружие, которое в данный момент не в руках (см. Iron Storm) довольно проблематично, я пробовал навесить три пушки (из четырёх: основное, запасное, пистолет и ближний бой) - начинается путаница в какой переменной какую пушку слать на клиент.
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.
Luciferchik тогда вот тебе совет: проверяем pev->weapons на наличие бита нашей первичной пушки. Если этот бит есть, проверяем, в руках ли она. Если нет, шлём инфу на клиент, а там рисуем приаттаченную модель. Примерно так:
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 | } |
Попались как-то вроде сорцы ОпФора, мне вот интересно это кто-то тестил? Код виревок и боссов рабочий тут вообще?: https://github.com/malortie/halflif...ch-malortie-op4
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
Есть вопрос к моделерам, есть у меня пушка она в игре отображается в левой руке но мне нужно чтоб была правая собственно как это реализовать?
__________________
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
Общий принцип: отмасштабировать на -1 по оси, которая лево-право, а потом флипнуть нормали меша. Если есть анимация, то отмасштабировать подобным образом и ключи в нужных каналах. Как конкретно ты всё это будешь делать, зависит от твоего софта.
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.
Luciferchik
Ну выложи, но я успеха не гарантирую. Исходник в SMD?
Luciferchik ну флипни модель тулзой (gFlip) или ручками в милке, ну чё ты?
Можешь конечно и в коде её флипнуть, аки в кс сделано. Только в софтваре это не работает.
Добавлено 01-12-2017 в 22:13:
Кстати, вся эта леворукость пошла от ускоглазого, то есть человека-гуся, когда он делал кс. Вот уж не знаю, что за необходимость была делать леворукие модели. Может быть, чтобы раскосые азиатские глазёнки не косили ещё больше?
__________________
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.
А при компиляции попробуйте $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'
Дядя Миша
Чёт scale_<ось> вообще на компиляцию не влияет.
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.
Luciferchik там когда с милки экспортируешь в Half-Life SMD там появляется окошко с тремя галочками, Reference - экпорт модели, Sequence - экпорт анимации, тебе надо эту выбрать когда анимы сохраняешь, и With Vertex Weights(HL2) это экспорт мягкой привязки, или как она там точно называется, в первой халве она не используется, так что эта галочка ни на что не влияет, мягкая привязка это когда вертекс не к одной кости, а к нескольким привязан, это для рук и персонажей чтобы суставы их плавно сгибались.
__________________
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.
Ребят, такой вопрос. Можно ли скомпилировать проекты xash в 2010 студии, При том, что проекты от 6 версии?
Если - да, то не могу понять в чём проблема почему куча ошибок.
Стоит ещё упомянуть. Когда при первом запуске проектов Source-движка, вызывается мастер импорта, и в конце показывает отчёт результатов. Тут он тоже запускается, но более простой - с кнопками Да/Нет, и всё быстро проходит.
Если - нет, может можно сделать смену набора инструментов платформы. К примеру, на Source тоже приходилось сменять на v100 (2010 версия)/
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.
semerjon там код надо переделывать под десятую студию, так его не скомпилишь просто десяткой, выбивает кучу ошибок, я лично не стал париться и просто поставил 6 студию.
Добавлено 02-12-2017 в 22:24:
Luciferchik модель что ты скинул не скомпилиться без текстур, там только smd, я думал просто ее GFlip-ом отразить, а он работает уже с скомпилеными моделями в mdl, а не в смд.
Кстати может он у тебя не работал т.к. ты пытался smd вместо mdl в нем открыть, если что попробуй с этой ссылки, у меня эта точно работает: https://gamebanana.com/tools/4907
__________________
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 А модель у тебя из сорса? Если да то ты ее Crowbar-ом декомпилировал? А то я давно заметил что после него Milkshape только 1 кадр анимации грузит. Попробуй разве что поставить в кровбаре Format for stricter importers, и после этого открой анимацию, играется ли она в самой милке. Ну и сам кровбар у тебя чуть устарел, там в смд файлах написана 44 версия, у меня 49-ая, не знаю насколько критично это, но можешь по новее скачать, кстати его научили декомпилировать модели из 1 халвы тоже, прога активно разрабатывается и периодически новые версии выходят, щяс глянул уже 51-ая есть.
А ошибку с гфлипом я такую впервые вижу, но и модель у тебя если честно зверь детализации, 10 субмоделей, 9 из них имеют по 2000 поли, модель тяжелая даже я бы сказал для сорса, не говоря о первой хавле, к примеру эмка из ХЛВЕ с обвесами и руками всего 4000 поли имеет, то есть как 2 куска твоей модели.
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.
Подскажите, есть ли возможность без проблем использовать два light_environment с разными значениями на одной карте? Ну, например, сначала у нас день. Потом мы спустились под землю, там задели триггер, который выключил одно солнце и включил другое. Мы вылезли на поверхность, а там уже ночь. Я ставлю два солнца, но переключение между ними как-то фигово работает.
Ku2zoff
А вот ДМ, вроде, в разрабатываемых коптеляторах делает. Но я пока не успел затестить, т.к. не дошёл ещё до сборки карт с аутсайдом.
__________________
http://www.moddb.com/mods/monorail-quest
Ku2zoff кажется, доктор давно делал что-то такое. Или там только скайбоксы менялись...
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
UMGEBRACHT тогда уж.
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Почему игрок бегущий точно вбок от камеры бежит по спирали, а не по окружности?
у тебя луч от камеры до игрока и от игрока строго в центр должен светить, счас куда то в бок. углы игроку как расчитываешь?
__________________
vk.com/skullcapstudios
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 да ты бери и напрямую их пиши в камеру
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Кто-нибудь пробовал 3dsky в trinity renderers? Я заменил оригинальные дллки паранойи на тринитивские (названия энтить одинаковые), только добавил на сервере env_model, которого нет, чтобы все энтити в скайбоксе отображались, да исправил гадский вылет на клиенте - ноль эмоций. Поправил названия мессаг под паранойевские - с оригинальной паранойевской клиенткой работает.
В чём косяк? Не уж-то просто для фана автор тринити оставил код 3D неба, да ещё и сильно переписал его? Для тех, кто не в теме: в тринити выкинута хакнутая opengl32.dll. В паранойе без неё не работает вообще весь рендерер, но на самом деле, хакнутых функций там всего две: glDepthRange и wglChoosePixelFormat. В коде паранойи есть комментарий:
// dont draw skybox entites, DepthRange will be incorrect |
Может, там что не дописано? Всё-таки тринити недоделанный проект, помню, в том же коде для партиклей приходилось что-то менять, чтобы появились брызги на воде, для которых в самой тринити были готовы и конфиги и анимация. Есть две версии исходников: 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д-ская
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вопрос на мильён
Что не так с Remap?
В игре:
В модел вьювере дяди:
__________________
Base Defense on Steam, ModDB
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'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша Спасибо, разобрался!
__________________
Base Defense on Steam, ModDB
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша да сделал я это всё. Освещение моделей меняется при переключении солнышек.
Второе солнышко не освещало мир. И знаешь, в чём была проблема? Именно в параметре -noskyfix. Видимо, если одно из солнышек изначально выключено флагом, то параметр не нужен. Всё заработало. Ну и эта, ещё важно, чтобы у солнышек были разные имена.
Делал когда-то я такую модель:
Уже неплохо для prop-модели.
1) Я так понял, через cycler лучше добавлять prop-модели, которые просто ничего не делают, а лишь наполняют локацию. Но что-то как-то неприятно смотреть в редакторе на разноцветные кубы, нежели чем на сами модели. Нельзя ли никак это сделать? Если что, то можно и свой fgd подправить.
2) Посмотрел исходник карты c1a0 (аномальные материалы). Мне кажется или большая часть объектов, наполняющих уровни сделаны из брашей? Просто для чего тогда в SDK такое большое количество prop-моделей. Вообщем, тут я хочу понять на что делать упор, либо создавать брашами модели, даже те, которые в 3ds уже неплохо сделал, либо всё же можно и с cycler работать.
3) в qc-файле мы можем указывать bbox'ы. В cycler они будут ли учитываться?
1). Нужно добавить особый параметр в свойства энтити, чтобы хаммер 3.5 или джек отображали студиомодель в 3D виде (джек и в 2D может):
code:
model(studio) : "Model"
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff нужно было свой советский сервант сделать для курсовика, тоже игру пытался пилить. Делал по фотке:
Более детально, не стал делать. В принципе, всё пытался делать, связанное со старой тематикой.
P.S. не ожидал, что картинка такая большая будет
Ждём-с новых компиляторов, чтобы компилить ими. Китайские сейчас управляются с заготовкой моей карты за 70 секунд. Будет интересно сравнить с новыми, что обсуждаются на ксм.
Добавлено 17-12-2017 в 01:40:
semerjon шикарная мебель. У меня стенка есть такого плана, только жёлтая, тоже на ножках.
Я тебе посоветую делать детали брашами (в халфе), но не миром и func_wall, а func_detail. Только слишком сложные или мелкие конструкции делай моделями. А для экономии MAX_MODELS в движке, ты можешь загружать брашевые пропы из внешних BSP, есть такой фокус. Только у них освещение всегда одинаковое, взятое из их "родного" BSP-файла. В ксаше (а тем более в п2) можно и моделями, Дядя Миша работает над этим, освещение выходит весьма и весьма годное.
Не будет ли проблем с диспропорцией, если я буду придерживаться реальным размерам объектов (для юнита буду делить на 2,54)?
И ещё, получается это тоже самое, если бы мы в 3ds делали все составляющие моделей из примитивов, и накладывали их друг на друга. Компилятор сможет "отрезать" лижние полигоны, которые не будут попадать в обзор камеры?
Ku2zoff видимо, мне нужно было дописать про компилятор карт, про них и имел ввиду.
Хотел ещё спросить. Будет ли разница в удобстве между Джеком и VHE? Могли бы, несколько отличий сказать. Думаю сейчас купить себе.
semerjon покупай джек конечно. Он очень удобен. Преимущества перед хаммером значительные, начиная с отображения/скрытия служебных текстур и отображения триггеров полупрозрачными, и заканчивая кросслатформенностью и стабильностью в новых ОС. Также, можно без проблем мапать большие карты (больше 8192х8192х8192). А ещё можно багрепортить и засылать реквесты автору. Вполне возможно, что фича, нужная тебе, будет реализована в новом билде.
Главной причиной, по которой я когда-то перешёл на джек, было то, что он не вылетает, в отличие от хаммера 3.5. Сейчас я уже привык к этому редактору, и хаммер кажется мне деревянным и неподатливым. Одна только проблема - не дружит со встроенной графикой говноинтел.
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
Спасибо, учту
Ещё моменты:
минимальная ширина коридора что бы в нём гарантированно смогли разойтись 2 игрока -- 72, монстра -- 96 юнитов;
минимальная ширина дверей -- 40 юнитов, оптимально 48; высота дверей 96-80;
минимальная ширина комнатушки -- 120 юнитов;
если делаешь реалмэппинг про рашку, то ширину комнат в пяти/многоэтажках лучше делать в 128--144 юнита, а ширину несущих стен 8-12 юнитов.
__________________
http://www.moddb.com/mods/monorail-quest
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff Я пытался задавать моделью откомпиленный кубик, но на нем не рисовались декали, фонариком и вообще любыми источниками света не освещался. Вышло хуже, чем просто модель ставить, но коллизия была нормальная. И то не уверен, ведь это кубик. Хотя может быть я делал это неправильно.
__________________
Никогда не поздно сделать мод под хл1
__________________
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]
ПАРОЛЬ: paladin_solo
Как узнать количество bodyparts у модели на клиенте?
Пробовал
model->numframes |
((studiohdr_t *)IEngineStudio.Mod_Extradata(model))->numbodyparts |
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 ); |
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 | } |
__________________
Никогда не поздно сделать мод под хл1
Если у тебя 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'
__________________
Никогда не поздно сделать мод под хл1
Кстати до меня дошло почему. numbodyparts это не сами субмодели, а бодигруппы с субмоделями, и вот в каждой бодигруппе есть уже сами субмодели в количестве pbodypart[i].nummodels
__________________
Никогда не поздно сделать мод под хл1
Как в кваке повесить на одну и ту же клавишу одновременно +left и +moveleft?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
alias надо наверное
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
да можно без алиасов
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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'
Решил попытаться настроить компиляцию Xash для VS2010. Нашел набор инструментов платформы v60 (Visual Studio 6) от Daffodil. Вообщем, это сборник инструментов для поддержки старых платформ в новых. Решил пока что подготовить один проект для компиляции, изменил свойства. Результата нету. Как и была куча ошибок, так и осталась. На их сайте люди пишут, что этот набор реально работает, хотя и есть обсуждения ошибок.
Может я не совсем понял, что означает набор инструментов платформы? Как я понял, через набор инструментов ведётся работа с проектом в среде разработки с какой-либо конкретной версией, в зависимости от определённой версии набор инструментов платформы (вроде туфта, не смог по-лучше сформулировать).
Даже не знаю, что предположить. Может никаких параметров самого компилятора не изменилось или ещё что?
Может у вас какие-нибудь мысли будут?)
Думаю кто-то наверняка хотел бы поработать с Xash, и при этом не скачивать старую версию VS. Мне, например, не хочется устанавливать лишние программы. А вдруг, потом интерес пропадёт.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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'
Crystallize
при отжатии.
if( key_cmd[0] == '+' )
{
key_cmd[0] = '-'
Cmd_ExecuteString(key_cmd);
key_cmd[0] = '+'
}
Конечно код там не такой и это не совсем правильно, но это чтобы вы понимали, если не хочется читать текст на русском языке.
Да, так делают голдсорс, ку1 и ку2.
Crystallize ну ты же ковыряешься в коде ввода, ты что вот это не видел?
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'
Решил исправить ошибки, возникающие при компиляции Xash в vs2010. Сделал серверную DLL, получилось и работает. Клиентскую всё исправил, кроме одной строки.
1 | //Файл - cdll_int.h |
2 | //Строка - 43 |
3 |
4 | typedef int HSPRITE; // handle to a graphic |
Да зачем тебе?
У меня проблема с точностью да наоборот - я хочу XDM собирать под шестёркой.
2010 для меня это злое зло...
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Расскажите мне, что такого есть в шестой версии, чего нету в десятой. Меня друзья всё упрекают, то что я 15 или 17 не использую, но мне просто это пока что не нужно. Десятки вполне хватает без всяких дополнительных средств диагностики программ.
semerjon
typedef int HL_HSPRITE; |
__________________
Base Defense on Steam, ModDB
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
В чем разница между player->blahblah, player->curstate.blahblah и pparams->blahblah? (ну там для координат, углов)
И что такое refdef?
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'
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?
Ku2zoff там ещё и prevstate есть? о_О
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Расскажите пожалуйста, как можно сделать, чтобы npc могли брать и перемещать предметы. Например, на некой плоскости есть предмет, у npc есть анимация, на которой вытягиваются руки. Хотелось бы, чтобы с данной анимацией npc мог якобы брать предмет и, допустим, перенёс на другой плоскость.
В принципе, мысли тут уже кое-какие есть. Можно сделать у данной анимации набор субмоделей, содержащий предметы, которые npc сможет держать. И когда персонаж подходит к предмету, активируется данная анимация с определённой субмоделью, а тот удаляется, только ума не приложу как заспавнить предмет в новой области. Вроде, что-то логичное тут есть. Но у меня такое чувство, что может сделать как-то по уникальнее решение. Надеюсь, не бред.
Вообщем, что хотел. Как лучше реализовать сцену где npc перемещают предметы?
semerjon А что из себя представляет объект? Если что-то брашевое, то можно использовать для этого func_wall_toggle, а если модель какая-нибудь, то сделать ее как monster_furniture и с помощью scripted_sequence мгновенно переместить на нужное место. Я на 99.99% уверен, что это сработает, т.к. это тоже монстр.
__________________
Никогда не поздно сделать мод под хл1
Sigurth Модель, допустим - кастрюля (посуда сразу на ум пришла). Можно ли её присоединить к рукам таким образом, что когда npc передвигается, то вместе с ним и модель? Похоже то, что я представляю реализовать очень сложно
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
semerjon можно кастрюле по идее анимацию сделать, и как-то ее расчитать чтобы она вместе с анимацией НПС нормально смотрелась, но я не аниматор, как такое правильно сделать не знаю. Ну или бодигрупами, но не знаю стоит ли эта вся сцена всей возни. А именно приаттачить я думаю никак средствами халвы, даже в ХЛ2 в начале игры разрабы пошли на хитрость с чемоданами и пакетами с едой которые носят гражданские реализовав их как отдельное оружие.
Такую привязку можно сделать средствами триде-пакета. И экспортировать отдельно перса и кастрюлю с идентичными скелетами. Если соответствующие анимации у них запускать одновременно, то всё будет ок.
Как думаете, как в HL2 реализован уровень перед Рейвенхольмом (когда мы играемся с гравипушкой и питомцем Алекс)? По моему там питомец как раз брал предметы с карты.
semerjon был тутор по Спириту как делать подбираемые предметы.
Cybermax это я не для оружия, а для создания что-то типо сцены, состоящей из последовательностей скриптов. Да ладно, я уже понял, что у меня скилла мало для реализации такой задачи.
Народ помогите пожалуйста разобраться с Спиротовской "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.
Luciferchik ну что в поиск вбивать? Возьми и закомментируй state_t (или как там его правильно) в cbase.h. При компиляции сервера студия тебе вывалит все места, ссылающиеся на этот enum с ошибками. Их и надо будет копипастить вместе с соответствующими функциями.
Как сделать такое: нажимаю назад, игрок не идёт назад, а моментально разворачивается и идёт передом? Ну как в half-life 2d https://www.youtube.com/watch?v=km3m4A_Hjmc
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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.
Luciferchik ЕМНИП, то скейл читается сразу на клиенте. Если в StudioModelRenderer есть ответка, то скейл будет работать. Утащи код из спирита. Только учти, что физический размер энтить при этом не меняется.
Yo Den ну я для этого беру yaw и прибавляю к нему абсолютный угол с устройства ввода, 180 в твоём случае. Могу дать сорцы HL2d, вроде были у меня.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den нет, input.cpp или input32.cpp, там есть всякие процедуры типа IN_mousemove, или лучше CL_createmove.
Или вообще, любое место откуда можно вызвать GetViewAngles/SetViewangles. Конкретно в твоём случае можно предложить что-то типа
viewangles[1]+=180*CL_KeyState (&in_back);
И дальше привести к представлению -180/180.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Как сделать отрисовку модельки поверх VGUI1 меню на HLSDK?
__________________
Base Defense on Steam, ModDB
Все отлично получилось) В общем, тупой вопрос:
У меня используется такая строчка
cam_ofs[ YAW ] = cam_idealyaw->value;
т.е. значение яв берётся из cam_idealyaw, который в коде, а не который консольная переменная. Как сделать, чтобы юзалась консольная переменная? В рилтайме, чтоб можно было менять в игре
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Но ведь ты уже юзаешь квар cam_idealyaw. Судя по тому, что это указатель он получен от движка, в значтт уже зарегистрирован.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
PLut, AFAIK, они рисуются в разном порядке. Сначала 3д, потом 2д. Самый последний из 2д -- вгуи. Хотя ты можешь переоппеделить отрисовку, вызовами GL настроить отрисовку 3D , нарисовать модельку и вернуть всё на место.
Понимаю, что старая тема, но всё же http://half-life.ru/forum/showthread.php?threadid=7380 адекватно ли она работает в мультиплеере? Меня зацепила тем, что мп в разы быстрее грузится
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
UTIL_MakeVectors. По какому алгоритму рассчитываются вектора v_forward,
v_right, v_up? Никак в интернете понятный алгоритм не могу найти. И можно ли на двумерной плоскости использовать вектор подобный v_forward? Например, имеется точка на плоскости, и в зависимости от угла направления, нужно получить такой вектор, который можно будет умножить на определённое число (допустим, для создания ещё одного вектора, находящегося на каком-либо расстоянии).
Что-то наподобие: gpGlobals->v_forward*8192.
semerjon, где ж ты искал? По запросу angles to direction vector первая ссылка на stack overflow. https://stackoverflow.com/questions...ectional-vector
В HL немного по-другому из-за отличий в системах координат. Конкретную реализацию можешь найти в ксаше.
__________________
I'm on github
I'm on opendesktop.org
__________________
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.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
чот туплю дико, где хранится урон мультиплеерных пушек? Для сингла скилл.цфг это понятно
Добавлено 09-01-2018 в 23:52:
хотя лучше бы даже было б сделать, чтобы оружия в мп считывали данные из скилл, но хз как
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den, урон пушек в мультиплеере хардкодится в CHalfLifeMultiplay. Смотри в метод RefreshSkillData.
__________________
I'm on github
I'm on opendesktop.org
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'
о, точно, благодарю. Удалил нафиг всё это, чтоб мп брал значения из конфига
// 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;
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Crystallize
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Что-то не могу найти в коде, где рисуется 640_pain.spr. Хочу его по центру экрана влепить. В плеер.цпп что-то есть про дамагу, но хз, где оно
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den, это на клиенте в health.cpp
__________________
I'm on github
I'm on opendesktop.org
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Crystallize ты точно мою статью читал? Или только думаешь что читал?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Кстати, а кто какой версией фотожопа пользуется? И какая самая нормальная и чтобы плагины для .DDS на ней работали? Я с тех пор как поменял винду скачал какую-то пртативную версию, но она галимая.
Chyvachok CS6
Chyvachok У меня CS3 портативная. Но она не сохраняет никакие мои настройки, после перезапуска все сбрасывается. Вообще я искал такую, чтобы быстрее грузилась и не висла. Эта грузится не очень быстро на моем компе. Хотя мне вполне хватает и этого, чтобы иногда мазать кровью текстуры или чего еще с ними сделать. А про плагины не знаю ничего.
__________________
Никогда не поздно сделать мод под хл1
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Chyvachok
Мне для рисования/редактирования текстур вполне хватает самого обычного гимпа последней версии. Фотожоп всё таки это сильно из пушки по воробьям.
__________________
http://www.moddb.com/mods/monorail-quest
thambs в гимпе есть векторы?
У каждого своя техника рисования.
Когда ты в растре делаешь 99% - это одно, а когда там шейпы с динамическими эффектвми - другое.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
thambs
Я вот наслушался таких советов, а потом файл .ico не мог в нем отредактировать и сохранить так, чтобы он не превратил фон с прозрачностью в чёрное говно. Точнее я бы мог потратить ещё пять-десять минут времени. Но для такой примитивной операции это идиотизм. Отличный пример интерфейсной и эргономической бездарности. За следующие три минуты скачался б-гмерзкий paint.net и сделал все что надо в 2 клика.
А какую альтернативу найти для Linux, которым мне приходится пользоваться 40% времени, очень интересно.
__________________
I tell you to enjoy life
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'
Дядя Миша я читал их все.
Что-то в последние время приглянулся пунч из паранои интересно было его в мультиплеере использовать ток он серверный и будет естественно все рывками хотелось спросить совета какие заглушки нужно поместить на клиенте или часть кода перенести?
Да, и еще кто нибудь думал накодить двери аля-Фолаут или как в Сайлен-Хил?
__________________
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 Полностью берешь, да переносишь, там ничего сложного нет, возможно, я даже выкладывал код на этом форуме где-то.
__________________
Base Defense on Steam, ModDB
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.
Luciferchik Я про клиент говорил. В Бейс Дефенсе тот самый панч из хл2, клиентский, причем.
__________________
Base Defense on Steam, ModDB
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.
Luciferchik Нет, лучше взять свой мод, куда ты по твоим словам уже всё перенес, и существующий код взять и скопировать в тупую и просто вставить на клиент, а после заюзать. Посмотри как хл1 клиентский панч сделан.
Опять же, еще раз говорю: поищи на форуме этот код, мне кажется, что я уже его выкладывал, адаптированный, клиентский, прямо с разжевыванием и примерами использования.
__________________
Base Defense on Steam, ModDB
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.
А зачем в ксаше сделано так что pev->angles теперь просто посредник, а реальное вращение идёт через SetLocalAngles?
Luciferchik Я нашел свой пост с первого же поискового запроса, взяв случайное слово из того кода, например, "spring".
__________________
Base Defense on Steam, ModDB
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Интересно кто-то разбирается в коде StudioMdl? Мне лично не хватает возможности в $origin крутить модель по всем координатам, pitch, yaw, roll, во всех StudioMdl можно крутить только горизонтально, то есть по yaw если вписать в оригин 4 число, часто модели из других игр бывают повернуты то боком, то верхом и довольно геморно тупо все анимации крутить как надо если их много вручную в 3д редакторе, а так можно было бы все решить одной строчкой, я пытался взять код StudioMdlиз исходников XashXT, и самому это сделать, добавил везде по аналогии к zrotation xrotation и yrotation, но застрял на Grab_Animation, оно теперь вращает модель как попало, даже если я для этих координат не вписал никаких значений, в общем сам я никак не справлюсь:
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 | } |
Уже давно есть обновлённый продвинутый 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'
Дядя Миша это конечно круто, но где его можно найти?
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
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.
Все равно оригин где можно сразу по всем 3 осям вращать было бы удобнее в разы. А вообще не ясно зачем вульва сделав вращение по одной оси, не стали делать для остальных двух.
Luciferchik Мой панч работает так, как надо. С чего клиентскому панчу влиять на серверный? Ты вообще в курсе, что клиентский панч и тот, что в pm_shared - это два разных панча? Хочешь, чтобы везде был клиентский - создавай мессагу и отправляй на клиент.
__________________
Base Defense on Steam, ModDB
Тут старые версии, вообщем.
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 какая отдельная структура?
__________________
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]
ПАРОЛЬ: paladin_solo
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'
Ок, в каком-нибудь спирите я на клиенте писал
cl_entity_t *viewentity = gEngfuncs.GetEntityByIndex( gHUD.viewentityIndex );
После чего мог работать с содержимым viewentity.
Как это делается на клиенте в ксаше?
Crystallize Зачем так делать, если в самом клиентском интерфейсе есть функция GetViewModel. Вы его читали хоть?
a1batross ну судя по названию она возвращает что-то типа индекса модельки оружия в руках.
Что такое "читать" интерфейс? Я не помню чтобы у ксаша был гайд по кодингу.
Кто в маппинге разбирается, а как можно оставить от одной карты только браши, а от другой, от декомпила по быстрому перекинуть все энтити? У меня есть сорцы карт от ХЛ Сорса что Джек открывает, я бы хотел бы хотя бы попробовать одну карту скомпилить под халву чтобы она просто работала, перед тем как пытаться что-то туда свое добавить.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Crystallize
nemyax уот только демагогию не надо тут. На такие случаи есть всем известный термин -- указатель. Вот он и получает указатель на клиентскую энтитю.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Почему в хл если закрывающаяся дверь коснется тебя самым краешком то ты прилипаешь к ней до того момента пока она не остановится?
Как активировать какой-то код один раз при старте карты? В XashXT я как-то не нашёл той самой postActivate system. Вообще идеальна была бы некая обёртка типа if { } которой можно было бы обернуть код в произвольном месте, заставив его выполняться одноразово. Я даже пробовал ставить условие на нулевую величину frametime чтобы поймать момент отрисовки самого первого кадра, но безуспешно.
__________________
Никогда не поздно сделать мод под хл1
Crystallize ServerActivate() глобально и Entitty::Activate() соответственно. Это если не хочется в Spawn().
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
frametime - это время между кадрами (1/FPS)
наверное он хотел сравнить gpGlobals->time == 0, но он == 0 еще когда мир не рисуется и это бесполезно. И вообще сравнивать флоуты нельзя.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
float f1 = 1.0f; |
float f2 = 1.0f; |
assert( f1 == f2 ); |
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
XaeroX https://randomascii.wordpress.com/2...s-2012-edition/
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
Ты на вопрос ответь.
Можно писать так, как я написал, или нет?
__________________
XaeroX а ты сам не знаешь? 0_0
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
Я знаю, но не уверен, что знаешь ты, после твоей фразы, что-де флоаты вообще нельзя сравнивать.
Поэтому решил на всякий случай уточнить.
__________________
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
Ну в общем случае ты бы не стал их сравнивать, верно?
nemyax
Я написал вполне конкретный случай.
И прекрасно знаю, в каких случаях флоаты сравнивать можно, а в каких нельзя. Но Мастер-то наш написал, что их "вообще" сравнивать нельзя. И мне стало страшно.
__________________
XaeroX я не напишу лучше, в каких случаях можно приравнивать флоуты, чем написал автор статьи, на которую я сослался. Я счел это лучшим возможным ответом. Если тебе охота по природе своей докопаться до слова "вообще", то я забыл поставить запятую.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
Я не принимаю ответ в виде ссылки. С таким же успехом я могу давать в ответ на любой вопрос ссылку https://www.wikipedia.org/
Полагаю, собеседования ты проходил так:
- Расскажите про сложность алгоритмов.
- (Достаёт Кормена и бухает на стол) Я не расскажу об этом лучше, чем Кормен.
- Поздравляем, вы приняты!
__________________
XaeroX а мне-то что с того, что ты не принимаешь? Я по UDP передаю.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
XaeroX эпсилоны в компиляторах разве не потому придуманы что "флоаты нельзя сравнивать" напрямую, только вычитать?
Crystallize эпсилоны не только в компиляторах
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Друзья, у меня возник неожиданный вопрос по поводу звука в играх.
Звуки же обычно хранятся сжатыми в огг или мп3, а вот в какой момент они разжимаются? Непосредственно во время проигрывания или предварительно при загрузке?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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 сжатие с потерями, кагбэ. В звуковой буфер всё пишется уже разжатое и в сыром виде. Когда игра декодирует огг/мрз - это ей решать. Но, как говорится, 7 раз воспроизведи - 1 раз разожми. )
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Спасибо всем за ответы!
Полагаю, оптимальный подход - проигрываемые однократно звуки декодировать на ходу, многократно - декодировать заранее и хранить в памяти, верно?
Встречный вопрос, а как ты определишь какие звуки должны проиграться однократно, а какие нет?
Помоему логичнее исходить из размеров распакованного 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'
Дядя Миша взрывы-выстрелы-шаги - многократно. Какие-то сюжетные фразы или музыка без репита - однократно.
Ну вот допустим у тебя 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'
Дядя Миша да, ты прав
Есть у кого карта-пример по использованию выключаемых светотекстур для спирита? С исходниками. Я уже всё перепробовал, без лампочки функ_валлы не хотят переключаться. Хотя весь необходимый код из спирита взят.
По мне, так все звуки надо декодировать при загрузке, кроме музыки. Ну и в OI, емнип, ещё звуки диалогов не декодировались.
__________________
Никак не могу сделать свой MESSAGE. Игра крашится ещё на строке MESSAGE_BEGIN
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(); |
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'
Дядя Миша извиняюсь, не так выразился. мне просто нужно было нарисовать линию. Вроде, тут всё очевидно. В файле 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?
Smykov касательно оружия лучше использовать эвенты, а не мессаги. Потому что они работают и с клиентскими пушками тоже. Если конечно у тебя спирит, где клиентские пушки вырезаны, тогда и мессагами можно, т.к. пушки тчинкают только на сервере, и пользы от эвентов много не будет.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Smykov вальвовская система "будет так же потому что код такой же" мне тоже не понравилась. Как минимум - потому что содержала мало того что старый гауссобаг, так еще и иногда расходилась с сервером. Лучше пусть отсает и лагает тогда уж. Я вернул у себя мессаги с лучами на сервере и не парюсь.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Возможно вы замечали в модах (а то и на своих картах), что хаундаи иногда стоят и ничего не делают (даже анимация не играет, и на урон они не реагируют, только звуки издают). Кто-нибудь исследовал проблему?
__________________
I'm on github
I'm on opendesktop.org
Назрел такой вопрос возможно сделать нпс из ботов используя их анимации, а их ИИ от обычных нпс хл?
__________________
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 недостаточно ИИ-инфы в моделях игроков - как минимум. Вообще вопрос поставлен некорректно - "боты без ИИ" - это игроки. )
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ 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.
Перевожу: они могут одновременно бегать и атаковать.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Есть ли такая возможность без особого вмешательство в код (костылями) сделать чтобы игрок видел приаттаченую к нему энтити?
Знаю, что по дефолту клиент убирает видимость таких моделей.
Возможно как-то повесить пустышку_энтити на игрока, а на эту пустышку_энтити уже мою энтити, которую бы видел игрок?
Мой нубский вопрос по коду НПС, вот допустим я сделал убиваемым гмана, и добавил анимации смерти от модели игрока, и подправил их, чтобы там чумодан не залазил в землю, но как его гада замочить до конца? Чтобы он на картах типа c1a1b если в него выстрелить не уходил с обидкой, будучи убитым (видно что анимация смерти только начала проигрываться, но он все равно уходит), и чтобы он не мог трындеть? На карте с5а1 в конце самой игры если его замочить он все равно продолжает свой монолог.
Chyvachok, чтоб он перестал говорить, нужно вызвать SentenceStop() аналогично тому, как он вызывается у TalkMonster в Killed.
Не умирает на месте возможно из-за того, что находится в скрипте.
__________________
I'm on github
I'm on opendesktop.org
FreeSlave заскриптованные НПС не убиваются вообще, как раненый охранник в уровне где надо гарга под струю заманить, чтобы поезд поехал, а тут дело в том что джимен убивается все таки, видно анимацию смерти и его можно разорвать, но эта смерть ни на что не влияет, т.к. он в некоторых местах все равно уходит вместо того чтобы лежать трупом.
Chyvachok это надо переделывать скрипты на картах. Там по-любому стоит галочка override AI, и параметр interruptabe равен 0.
Как заставить игрока видеть его aiment энтити?
Ku2zoff а как тогда сделать чтобы он был все равно убиваемый не смотря на скриптовую сценку? А то на одних картах его можно мочкануть, на других уходит.
Кстати я ему куски даже запилил: https://imgur.com/a/Q9L1m
Ты вроде говорил что у тебя есть модели мясной нарезки с НПС, интересно бы глянуть, мож какие модели по лучше есть, а то я всем НПС решил свои куски поделать, как раз в Брутал ХЛ полно мяса было.
У меня нет возможности редактировать клиент. Нужен какой-то хак. Может быть поиграться как-то с AddToFullPack, CheckVisibility?
Вопрос у меня есть по минигану из TFC, сделал его на основе кода из ХЛВЕ, огромное спасибо Гулю за то что он его выложил, работает, с альтернативной атакой в виде раскрутки стволов, но одна фигня есть с анимацией стрельбы-раскуртки и звуков, так оно нормально работает, но анимация и звук не меняется если раскрутить стволы альт огнем, и зажать вторую кнопку мыши, оружие будет стрелять, но звука и анимация будет от просто врощения стволов, так и наоборот, если зажать обычную стрельбу, и перейти на раскрутку, отпустив первую кнопку мыши и нажав вторую остаеться анимация и звуки стрельбы, в общем видео с проблемой: https://youtu.be/8FTrgIwgtzI
Я знаю из-за чего оно происходит, что в ХЛВЕ, что в плагине для метамода который добавляет миниган из TFC анимация и звук проигрываються постоянно, как у обычного оружия, а у меня что анимация что звук проигрываться как у Эгона циклично, что анимация что звук, и функция их проигрывания вызывается один раз с помощью m_flShockTime, проблема в том что я не могу придумать как мне сделать чтобы при переходе из PrimaryAttack в SecondaryAttack и наоборот заходить в этот участок кода чтобы поменять звук с анимацией, по этому решил спросить здесь, код в аттаче. Я помню когда-то давно когда пытался сделать эту пушку тоже не смог побороть эту проблему.
Chyvachok, посмотрел, пока особо не вникал. Есть декомпил такого пулемета из They Hunger, там правда нет анимации раскрутки, но может чем-нибудь поможет.
https://github.com/nekonomicon/hlsd..._hldm.cpp#L1440
https://github.com/nekonomicon/hlsd...er/chaingun.cpp
nekonomicon спасибо за код, правда сам миниган нормально работает, затык был именно с раскруткой, вернее переходом мезду стрельбой и раскруткой, и я вроде как разобрался. И кстати проверил как в TFC он работает, там оказывается раскрутки в виде альтернативной атаки нет, она там использовалась когда у игрока патронов не осталось, выложил новый код в аттаче, вроде все работает, но хотелось чтобы кто-то по опытнее глянул на код, не сильно он коряво написан, а то я больше копипастер чем кодер.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Подскажите пожалуйста как закрепить HUD weapon list выбор оружия так что бы он висел постоянно.
Вопрос насчет 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; };
>> как мне сделать чтобы спрайт не "смотрел" на игрока, а от стены?
Насколько я помню в БСП для каждой поверхности записана нормаль, собственно по ней и надо ориентировать твой спрайт
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro я имел ввиду отображение спрайта, можно ли его в коде указать, спрайты эффектов сами по себе всегда на игрока смотрят.
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 есть 2D триапи (рисуется всегда повёрнутым к игроку, например спрайты над бошками тиммейтов в DoD) и есть 3D триапи (огонёк зажигалки в Инвазионе). Вот, используй 3D-вариант. Он, кстати, и в софтваре тоже работает.
gEngfuncs.pTriAPI->TexCoord2f это для 2D, используй gEngfuncs.pTriAPI->Vertex3f для 3D координат.
Ku2zoff спасибо за подсказку, посмотрел в коде инвазиона, что-то там скопировал, и каким-то чудом вроде стало работать как надо, хотя код с этими gEngfuncs.pTriAPI там был очень похож, что вышло: https://imgur.com/a/ICAiS
Вот кстати код, интересно, насколько он нормальный? Может какие моменты можно улучшить?
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вопрос по векторам и углам, а как развернуть объект по tr.vecPlaneNormal?
Допустим я хочу чтобы обьект который липнет к стене еще рандомно разворачивался относительно этой стены, я то я заюзал StickyGibсы, и в глаза бросается что они одинаково к поверхности клеються.
Chyvachok CTripmineGrenade...
Хотя, если честно, AlignToFloor() у меня до сих пор в TODO.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ ну они и так к стене разворачиваются на подобии трипмины, мина она всегда прямо лепиться, не боком там или еще как-то, я имел ввиду их еще для рандома покрутить относительно стены, чтобы одинаковость формы моделей не так в глаза бросалась, но я вот не знаю как бы именно покрутить относительно этой tr.vecPlaneNormal, а не мира.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Посмотрел у стрелы арбалета, оказываеться добавить pev->angles.z = RANDOM_LONG(0,360); было достаточно, я думал что оно крутить будет относительно мира, а стены. Заодно попробовал ретекстурить эти stickygib-ы: https://imgur.com/a/PXTCT
Chyvachok, крутота! кишки можно по стенам размазывать
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:
додумался сам короче инклюд не в той последовательности подключил
Eternal12 версия студии какая?
Когда запилите прилипание всякого дерьма к игрокам, монстрам, поездам и всему остальному - позовите
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Эх, ну какие тут могут быть способы? Отключай обратно и убедись что ничего не зависает, а потом еще раз проверь чотытам наподключал.
Наверное ж забыл чёт.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А какая прога для создания спрайтов именно работает? Есть у кого желательно с примером батника и qc файла? А то этот Sprite Explorer удобен чтобы посмотреть спрайты, но процесс создания их там багнутый, он выдает ошибку при попытке сделать спрайт.
И второй вопрос больше у Ku2zoff-у, а как оружию загрузить анимацию не всей модели, а определенным костям? К примеру для того же акимбо оружия, чтобы стрельба правого пистолета не обрывала анимацию левого.
Chyvachok bmp2spr же. Не нужно qc-файлов. Всё через параметры/батник.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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'
Пара вопросов по кодингу, на сервере там где урон я часто заметил хрени типа ClearMultiDamage и ApplyMultiDamage что они делают и для чего они?
И второй вопрос насчет трасс на клиенте, я там целую кучу комманд заметил типа
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(); |
Есть такой вопрос, как сделать чтоб игрок не был зависим от камеры в 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.
Luciferchik можно устанавливать viewangles только в refdef и не вызывать SetViewAngles. Я так чинил крутящихся трупов в мультиплеере.
Chyvachok *MultiDamage нужен для объединения дамага. Удобно для дробовика.
Больше функций для трейса нужно потому что в eventapi отдельно функция для выбора номера хулла и установки твёрдых игроков. Последнее вообще модифицирует стейты предиктинга, поэтому нужен вот этот Push/Pop, на случай если в данный момент выполняется предиктинг. Оружий, например.
AngleVectors -- преобразование угла в FRU векторы.
VectorMA(a,b,c,d) -- умножить c на b и сложить с a. Результат в d.
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'
объясните пожалуйста, как использовать элементы vgui Bitmap и Image? как загрузить для них изображение? я только про загрузку tga файла знаю (из тутора BUzer'а, кажется только про tga там и было описано).
Спустя время, понял что нужно перефразировать вопрос. Помимо tga-изображений, на vgui-панелях можем ли мы рисовать изображения других форматов?
Smykov можешь, если напишешь свой загрузчик картинок в массив данных. Это будет не очень красиво архитектурно, но что поделать
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Smykov а в чём проблема просто использовать TGA?
~ X ~ я думаю, что это скорее из-за производительности. Он насколько я знаю ещё из кваки пришёл. Может я ошибаюсь.
__________________
Бгы. Я тут подумал, что если бы драбавик стрелял под водой, то от каждой дробинки бы шёл свой баблтрейл.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff TraceAttack() с кровищей вызывается на каждую дробинку, а в конце ApplyMultiDamage() вызывает Entity->TakeDamage(). Типа, это что-то должно облегчить. Хотя health всё равно пошлется не ранее следующего кадра. С другой стороны - между дробинками кто-то может помереть. Не знаю, насколько это важно. Может, какую-нибудь крысу одна дробинка убьет, а еще три разнесут на куски. Имхо, здесь особо экономить не на чем.
Кстати, вот мой нубский вопрос: шотган, стреляющий двумя патронами - это нонсенс т.к. не двустволка, а чем лучге заменить вторичную атаку?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Ku2zoff ~ X ~
Я вам порой поражаюсь...
Неужели у вас есть столько свободного времени, чтобы философствовать, вместо того, чтобы внимательно посмотреть в код TakeDamage (ну вот хотя бы CBaseMonster::TakeDamage) и осознать, что если вызывать её несколько раз с маленьким flDamage или один раз с кумулятивным - будет разный эффект? Ну ладно Мастер, он уже давно поехал на сортировке строчек в дельта.лст и во всём видит исключительно посылку данных по сети, но Ku2zoff-то монстрами занимался и профдеформацию вроде бы не словил.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Chyvachok В /угадай в каком моде для халфы/ так и есть. Я, кстати, слышал мнение, что не делают сразу два режима дробовика в играх, чтобы избежать работ с их балансировкой.
P.S. Не уверен, что в реале точность зависит от режима стрельбы, я полагаю, что это исключительно мой fiction.
~ X ~ Делай режимы pump и automatic.
__________________
Base Defense on Steam, ModDB
XaeroX у меня это дерьмо уже переписано, я по памяти вспоминаю что там в ХЛ СДК
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
1. Переключение режимов стрельбы у того оружия, у которого это предусмотренно.
2. Переключение на гранатамет.
3. Прицеливание. Кстати анимацию прицеливания легче всего сделать с помощью p2mv и блокнота.
"Анимацию" прицеливания надо делать кодом, как в фольвраме.
__________________
Chyvachok Абсолютно не понял о чем ты, я делал в хл iron sight, который читал позиции из текстовых файликов, у меня нормально всё было.
__________________
Base Defense on Steam, ModDB
PLut я имел ввиду проблемы такого рода: https://imgur.com/a/diQVg
Chyvachok в сталкере насколько я помню, просто увеличивался fov чтобы скрыть эти косяки
Chyvachok Отдалить модель, а анимации стрельбы менять надо на простой толчок назад. Анимации, где пушку подкидывает от выстрела не годятся под iron sight, да и выглядят при нём убого.
Вот старый видос с тем самым прицеливанием.
P.S. Думал в нём есть анимации выстрелов, но их нет, что тупо.
__________________
Base Defense on Steam, ModDB
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Оба флага (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
Не, это у меня не вырезано. И кандишены кое-где поправлены. Так что, всё норм. Аккумулирование дмг я оставил. "Ломается ИИ" - это довольно громко сказано. Я бы это назвал "Вероятность что монстру не вызовется хэви дамаж от выстрела шотганом", что, в общем-то, не фатально.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я в V_CalcThirdPersonRefdef отправляю некоторое значение углов в pparams->viewangle и pparams->cl_viewangle. Отдельно, их связь я отключил. И если сразу же запросить значение player->curstate.angles, оно будет другим, например yaw будет отставать на 3.06 градуса, примерно соответствующее одному кадру запаздывания. Эти курстейты, реальные углы игрока, обновляются на кадр позже чтоли? Это исправляется как-то?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша То же самое было при серверной камере почему-то, но там был поменьше рассинхрон, в педелах полуградуса.
Тогда я пытаюсь переждать этот 1 кадр, т.е. скажем в конце функции сохранить значения которые были высчитаны в одном и том же кадре что и эти cl_viewangles, и потом прочитать и применить их в следующем кадре, когда углы игрока перейдут на сервер и станут актуальны.
Как удостовериться что 1 кадр прошёл? Я так понимаю, что выполнение функции V_CalcThirdPersonRefdef заново эквивалентно новому кадру, но я у неё в самом начале проверяю значения cl_viewangles и curstate.angles, и у них всё ещё есть разница на ту же величину.
Хочу сделать vgui-класс, выводящий текст на родительской Panel (это только лишь в данный момент хочется чтобы только лишь выводил).
Текст располагается относительно своей позиции, делая отступ в зависимости от textLocation.
Как сейчас я понимаю принцип работы панелей:
1) Создали мы экземпляр класса, унаследованного от Panel;
2) Задали родителя, который вызывает paint'ы дочерних элементов;
3) Вот тут уже под вопросом. Внутри paint'а самого экземпяра система координат либо относительная (К примеру, drawSetTextPos(0, 0) ==getPos(varX, varY), то есть положение экземпляра на родителе), либо абсолютная (drawSetTextPos(varX, varY)==getPos(varX, varY), может мутно, но надеюсь, вы меня поняли :-) )
В итоге, отрисовка только фона, притом, что в конструкторе задал false. текста нету.
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 | }; |
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); |
Меня малость напрягает
void setText(const char* text) {
m_linkValue=text;
}
к моменту вызова paint() указатель точно валидный? дебаггером смотрел?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ там конструкторы есть, которые инициализируют m_linkValue.
Сейчас уже кое-что прояснилось, система координат относительная, а проблема была в том, что у объекта не было size'а, он отрисовывался, но не было места куда выводить.
Другая проблема.
Создаём объект
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); |
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); |
А gaitsequence как-то влияет на viewangles и направление движения игрока как энтити или оно просто для красоты, для модельки? И есть ли в ХЛ какой-то ограничитель скорости поворота игрока? (при thirdperson)
Crystallize только для модельки
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
VGUI - это местный ад для хл-моддеров. В него ссылают по плохим указателям... )
Я сам уже не помню, каким чудом что-то там сделал. Хотя, нет. Так и не сделал. Меню с игроками появляется не там где я изначально хотел
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Математический вопрос есть по эффекту дымка из паранои, который я использовал как базу для своих эффектов, вернее по его размеру, он там при отскакивании от стены с нуля увеличиваться к тому времени к которому он должен исчезнуть до своего полного размера:
1 | float frac = (time - birthTime) / m_fLife; |
2 | if (frac > 1) |
3 | return 1; // delete object |
4 |
5 | float size = PuffSize * frac; |
frac = 1 - frac;
перед умножением
__________________
XaeroX спасибо, работает, я чуть по другому сделал: size = PuffSize * (1 - frac); по идее так тоже пойдет?
Chyvachok да, конечно, это все то же самое. Вопрос вкуса.
__________________
makevfont
1) можно ли с его помощью создать шрифт с Кириллицей? Если да, то подробнее пожалуйста.
2) Правильно ли я понимаю, в значении параметра font нужно указывать шрифт, который установлен в системе? то есть, есть у меня ttf Terminus, windows открывает его своим стандартным приложением просмотра шрифтов, в котором можно установить шрифт.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша всё понял спасибо.
Сразу назревает вопрос, что не так я делаю?
makevfont.exe -font "Times New Roman" -pointsize 16 "1024_MyFont.tga"
И на месте где должна быть кириллица "кракозябра"
Надо его исправлять значит.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Не совсем понял, 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, с первого раза не получилось сделать.
У меня нет, в интернетах есть: 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'
Появилась надобность растянуть tga-изображение до границ экрана. В ХЛ1 я так понимаю с этим беда, по крайней мере я не нашёл простого решения типо BitmapTGA::setSize (он закрытый я знаю) и какого-нибудь setFitted(bool). Можно было бы в заранее заготовить несколько изображений разных разрешений, но это как-то не то. Вроде бы, я нашёл себе неплохую альтернативу использовать drawTexturedRect, но с этим, я так понял, тоже не всё просто. Допустим я смогу получить идентификатор текстуры (createNewTextureID в engine проекте Xash3D), drawSetTextureRGBA я так понял делает загрузку изображения в выделенную текстуру.
Расскажите, пожалуйста, не могу придумать как мне получить byte* rgba от изображения (tga или bmp не особо важно)? Тут ещё дело в том, что drawSetTextureRGBA вовсе принимает const char*. Вообщем, как получить мне rgba или как растянуть изображение?
Пытаюсь завести свои OpenGL поделки на старом ноуте с Intel 4500MHD. Столкнулся с такой проблемой - ловлю сегфолт при вызове glGenFramebuffersEXT или glGenRenderbuffersEXT.
GL_EXT_FRAMEBUFFER_OBJECT поддерживается, адреса функций не нулевые и, в принципе, похожи на правду. Адрес glGenBuffers (которая работает) недалеко от них.
Подскажите, пожалуйста, в какую сторону копать?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша а как это сделать? Смотрю адреса, похоже же на правду?
Вот у обычного glGenFramebuffers адрес нулевой.
1) Имеется VGUI-панель. Можно ли к ней обратиться по срабатыванию триггера (допустим вызвать setVisible(true) и в gViewport обновление курсора сделать) по нажатию кнопки (не клавиши клавиатуры, а Use какого-нибудь триггера или CPushable)? Что-то не могу себе представить как с сервера обратиться к клиентской части.
2) На случай если первый вопрос можно реализовать. Что лучше наследовать CPushable или CBaseTrigger?
Как я себе представляю, триггер же может быть solid'ом, создаём область на карте, в которую игрок должен зайти и нажать кнопку действия (клавиша E - дефолт) и дальше начинает работать CBaseTrigger::Use (там разновидности есть, пока что в них не особо вник). И вот как бы из этой функции обратиться к VGUI?
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'
Дядя Миша то, что я на картинке показал, - это не то?
Добавлено 02-05-2018 в 23:11:
Это адреса, полученные через wglGetProcAddress
Smykov всё это уже реализовано в XDM можно, конечно, реализовать. Запили какой-нибудь env_menu (лучше синхронизировать класснейм с чем-нибудь имеющимся в других играх, но вообще пофиг). У нго по Use() шлешь message Activator-у. Ну вот и весь сервер. А на карте уже вешай эту энтитю как таргет хоть триггера, хоть кнопки, хоть ученого.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
ncuxonaT они не равны нулю, ты же видишь.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша что делать в таком случае?
Для начала, как я люблю определимся с терминами. Какой смысл ты вкладываешь в слово "сегфолт"? На винде его нет, следовательно ты под линуксом колдуешь? Адрес вылета какой? 0x000005 ?
Хотя если под линуксом я ничем не помогу.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Да-да, всё так.
Когда запускаю просто экзешник, то вылазит окно "Access violation. Press OK to ignore and risk data corruption. Press Abort to kill the program."
Когда запускаю из лазаруса с отладкой, то вылазит окно "Проект вызвал класс исключения 'External: SIGSEGV'."
Адрес вылета нигде не указывается.
ncuxonaT пора переходить на Си, делфи не вариант вообще. Вон у Ксерокса спроси.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша помогаешь ты так себе)
Паскаль меня устраивает, не вижу смысла переходить на что-то еще
Дык я в делфях и не шарю. Как же я помогу?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну так дело не в делфях, а в интеле. На сях так же сегфолт вылезал бы. Наверное.
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'
Дядя Миша паранойя завелась с движковым рендером, который при этом выглядит странновато и лагает на лайтстилях в кадре. Движковый рендер использует фреймбуфер?
Ксашмод заработал нормально. В логе упоминается 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'
Дядя Миша как тогда проверить?
Есть два варианта названия этих функций. Вторая с окончанием EXT.
Ты какую группу получаешь?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша c EXT, конечно. У функций без EXT адреса нулевые.
у EXT реализации некоторые функции отсутствуют.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну если адрес функции получен, наверное, она присутствует? Как вообще может поддерживаться фреймбуфер без функции его создания.
И вот мы снова вернулись к вопросу как я тебе помогу, если в делфях не шарю?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша может, ты знаешь какие-то хитрости для интелов? Может, как-то по-особому нужно контекст создавать? Или без созданием фреймбуфера сделать какие-то приготовления?
Покажи вызов. Ну типа
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'
Всё, разобрался, я шляпа, извините. К glGenFramebuffers EXT дописал, а к остальным забыл. На самом деле сегфолт вылезал на glBindFramebuffer. Отладчик почему-то не туда показывал.
Дядя Миша паранойя же должна работать на opengl 2.0? Если мне память не изменяет, ты использовал в шейдерах flat, чтобы отключить интерполяцию, но flat появился начиная с третьей версии. Как ты решил этот момент для второй?
Нет, минималка для паранои это GL 2.1. А от flat я избавился причём очень просто.
Было
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 ); |
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'
Дядя Миша если честно, я не понял, как это помогло убрать интерполяцию.
Насчет бодигрупп, а как можно проверить какая сейчас у модели к примеру боди головы, если к примеру групп несколько? pev->body не совсем подходит для этого, т.к. когда когда боди головы выбрана одна, допустим солдат в берете, а боди оружия поменять на другое другое то pev->body тоже другой будет, а GetBodygroup чтот не дает результата, ну и как еще эти боди можно на клиенте проверять? Там вроде нету ни GetBodygroup ни SetBodygroup.
Chyvachok у меня всё работает. (o_O) Проверь нумерации групп, юзай энумы.
Для бадей на клиенте надо портировать эти функции на клиент.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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 |
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 |
Посмотрел я этот ку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'
Дядя Миша Ну к сожалению от Quake Rally и HLRally сорцов нет, а других подобных модов я не знаю.
Погодите, так а клиент же не только новый cl_viewangles генерирует и посылает на сервер, он же одновременно с ним ещё и оригин новый вычисляет и тоже посылает его в паре с вьюанглесами? Или нет?
Такой ещё вопрос, в Унреале современном (и возможно в Юнити) там же тоже архитектура клиент-сервер. И что, там тоже есть отставание вьюанглесов такое же?
Не могу понять, как правильно сделать подобную вещь.
Есть объекты от которых нужно хоть какие-то провода протянуть.
Сделал браш 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)
Но, неужели, и вправду нельзя создавать объекты равным меньше единицы, при том что инструментарий позволяет это делать?
Smykov
Какой редактор?
__________________
XaeroX Jack - Steam
Тогда уж и компилятор уточню: ZHLT
Smykov
Попробуй компилятор VHLT.
__________________
Ku2zoff прав. Действительно на ZHLT получилось скомпилировать карту. Попробовал ещё и компиляторы из стимовского SDK, компиляция доходит до конца, но браш пропускает.
Спасибо!
Как изменить картинку в cached.wad? если что gcfscape и wally установлены
Добавлено 30-05-2018 в 15:59:
Посмотрел cached.wad от XashXT, и похоже необязательно создавать изображение 320x200.
Загрузил своё изображение через wally, не получилось его увидеть в игре.
Через GCFScape посмотрел свойства файлов, у моего изображения mipmaps - 4, у тех, которое до этого были, равны единице. Есть подозрения, что из-за этого.
Расскажите пожалуйста.
Smykov вот инструкция: https://cs-mapping.com.ua/forum/sho...259&postcount=6
Этот вад нужно собирать с помощью qlumpy.
Добавлено 31-05-2018 в 01:56:
Товарищи, попутно спрошу у вас кое-что. Вот есть такая картиночка:
Смысл в том, что модели в hd паках для халфы имеют весьма ущербное разрешение текстур. ЕМНИП, то есть где-то на просторах всемирной паутины версии с текстурами хорошего разрешения. Я, кажется, когда-то давно находил, правда, только оружия. Мне бы монстров найти. Именно из hd паков, где полигонов 1500-2000. Модели от Ромки и прочие подобные sd и ud не надо, в них овердофига поли (3000 и выше). Качественные текстуры + среднеполигональная модель - в халфе это выглядит классно на фоне размытых текстур уровня. Подкиньте ссылки, если где-то такое встречали, плиз.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff как всегда, большое спасибо. Правда CSM что-то у меня не грузится, даже с VPN не получилось, но через копию сайта посмотрел инструкцию.
Доброго времени суток, товарищи. Надеюсь на вашу помощь так как возникла проблема с переносом спиритовских партиклей в обычную хл подозреваю, что сама проблема кроется где-то на сервере но понять её не могу знаю, что нужно заменить спиритовский дизерет на Дядь Мишыну постАктив ну наворотил такой балды.
Прилагаю код этой телеги:
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.
Luciferchik для сингла как раз Дядь Мишина система норм. А вот для мульта рекомендую взять аналогичную из Паранойи: она срабатывает при коннекте игрока к серверу. Я с её помощью легко научил 3д небо работать для всех игроков.
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.
Luciferchik хм, хм. А ты точно из правильного места вызываешь виртуальную (для всех классов) функцию PostActivate? Халфа обычно крэшится, если мессагу послать на клиент до вызова LinkUserMessages. А просто по активации во время игры (use, например, если мессагу посылать из него) работает? Если нет, то копай в другом месте. Если да, то смотри, чтобы сначала вызывалась функция LinkUserMessages, а потом уже посылались любые мессаги.
Добавлено 07-06-2018 в 23:56:
Покажи функцию, откуда вызывается 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.
Luciferchik я ж пишу, ты из use попробуй мессагу послать. Активируй партиклю по кнопке. Если вылет - ковыряй клиентскую часть и регистрацию мессаги на сервере. Если нет - возьми из паранойи SendInitMessages и SendInitMessage соответственно. Оно работает 100%. У Дяди Миши там всё завязано на одного игрока, один раз при запуске карты. Возможно, где-то есть мелкий косячок, который ты пропустил.
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'
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.
Заметил интересный баг с 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.
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'
__________________
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.
__________________
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.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
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.
Я пока вплотную не изучал это всё, а тема вперед убегает и контекст теряется, поэтому я спрошу сейчас, но вопросы будут тупые.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вопрос о том, что было до VGUI?
Заметил закомментированный код некоторых панелей в hud.h, основанных на CHudBase. И заинтересовало, а рабочие ли они когда-то были, и как они отрисовывались вообще (вот взять scoreboard, также ли равномерно)?
Вообщем, если и тут у кого-нибудь есть познания, могли бы что-нибудь рассказать про это?
Ku2zoff не-не, VGUI мне достаточно. Мне тут просто для кое-чего нужно рассказать причины создания VGUI. И на основании того закомментированного кода сделал вывод, что весь графический интерфейс рисовался в качестве HUD, но его недостаточно для создания "сложных" элементов. Решил здесь на этот счёт задать вопрос, чтобы по-меньше отсебятины было.
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'
Ну вот, доделал кроссплатформенный фмод для новой халфы (на основе кода из спирита 1.9 и XDM). Списался с Сигуртом, думаю, скоро вывалю вам небольшой тутор по музыкальному плееру с сохраняемой позицией. Для ксаша неактуально конечно, но для модов к халфе на спирите (совместимость со спиритом возможна) и вообще всяких, где есть фмод - актуально. Я бы вот в инвазионе плеер обновил. А то ни громкости, ни паузы, нифига.
Ku2zoff а ничего что в XDM он уже есть?
Кстати, как ты его заставил быть кроссплатформенным? Мне утверждают, что под подлинуксом фмод так и не заводится. Но на всякий случай я честно впилил fmod.so.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Какая версия фмода? Та, что в XDM или что-то еще нашёл?
А проблему долгой инициализации/подвисаний не решил? Я вроде запилил асинхронную загрузку, но фмоду от этого легче не стало.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ 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 это когда на 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'
А, асинхронная загрузка моделек.
Я подумал, что речь об асинхронной загрузке музыки для фмода.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша дык она под голдсорсом наверное не заработает. Возможно смогу, а смысл?
Вот, очередной нупский вопрос от меня. Почему болты арбалета под водой по вертикали очень сильно косят при выстреле, если стреляешь не строго вниз или вверх? То есть отклоняются ниже или выше от точки прицеливания? Как это победить, чтобы они летели и на воздухе, и в воде чётко в прицел? Ну и при погружении болта из воздуха в воду то же самое.
Ku2zoff со снарядами в воде вроде еще фигня что они немного изменяют траекторию когда входят-выходят с воды насколько я помню.
Проблему с изменением траектории при выстреле из-под воды я решил. А вот с погружением снаряда в воду не решил. Из-под воды стреляет норм, а при попадании из воздуха в воду изменяет траекторию. Наверное, придётся "убивать" снаряд при попадании в воду. Всё равно это у меня лазерный луч пушки инженера в TFC. Пусть через воду не стреляет. У этого оружия по моей задумке весьма узкая область применения, типа разрушения металлических объектов (всякие замки, решётки и прочее, что пули не берут). Урон для мяса огромный, дерево поджигает, металл плавит. Патронов мало, чтобы игрок берёг их именно для металла, т.к. мясо можно пострелять обычными пулями, дерево можно поджечь огнемётом, а вот металл либо взрывать, либо лазер.
Ku2zoff Если судить по коду из Ксаша и по простым наблюдениям, то при попадании ентити в воду, ее скорость по оси Z просто делится пополам.
// 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; |
__________________
Никогда не поздно сделать мод под хл1
Надо делать корочи кастомную физику и там корректно скорость снижать, а не вот эту вот вот эту русофобию.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ясно понятно, что кастомная физика поможет. Если без неё то, как Sigurth предложил, склонировать из движка SV_CheckWaterTransition, засунуть в тчинк, и там доумножать обратно вертикальную компоненту pev->velocity на 2.
Кстати, а вот в TFC гвоздям и этому самому инженеровскому лазеру пофиг на воду. Специально проверил. Что за фокус такой?
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 тебя на 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 у них там были какие-то проблемы во второй тест камере, но похоже что всё уже в полном порядке. Просили тебе передать, чтобы ты влез в скафандр и дул прямо туда.
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'
//Arent we doing this client side? |
//UTIL_GunshotDecalTrace( &tr, DECAL_GUNSHOT1 + RANDOM_LONG( 0, 4 ) ); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Решил, скопипасть Бузерову спрайтовою траву в обычну хл, перенес я её корочи и столкнулся с проблемой что она использует одну чисто параноевску фишку "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.
В 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'
__________________
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 ну да. Или взять 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'
Дядя Миша Ничего не изменилось она как рисовалась в черном цвете как с этой строчкой так и без неё может здесь есть ещё что-то мне не ясное
__________________
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.
gEngfuncs.pTriAPI->Color4f( s->lightcolor[0], s->lightcolor[1], s->lightcolor[2], alpha ); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
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.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
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.
Причём тут язык, это чисто математическая операция. Вот у тебя число в диапазоне 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'
__________________
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 ну вот. Сам знаешь - сам спрашиваешь.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
void ( *R_UserTracerParticle ) ( float * org, float * vel, float life, int colorIndex, float length, unsigned char deathcontext, void ( *deathfunc)( struct particle_s *particle ) ); |
Как хл считает боди для моделей?
sas
void SetBodygroup( void *pmodel, entvars_t *pev, int iGroup, int iValue )
int GetBodygroup( void *pmodel, entvars_t *pev, int iGroup )
Ищи в сорцах халфы эти функции и смотри, по какой формуле боди находятся и назначаются соответственно.
Ku2zoff
Блин, а хл не может боди на вьюмоделях менять? Сколько я не пробовал, pev->body не работает, , все значения перебрал. В qc бодигруппы все расписаны, но все без толку.
code:
$body suit "glock_handsmesh" $bodygroup "glock" { studio "glock_ref" studio "glock_ref_unloaded" }
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 | } |
SendWeaponAnim( iAnim, UseDecrement() ? 1 : 0, bUseScope ); |
HL не может. XDM может
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Подскажите, плиз, как правильно записывать (а потом, соответственно, читать) строки из бинарного файла. Есть вот такой говнокод:
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; |
Ku2zoff
Не вижу fopen, ты файл точно переоткрываешь для чтения?
__________________
XaeroX ну разумеется, это только огрызок кода. Из файла без проблем читается заголовок и всякие int-ы. А вот с char-ами проблема. ХЗ, возможно, просто не срабатывает gEngfuncs.COM_LoadFile по читаемому из файла пути. Халфа же.
Ku2zoff Ты размер строки считаешь как strlen(text), прибавь к ней единицу, так как strlen не учитывает нуль терминатор. Возможно проблема в этом
__________________
Никогда не поздно сделать мод под хл1
Лучше даже, наверное, так:
char *txt= new char[len+1]();
Чтобы текст был гарантированно нуль-терминированным.
__________________
Вы только этот терминатор занулить не забудьте.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Воткнул проверку с помощью strcmp, выяснил, что новая строка txt больше исходной, которая была записана в файл. Стал грешить на отсутствие нуль-терминатора, хотя дополнительную длину для него пробовал выделять. Погуглил и выяснил, что для записи и чтения строк правильнее использовать fputs/fgets, а не fwrite/fread, т.к. последние просто пишут символы по порядку, а не строку, и не пишут в файл терминатор. Проблема решена.
Добавлено 17-07-2018 в 21:21:
З.Ы. щас немного потестирую, и выложу тутор по сохраняемому фмоду.
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 эти скобочки в шестёрке сработают?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Должны, по идее.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я вот что подумал. Чтобы не писать сразу много нового кода, опробую это всё на инвазионе. Сорцы открыты, можно юзать. Почему инвазион? Меня всегда бесил в нём MP3-плеер, который не ставится на паузу, и у которого не регулируется громкость. А ещё декали не сохраняются, т.к. они нарисованы через TriAPI. Если не будет лениво, сделаю ещё сошки для linux и выложу на moddb. Отличная возможность всё проверить и попрактиковаться в кодинге.
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'
Дядя Миша ну тоже вариант. Посмотрим. Вот избавить первую паранойю от хакнутой opengl32.dll, и сделать там мигающие лайтстили, это да. А не вот это всё.
Ku2zoff скажу по секрету от этого говна даже вторая параноя не избавлена. Поленился я. Там смысл в чём - надо небо рисовать отдельным проходом, чтобы избавиться.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
По-моему, они на кубани на другом языке разговаривают... попробуем намекнуть что-ли.
Дядя Миша ты точно понимаешь, о чем говоришь? А то я помню твои выпады про сортировку строк в дельте, когда сам не знал, где их можно менять, а где - нет. А потом даже заметку написал "как сделать чтобы строки можно было менять, как в xdm"
/копипаста
Да ну нафиг. Ваша лень открыть сырцы - ваши проблемы.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ 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 ~
У нас в Сибири тоже масковским языком не особо владеют, так что присоединяюсь к вопросу Дяди Миши.
__________________
В спирите (1.7 и 1.9 точно, в более старых ХЗ) после чейнджлевела не пропадает из худа спрайт поезда, если игрок юзает этот поезд. Перерыл всю серверную дллку спирита, так и не нашёл это исправление. Обращения к m_iTrain в коде игрока идентичны с обычной халфой, но в халфе спрайт исчезает, и появляется снова только если прибавить или сбавить скорость. Подскажите, где собака зарыта спрятан фикс.
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'
Дядя Миша блин, точно. Это ж биты. Это вальва как обычно такой баг посадила по невнимательности. И до сих пор не исправила за 20 лет. Теперь я наконец понял, почему надо использовать SetBits, FBitSet и ClearBits, а не вот эту вот порнографию с математическими знаками.
Добавлено 21-07-2018 в 02:47:
Может быть есть где-нибудь у кого-то список таких вот маленьких досадных багов? Охота поисправлять. Не в каждых сорцах можно сориентироваться, т.к. иногда авторы не оставляют комментов. А самому искать какие-то конкретные места долго и тяжело. Ну и переигрывать в игру, чтобы что-то такое найти времени нет.
Пока что исправил самое очевидное: прицелы, фонарик, геймтитл, поезд. Непрекращающиеся звуки зарядников, когда здоровье и броня на максимуме, невозможность открыть 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'
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
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 можно. Само приближение надо рисовать отдельным проходом как inset view в режиме спектатора.
Прицел, короче, нужен примерно такой, с толстыми краями, чтобы спрятать под ним края вьюпорта. Ну это теория, я конечно не проверял. Но попробую сделать сам такое, идея интересная.
Ku2zoff
Моделька для экспериментов.
http://rgho.st/6hs5MyDWf
Cybermax Это случаем не Red Orchestra? Мне там еще одна фишка нравиться, что прицел не закреплен по средине экрана как во всех играх, а немного двигается с мышкой, Free Aim вроде называется. Ее еще в моде для Half-Life 2 под названием SMOD можно включить опционально, она как по мне оружию более динамичное ощущение добавляет. Кстати там тоже есть пусть изначально не заюзаная возможность делать прицелы как на скрине где зум есть только в прицеле.
Кстати кто-то фиксил в халве эффект контузии из TFC? Я вроде видел его в разных модах, это когда у игрока камера вместе с оружием в разные стороны кружиться после взрыва гранаты шпиона, я заметил там оружие стреляет в противоположную сторону от которой оно смотрит во время действия эффекта.
Сижу, изобретаю велосипед Подскажите в общих чертах, а лучше с примером, что нужно, чтобы нарисовать средствами OpenGL вместо фейса, покрашенного определённой текстурой, другую текстуру: экран монитора или телевизора. Откуда берётся текстура неважно, думаю, что я управлюсь сам с захватом вида из trigger_camer'ы. Меня интересует сама "рабочая" поверхность. Глядел старые ксаши и тринити. Если я всё правильно понял, там строится Vertex Array. Он же ускоряет процесс рендеринга по сравнению с рендерингом в текстуру?
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'
Не выходит. Что-то я не так делаю.
glBindTexture(GL_TEXTURE_2D, texture); |
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, ScreenHeight, ScreenWidth, ScreenHeight, 0); |
for (int i = 0; i < mod->numtexinfo; i++) |
{ |
if (strstr(pTex[i].texture->name, "FIFTIES_MON1")) |
pTex[i].texture->gl_texturenum = texture; |
} |
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
Почему пятый аргумент у glCopyTexImage2D - ScreenHeight?
__________________
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'
Остался у кого-нибудь старый Xash 0.39, который мод? Скиньте, плиз. Сорцы для ковыряния у меня есть, а сам архив с модом, со всеми его скриптовыми текстовиками и ресурсами, пропал вместе со сгоревшим жёстким диском где-то в 2010-м году.
И ещё, помнится, существовали сорцы этого мода за версией 0.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 да ты на новых ксаш-модах провиряй.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша они работают только с ксаш движком. Не годится такое.
Ku2zoff ну тада страдай дальше
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Подскажите как побороть 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.
Luciferchik VHLT поддерживают текстуру env_sky или 3dsky, точно не помню, которая всё норм освещает, как обычное небо, но при этом прозрачная как null.
__________________
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.
Раз уж об этом заговорили.
А как в спирите сделано разделение рендера энтить скайбокса и мира?
Сервер же шлёт всё подряд в пределах PVS. Получается, что энтити скайбокса надо помечать на отправку вне зависимости от PVS, а на клиенте полкадра рисовать только скайбоксовые энтити, а ещё полкадра - всё остальное КРОМЕ скайбоксовых энтить. Это вообще есть у кого-нибудь?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша я тоже думал так на сервере сделать, но если небо не кубическое? фаил.
На клиенте - понятно, что через некствью. А как рисовать только боксовые энтити? Допустим, они помечаются каким-то флагом. Тогда надо рисовать только мир и их...
(интересуюсь, в основном, в теории)
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Помню просто, что то-ли в раннем Спирите, то ли в туторе какому-то видел, как из скайбокса видно отрендеренный мир. Т.е. когда скайбокс нарисован над миром, изнутри скайбокса рисовался мир...
Или то в анриле было.. подзабыл уже
Кстати, нашёл у себя какие-то куски 3Д-неба. Когда-то хотел его пилить, получается
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Есть ещё такой вопрос к тов.К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.
Luciferchik остались. Но в виде тутора оформлять ЭТО я не буду. Убого получилось, да и неграмотно сделано. Немного пореверсив свенкооп, я понял, что надо писать новый класс поверх CBaseMonster и работать с ним. Переписывать довольно приличные куски AI, особенно schedule.cpp, заводить дополнительные активности и прочее. Если не будет лень, я займусь этой задачей в этом году, и если всё получится, просто отдам код Дяде Мише, чтобы он добавил его в XashXT. Стыдно иметь в 2019 году рендерер на уровне, и даже превосходящий уровень сорса, а ИИ при этом едва ушедший от первой и второй кваки.
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.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
В халфе монстры норм. Но некоторым и правда не помешает возможность стрелять на бегу. А именно солдатам и агрантам.
__________________
Мне вот что интересно: в свенкоопе монстры сами по себе быстрее меняют активности и меньше тупят. Для сравнения, если вызывать барнику SCHED_TAKE_COVER_FROM_ENEMY, если зомби к нему подошёл ближе, чем на 256 юнитов, он убегает раз через раз, а то и ещё реже. Может просто затупить, и не двигаться, наполучать от зомби по морде и помереть. В свенкоопе же, барник сваливает от зомби всегда успешно, и таки в итоге отстреливает их, см. первую встречу с зомби после лифта.
__________________
Ku2zoff
Там в шедулях есть всякие TASK_WAIT, TASK_WAIT_RANDOM, возможно, их подкрутили. Но на самом деле это не всегда хорошая идея. Быстро реагирующие монстры могут стать проблемой для неопытного игрока. Кто смог с первого раза пройти Xaero на хардкоре или кошмаре, признайтесь?
__________________
__________________
Он и в сорсе фиксированный 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'
Доброго времени суток Товарищи, хотел вот прикрутить кастомный фов для моделей от Дяди Мишы, но оно что-то не работает на тринити и понять не могу почему могу только подозревать это часть кода в 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
Я тебя очень прошу - не разговаривай с чужими постами старше пары недель. Люди обычно не помнят, что говорили/писали вчера, а ты тут такое устраиваешь.
Если есть что сказать нового - создай тему и предложи всем обсудить.
__________________
Друзья, а где в коде находится то, с какой скоростью player шевелит ногами в зависимости от текущей скорости его ходьбы и бега (какой-нить flInterval возможно)?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den на клиенте StudioModelRenderer и там строчка
m_pPlayerInfo->gaitframe += (m_flGaitMovement / pseqdesc->linearmovement[0]) * pseqdesc->numframes; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
m_pPlayerInfo->gaitframe += (m_flGaitMovement / pseqdesc->linearmovement[0]) * pseqdesc->numframes; |
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Вывожу спрайт взрыва:
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 спрайты отображаются корректно)
п.с. ксм у всех не пашет?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Есть проблема с momentary_door, которую можно наблюдать, например, на c2a3a - когда дверь начинает возвращаться назад (если игрок отпустил вентиль), поочередно запускается и останавливается звук движения двери. Это приводит к тому, что играется лишь первый сэмпл (ну или несколько первых), и всё это повторяется пока дверь не достигнет исходного положения.
При использовании вентиля игроком такого не происходит, видимо, потому что промежутки между PlayerUse короче, чем между началом и окончанием "локального" движения (т.е. место назначения успевает обновляться).
При самостоятельном же возвращении вентиля за время между его вызовами Use к двери это локальное движение успевает закончиться, соответственно вызывается LinearMoveDone и остановка звука.
Кто-нибудь разбирался как исправить этот баг (ничего при этом не сломав)?
__________________
I'm on github
I'm on opendesktop.org
В ксаш-моде исправлено
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, спасибо. Остановка звука в отдельном тчинке зарешала.
__________________
I'm on github
I'm on opendesktop.org
В XDM исправлено.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
Только что?
__________________
Вернулся на Спирит из-за его параметрических возможностей.
Не работало НИЧЕГО. Энтити не вращались через мультименеджер. Вектор указываешь-не вращаются, только если напрямую 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, Спириту никак не мешает и ошибок не генерирует.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша моушн, да.
Если бы оно пёрло ноклипом, то невозможно было бы сделать на Спирите тот самый T.E.A. Там у motion_manager есть кажется режим, и не один, который учитывает коллизии.
Паренты конечно хорошо иметь, но кальки позволяют измерять расстояние (хотя это появилось только в 1.8 а для предыдущих версий придётся кодить) и плавно менять скажем скорость вращения в зависимости от этого. В Ксаше я не представляю как это воспроизвести, а то так бы конечно.
Что-то я не припомню чтобы там что-то учитывало коллизии. Но на мой взгляд проще написать несколько строчек, чем городить эти бессмысленные системы. Что ты там на этих калках делать собрался такого?
Добавлено 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'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Народ в последние годы так обленился, что даже скрипты писать не хочет - ассеты покупает.
__________________
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]
ПАРОЛЬ: paladin_solo
Данный вопрос больше относиться к тов. Матеру, так как только в его моде есть КоОп режим. Собственно и сам вопрос, какие подводные камни меня могут ждать при копипасте этого режима в мультиплеер обычной хл?
__________________
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.
Когда в ХЛРАД не было домножения на рефлективность, а потом его добавили, то яркость лайтмапы же поменялась, так? Потому что текстура может быть чёрной и баунс домножится на коэффициент 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'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша Оно?
Не совсем. Был еще пост со скриншотами. Ищи. Там на скринах комнатка из халфы, где мы берём костюм.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Давно надо было спросить. А как сделана консервативная растеризация в хлраде и других компиляторах (в том числе для квейка и волатилы)? Я имею в виду, каким образом определяется, нужно ли закрашивать пиксель, который частично перекрыт треугольником, но центр его не лежит внутри этого треугольника.
Вот для розовых пикселей всё понятно. По барицентрическим координатам центра пикселя, можно определить, что он лежит внутри треугольника. По ним же можно посчитать позицию в пространстве и всё что угодно для расчета освещения.
А как обстоит дело с оранжевыми пикселями? Принадлежность треугольнику можно определить по пересечению с ребрами, это понятно. А как посчитать позицию для расчета освещения? По барицентрическим координатам она будет снаружи треугольника, и, очевидно, освещение будет неверным. Брать точку на ребре треугольника тоже не годится, будут лики.
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 лики будут в случае тонких стенок. Вот тут, например, крайний ряд будет пикселей будет засвечен, так как на ребро-то тень не падает.
ncuxonaT
Но в BSP, после вырезания внешних полигонов, такая ситуация невозможна, разве нет?
__________________
XaeroX по-моему, как раз после вырезания внешних полигонов такая ситуация и получается
Ради интереса проверил, как себя поведут в этой ситуации "большие" рендереры. Усложнил задачу, разбив нижнюю грань на треугольники и отделив один из этих треугольников на развертке.
Блендеровский сайклз вообще не рисует пиксели, не попавшие своим центром в треугольник. 3дмаксовский сканлайн рисует все пиксели, но даёт лики. 3дмаксовский менталрей рисует почти все пиксели, лики отсутствуют. Возникает вопрос, как они это сделали.
Самый простой способ - кутришный подход, когда все полигоны сохраняются в карту мы можем трианглы сконвертить в квады, найдя всех соседей.
У меня сейчас лайтмапа для моделей считается, получается для каждого триангла достраивается квад, т.е. в два раза больше работы. Неэффективно, но и ликов тоже нет.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша не понимаю, что значит достраивать квад для триангла. Маленький треугольник с моей картинки как достроить до квада?
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 в софтварном раде я не оперирую пикселями. Я вообще не углублялся как оно у тебя там устроено и вряд ли смогу что- то посоветовать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша расскажи, чем ты оперируешь. В конце же текстура из пикселей получается.
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'
всем привет, поскольку я криворукий (зачёркнуто) ламер, пишу сюда
1) сделал новую пушку на hl sdk 2.3 с гитхаба на основе глока, есесна, почистив от глоковского мусора и т.п. (так же на основе мп5 пробовал, но проблемы абсолютно те же), в итоге у меня почему-то вспышка от выстрела не там, где надо, скрин прикрепил
я ваще хз, как с этим бороться, долго пытался и так и не понял, в чём дело
2) при доставании пушки мне надо, шоб максимальная скорость понижалась, добавил в deploy() вот такую строку:
g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 240); |
Открой модельку во вьювере и посмотри где у нее вспышка. Если надо - подвинь на нужное место.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша спасибо, не знал, что вспышка привязана к аттачменту
а не подскажешь, что может быть не так с перезарядкой, когда анимация не всегда проигрывается?
UPD: заметил, что если во время такой безанимационной перезарядки спавнуть оружие, то у оружие, на которое переключишься, не будет проигрываться draw анимация
И игроку попробуй скорость так задавать: 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'
Дядя Миша теперь выяснилось, что макс. скорость игрока после сейв-лоада сбрасывается на дефолтные 320, как можно это исправить? например, делать в сейв запись о макс. скорости и подгружать её при лоаде ¯\_(ツ)_/¯
PiMoNFeeD макс скорость регулируется через консоль, так что по идее должна писаться в конфиг и храниться там не взирая ни на что.
Crystallize я не консольной командой cl_forwardspeed или чем-то подобным меняю, а через
m_pPlayer->pev->maxspeed |
g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 240); |
Ну да, она не записывается в сейв. Открой 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'
Дядя Миша так-то лучше, спасибо))
Появилась нужна в проигрывании в определённый момент заранее отрендеренных катсцен, как это можно реализовать? Надо, шоб видеофайл проигрывался при срабатывании энтити, например
p.s. hl ведь .mov кушает, верно? а есть ли ограничения по разрешению?
В чистой халфе нет проигрывателя видеофайлов. Есть только интро-ролик, и насколько мне известно, формат mov он не поддерживает, только различные кодеки формата avi.
__________________
Вопрос по поводу BSP. Я пытаюсь понять как работает проверка столкновения c брашами карты. Допустим, я уже какую-то теорию почитал по этой теме.
Немного оффтопа:
В дальнейшем я приведу код с википедии по поиску столкновений и, возможно, может возникнуть вопрос:
Если я задаю вопрос на примере Half-Life, то зачем я привожу код не из HL (ну или не из Xash'а), а с вики? А что если в HL для поиска столкновений используется другой какой-нибудь подход?
Ну... Как это работает в Xash я ещё не вникал. И как бы я "не зарылся" в коде. А мне пока что нужно просто понять принцип того, как это работает в теории. И узнать информацию у людей, возможно, у меня получиться быстрее, чем пытаться "рыть" самому.
Пример поиска столкновений с вики:
«При поиске столкновений BSP-дерево используется для поиска плоскости, расположенной ближе всего к объекту. Чаще всего границы объекта задаются ограничивающей сферой (или окружностью) для упрощения вычислений. Выполняется обход BSP-дерева от корня до плоскости, расположенной ближе всего к объекту. При этом, если не обнаруживается пересечений ограничивающей сферы ни с одной плоскостью, то столкновения нет, в противном случае — есть.»
И вот сам вопрос:
Расстояние(Узел.Плоскость, Объект.ЦентрОграничивающейСферы)
Эта функция нам вычисляет не просто расстояние от точки до полигона, а до ПЛОСКОСТИ.
Давайте определимся как именно мы это делаем:
где A, B и C - это координаты нормали к плоскости.
Пусть имеется на карте два полигона, расположенные на одной высоте:
По идее, у этих двух полигонов нормали совпадают, не так ли?
И как я могу понять над каким из полигонов я нахожусь (исходя из того, как я определил функцию расстояния)?
И кстати, а может ли возникнуть такая ситуация: если у меня пройдёт проверка на расстояние у левого полигона, то будет ли она верна и для правого?
А если бы один из этих полигонов был расположен над другим на каком-то расстоянии, как можно было бы понять где я нахожусь?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Здравствуйте!
1) Подскажите как менять вторичной атакой сабмодель оружия?
Конкретно: есть на автомате лазерный прицел, при его активации планировал менять сабмодель (появление модели лучика), однако она через pev->model не меняется.
2) Как этот самый лучик заставить в темноте оставаться подсвеченным? Игра воспринимает его как стандартную текстуру и в темном месте он темнеет вместе с остальным оружием )))
3) Как заставить ученых бояться игрока по дефолту? Чтобы были враждебны без агрессии со стороны игрока
SendWeaponAnim( iAnim, UseDecrement() ? 1 : 0, pev->body ); |
__________________
I'm on github
I'm on opendesktop.org
Есть проблема со звуком. Если, например, npc говорит, и игрок отходит за пределы слышимости сентенса, то звук перестаёт играть в принципе, даже если вернуться к npc. Это движковая особенность или можно исправить через sdk?
__________________
I'm on github
I'm on opendesktop.org
Ku2zoff, может дело и в pvs, а не в аттенюации. Происходит на текущей стим-версии HL и на 1.1.2.0.
Пример в аттаче.
__________________
I'm on github
I'm on opendesktop.org
А как сделать first deploy анимацию? Тобишь когда игрок впервые подбирает оружие, единожды проигрывается анимация ознакомления протагониста со стволом
Звук не отсекается по PVS
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Обязательно ли вместе с SND_STOP посылать имя играющего звука или движок остановит звук на указанном канале вне зависимости от того, что сейчас играет?
__________________
I'm on github
I'm on opendesktop.org
__________________
FreeSlave движок три вещи сравнивает: номер энтити, сам звук и номер канала, чтобы уж наверняка. Если хоть что-то не совпадает, ничего не будет сделано.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
XaeroX, Дядя Миша, спасибо за ответы.
У кого-нибудь бывало, что ломались аттачменты энтить? В присутствии вот этих веревок на карте приаттаченные энтити оказываются визуально приаттачены к не к той энтити, что указано, либо появляются в центре мира (0,0,0). Есть костыль - удалить веревки и поставить их на карту заново. Как-то связано с порядком энтить (порядок чтения энтить зависит от их порядка в bsp). Другой фикс (более универсальный, не требующий перестановок на карте) - переместить инициализацию сегментов из спавна в тчинк.
__________________
I'm on github
I'm on opendesktop.org
Я когда добавлял эти веровки в последние версии ксаш-мода, я их чуть-чуть полностью переписал. Очевидно надо ориентироваться на мой код, а не на исходный.
Добавлено 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'
Дядя Миша, интересно, потом гляну в xashxt. Может, там ещё и провода как в сурсе (move_rope) можно сделать?
Вопрос по нодам. Есть ступеньки, по которым поднимаются монстры с обычным хуллом, но не могут подняться те, что с большим (в примере - агрунт). impulse 196 (node_viewer_large) не показывает соединений, значит что-то не так на стадии образования графа. Как это можно поправить? (мапперским или кодерским способом).
Помогает увеличение толщины ступенек в два раза, но хотелось бы обойтись без этого.
Добавлено 20-09-2019 в 18:51:
Видимо, придется добавлять возможность выставлять кастомный размер для монстра, чтоб он таки протискивался в толщину ступенек.
__________________
I'm on github
I'm on opendesktop.org
FreeSlave
Попробуй ставить верхнюю ноду отступая не более 4 юнитов от края.
__________________
http://www.moddb.com/mods/monorail-quest
thambs, да я уж по-всякому пытался. Запилил кастомный размер, теперь поднимается.
__________________
I'm on github
I'm on opendesktop.org
Проблема с "воровством" аттачментов вернулась, уже даже без веревок. Спрайт с ксеновского фонарика оказывается в самых неожиданных местах. Перенос инициализации спрайта в тчинк не помогает. Если вытаскивать энтитю по aiment или по индексу (skin), то вытаскивается xen_plantlight, как и должно быть.
Пока не удалось воссоздать баг на минимальном примере, но может кто-то встречал?
__________________
I'm on github
I'm on opendesktop.org
надо использовать EHANDLE
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
FreeSlave давай по порядку что под чем ты используешь и что у тебя глючит. Из того что ты написал понятно примерно ничего.
Добавлено 26-09-2019 в 09:35:
аттачменты у энтить кодируются следующим образом:
pev->body = номер аттачмента
pev->skin = номер энтити
Дальше открываем delta.lst, сортируем в ней строчки и смотрим чему равно максимальное значение для pev->skin
DEFINE_DELTA( skin, DT_SHORT | DT_SIGNED, 9, 1.0 ), |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, спасибо, не догадался я заглянуть в delta.lst, не приходилось раньше его трогать. Поднял количество битов - помогло.
А сортировать зачем? Это просто шутка про мастера?
Да, номер энтити у фонаря был выше 255. Удаление всего (кроме тех самых фонарей) на карте а потом возврат (через Ctrl-Z), помогал, т.к. переставлял энтитю на позицию ниже.
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ещё проблемка. На карте есть func_door_rotating, на неё в редакторе наложены декали, но в игре после компиляции их не видать. Во время игры декали от выстрелов, взрывов и прочего накладываются как обычно.
Я так понимаю, дело в присутствии origin-браша? Можно конечно накостылять что-то в духе env_decal из спирита и накладывать декаль динамически, но есть ли более простой способ? Может, какие-нибудь zhlt параметры, которые это исправляют.
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, и на голдсорсе, и на ксаше.
Сорец для примера.
__________________
I'm on github
I'm on opendesktop.org
rmf мне открыть нечем
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вот в map
__________________
I'm on github
I'm on opendesktop.org
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'
Дядя Миша, да, через активацию отображается.
__________________
I'm on github
I'm on opendesktop.org
FreeSlave в signon немножко порядок нарушен. Поидее это можно починить если функцию StaticDecal переименовать в Activate и в спавне вот это
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 | } |
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, попробовал через Activate - результат тот же, не рисуется. Проблема проявляется кстати на любой энтити с ориджин-брашем (даже если он не требуется самой энтитей).
__________________
I'm on github
I'm on opendesktop.org
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'
Кстати, костыль через trigger_auto не работает, если декаль не в PVS игрока на момент старта карты. Пока решил через trigger_once на входе в локацию.
Вопрос: можно ли кодом (не маппингом) подсветить определенную модель? Что-то вроде elight но освещающий одну энтитю и действующий постоянно. В принципе и elight с маленьким радиусом подойдёт, но я так понял, он не освещает модель, к которой сам приаттачен. Придется городить отдельную энтитю, да ещё и сделать этот самый elight постоянным, а не временным, если такое вообще возможно.
__________________
I'm on github
I'm on opendesktop.org
FreeSlave может не подсветить, а сделать фуллбрайтом?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Проблема проявляется и на гс, и на ксаше. В аттаче переделанный пример. В первой комнате две энтити с декалями. На одной декаль без имени, на другой декаль, вызываемая через trigger_auto. В другой комнате (которую игроок не видит при старте) ещё две энтити. На одной декаль вызывается так же, через trigger_auto, у другой - через trigger_once в коридоре.
Декаль без имени не отображается, декаль вызываемая через trigger_auto во второй комнате тоже не отображается.
__________________
I'm on github
I'm on opendesktop.org
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(); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, допустим, это объясняет, почему декали не накладываются на энтити с ориджин-брашем. А что насчет непоявления декалей в отсутствие игрока?
__________________
I'm on github
I'm on opendesktop.org
Это очень загадочно на самом деле. 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'
Влияют ли энтити без модели (триггеры и т.д.) на появление ошибки Too many visible entities in packet list? Может, им стоит выставить EF_NODRAW?
__________________
I'm on github
I'm on opendesktop.org
Нет, не влияют. Потому что вот:
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; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
Под ксашем до двух тыщ в визибл-листе
__________________
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]
ПАРОЛЬ: paladin_solo
Ghoul [BB]
Это и так очевидно.
__________________
Клиентские энтити тоже входят в визибл лист? Что насчёт TE_DLIGHT?
__________________
I'm on github
I'm on opendesktop.org
FreeSlave нет, только серверные.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Проблема, оказывается в гибсах была. По 4 гибса на каждого монстра, причем гибсы остаются жить по 25 секунд. Вот и выходило за лимиты. Переделал для особо взрывных монстров спавн гибсов через TE_BREAKMODEL, оставил фиктивные гибсы с EF_NODRAW для разброса декалей крови, и всё стало замечательно
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, переиспользование - и есть легкий путь же
Может, как-нибудь потом. Пока главное, что понял, в чем проблема.
__________________
I'm on github
I'm on opendesktop.org
FreeSlave так ты две копии наделал, которые к тому же не синхронны между собой. Это что ли лёгкий путь?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, я понимаю, что клиентские гибсы движутся иначе, но в моем случае появление кровавых следов в местах соприкосновения гибсов с миром непринципиально.
Решение, о котором ты говоришь, конечно лучший вариант (более того, его можно применить универсально для всех монстров), но я, кажется, ни разу не создавал новый вид темп-энтить. Если есть пример/туториал, буду признателен
__________________
I'm on github
I'm on opendesktop.org
gEngfuncs.pEfxAPI->R_DecalShoot( |
gEngfuncs.pEfxAPI->Draw_DecalIndex( gEngfuncs.pEfxAPI->Draw_DecalIndexFromName( decalName ) ), |
gEngfuncs.pEventAPI->EV_IndexFromTrace( &pmtrace ), 0, pmtrace.endpos, 0 ); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, спасибо, вроде разобрался.
Вот такой получился код. Заюзал коллбэк вместо ввода нового флага. Попытался скопировать поведение серверных гибсов.
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 | } |
иcode:
baseline.angles
.code:
FTENT_ROTATE
__________________
I'm on github
I'm on opendesktop.org
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, неправильно если бодигрупп несколько, это понятно. Я не припомню моделей гибсов с несколькими бодигруппами, а если уж затачивать на универсальность, то вовсе не факт, что маппер захочет, чтоб юзались все сочетания бодипартов из всех бодигрупп.
Насчёт бодикаунта в numframes - ксаш сохраняет, а голдсорс нет.
__________________
I'm on github
I'm on opendesktop.org
Ну вообщем справился, молодец
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Обновил. Добавил FTENT_PERSIST чтоб гибсы не исчезали как только игрок заходит за стену. Рандом всё-таки сделал по полному бодикаунту, как предложил Дядя Миша. Добавил уменьшение скорости при касании земли (правильно это так делать через baseline?)
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
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Когда более-менее возишься в коде ХЛ разве не возникает желания сделать себе дебажное отображение тех же трейсов или связей между энтитями как в Джеке-Хаммере? И чтобы корректно работало с Z-буфером и не ломало остальной рендер?
Вроде очевидная идея, но я на такое пока не натыкался. Может быть в XDM есть, там всё есть.
Я вот попробовал через GLbegin и вижу что это толи нельзя запускать из произвольного места в коде(CalcThirdpersonRefdef), толи оно фундаментально невозможно.
А ещё есть этот баг который не до конца рисует группу точек если начало и конец расположены в обратном порядке.
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Художников тоже учат сначала позы-скелетики линиями рисовать. И там та же проблема: при проекции на плоскость информация о перспективе теряется, толи объект наклонен к тебе, толи от тебя. Градиент помогает различить концы А и Б.
На самом деле тут точки вместо линий потому что я ждал что точки отфильтруются по глубине.
__________________
http://www.moddb.com/mods/monorail-quest
Конечно, чё нет-то.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Crystallize
Ты GL_DEPTH_TEST включаешь после вызовов рисовалки.
nemyax
Я всяко пробовал, ничего не меняется.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Недавно обнаружил в хл баг - если игрока ударит какой-нибудь монстр (зомби, например), а игрок сразу после этого зайдет в меню, то лазерный прицел начинает двигаться по экрану, WeaponIdle зовется даже когда игра остановлена, как на сервере, так и на клиенте. Как такое лечить?
__________________
I'm on github
I'm on opendesktop.org
Ребята, помогите с проблемой. Вылетает игра после добавления нового монстра/оружия (без ошибок в компиляции). При запуске карты с меню начинается загрузка (Starting local game server) и происходит вылет на раб. стол, дебаггер ругается на это в cbase.h:
Если нововведения убрать (иногда если убрать все из precache) то вылетать перестает. Вообщем похоже, что я какие-то лимиты precache превысил, всего оружия в моде 25 видов
Вообщем, похоже, это переизбыток энтитей на тестовой карте, которую я загружал (если такое вообще возможно). При запуске другой карты вылетать перестало
Crystallize
У всех работает, а у тебя не работает. Задай двум точкам разный цвет и отрисуй их как GL_LINES.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Хм, я ничего такого не указывал, т.е. это дефолтный режим?
GL_MODULATE вообще будет работать не с текстурами а просто с двумя значениями RGB? Я везде вижу что сначала берут указатель на текстуру, потом скармливают его GL_BIND, задают режим блендинга, и уже потом применяют pglTexEnvf одним из параметров которого и является GL_MODULATE.
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 ага, её.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Так, я в HUD_DrawTransparentTriangles
Функции отрисовки типа pglVertex которые должны принимать вектор, ничего не рисуют, могут только обнулить его позицию и нарисовать всё в таком виде. Работают только те для которых ручками указываешь три координаты.
Рисуемый примитив-ну там линия или квад-заливается однотонно и цвет по непонятному принципу меняется если ходишь вокруг. Обычно цвет похож на цвет скайбокса, но может быть также чисто чёрным или чисто белым. Если указан GL_Bind с любой текстурой, то примитив красится разными оттенками фиолетового.
Потом я додумался заюзать TexCoord и выяснилось следующее: без бинда квад красится текстурой со скайбокса
если подойти ближе-то весёлой мешаниной текстур оружия
Если с биндом то рисуется эмарская молния какая-то, и поверх неё ещё одна
судя по всему мип-уровень, он исчезает если убрать фильтрацию
glDisable(GL_TEXTURE_2D) не поможет?
Некий эффект есть, но объект всё равно однотонный.
Добавлено 23-10-2019 в 19:40:
Ага, значит всё-таки нужен ShadeModel.
Добавлено 23-10-2019 в 19:42:
А GL_MODULATE даже и не нужен.
Добавлено 23-10-2019 в 19:48:
У меня получился красивый радужный квадратик, новсё-таки непонятно как это применить на практике если оно не хочет принимать на вход имена векторов.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Разобрался, вертекс должен быть объявлен как глобальная переменная, тогда он не будет пропадать.
Кстати, из какого-месте можно вывести ALERT чтобы посмотреть как сам GL видит ситуацию?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ничего особенного не произошло почему-то.
Crystallize а что должно было произойти? Если бы ты накосячил, в консоли бы полезли ошибки. Раз молчит, значит порядок.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша когда я косячил, подсовывая GL-у вертекс который GL не мог отрисовать потому что тот был задан локально объявленным вектором, то GL просто рисовал белиберду и не выдавал никаких ошибок. Я вчера воссоздавал ситуацию.
Если ты задаёшь вертексы через glVertex3f, то не имеет никакого значения локальные они или глобальные. Значит ты через указатель что-то там передавал.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Дядя Миша Я уголки квада рисовал так, что пары XY в столбик шли как бы лесенкой:
0 0
0 99
99 0
99 99
Не будем брать квады, возьмем простейший пример с линиями:
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(); |
в glvertex3fv разве не указатель передаётся?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
vec2 = (x, y, z); |
Да не мог ты так задать, как написал. Оно бы не скомпилилось.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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) {}
Только откуда ему взяться?
__________________
Ну у меня строчкой выше ещё написано Vector vec1, vec2; Или не строчкой выше, а снаружи функции. Результат один. На предыдущей странице код есть.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша Да рисовать теперь можно хоть как, когда я поймал этот баг:
https://imgur.com/a/Zw9ITil
Хочу сделать фичу как на картинке, чтобы юзабельный объект выделялся скобками. Есть ли на клиенте возможность правильно определить габариты модели? Чтобы при осмотре с разных сторон скобки в неё не ныряли? Пробовал по mins/maxs, но это работает только если смотреть на модель прямо. Если сбоку, то "толщина" значительно меньше, чем надо.
Ku2zoff
В Volatile/PW это уже из коробки имеется.
__________________
XaeroX я знаю, т.к. ты тоже фанат DX, и не мог пройти мимо этой плюшки. Мне хочется в халфе/ксаше такое сделать.
Умножать вершины ААВВ на мвп матрицу и считать минимумы/максимумы?
Ku2zoff
Возможно, это уже несколько устаревшее решение. Кстати, оно не только в DX было в те годы, а и, скажем, в Red Faction.
А как тебе вариант из DX2? Там ничего считать не надо, нужен только ббокс.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Хм. Кажется, я кое-что придумал. Можно воспользоваться функциями из pm_debug, которые рисуют ббоксы энтить. Но сами ббоксы не рисовать, а только записывать координаты в vuser'ы. Ну а потом, уже в худе, читать координаты, и рисовать красиво.
А ещё проще будет с помощью extern "C" сразу в худе юзать функцию рассчёта координат: на входе у неё энтитя, а на выходе 4 вектора.
Добавлено 29-10-2019 в 13:01:
Ku2zoff
Вариант ncuxonaT-а не нравится? Тоже первая мысль такая была.
nemyax ну там же наверное надо в рендерер лезть.
Добавлено 29-10-2019 в 14:10:
Ссылка на ютюб для тех, у кого не видно видео: https://youtu.be/PAX5sZ_TnVY
Ku2zoff
По мне, так вариант из DXIW тут неплохо бы смотрелся.
Добавлено 29-10-2019 в 14:28:
__________________
Перенёс весь код рисования на клиент, из pm_shared юзаю только GetModelBounds. Буду думать дальше. Охота всё-таки дрыгающиеся скобочки, как в первой части.
Добавлено 29-10-2019 в 15:15:
Напоролся на проблему. Все три компонента angles у энтити на клиенте null. Соответственно, не получается вращать рисуемый ббокс.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Тупой вопрос: как правильно рисовать спрайты с альфаканалом в худе? Цветные иконки, например, как в DoD. Есть такая функция?
p2st
Что значит
__________________
http://www.moddb.com/mods/monorail-quest
Ku2zoff через триапи рисуй.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Делаю удар ногой через secondary attack, завёл PLAYER_ATTACK2, чтобы анимация в thirdperson отличалась от основной атаки, вызываю в коде оружия через m_pPlayer->SetAnimation( PLAYER_ATTACK2 );
В самой анимации анимирован удар ногой, но проблема в том, что в игре наследуются секвенция ног от walk, поэтому анимация по-сути проигрывается только для торса, как отключить это для PLAYER_ATTACK2?
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 | } |
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; |
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den смотри PLAYER_JUMP и ACT_HOP. Там нет гейтсеквенций. Вообще, можешь сделать по-хитрому, и как раз таки сделать пинок гейтсеквенцией.
1 | if (m_Activity == ACT_RANGE_ATTACK2) |
2 | { |
3 | m_IdealActivity = m_Activity; |
4 | } |
5 | else |
6 | { |
7 | m_IdealActivity = ACT_WALK; |
8 | } |
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Товарищи ни у кого не остался клиентский код от 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.
Luciferchik сорян, что так поздно отвечаю. Есть у меня архив, щас найду. Вот, в аттач положил.
Добавлено 30-12-2019 в 01:46:
Кстати, можешь использовать серверную версию из сорцев ReGameDLL. Там код немного компактнее написан, надо с умом подойти, внимательно перенести на клиент.
Добавлено 30-12-2019 в 01:50:
Кстати, попутный вопрос к форумчанам, раз уж я в теме снова отметился. Ни кто не находил стандартную модельку v_9mmAR с двумя анимациями перезарядки, чтоб первая обычная, а вторая с передёргиванием затвора? Из Brutal Half-Life не предлагайте, там обе руки обрезанные, при Weapon Lag видно дырки. Я пытался к ней обычные руки приделать - вышло не очень.
__________________
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.
Почему в HL2 трейс от солнца часто останавливается на границе листьев? Часто бывает что в окне солце видно а на полу света от него нет. В Ку2 тоже такое есть?
Crystallize
Может разрешения лайтмапы недостаточное?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro ну кстати смена разрешения лайтмапы там тоже сломана. Не, не в этом дело, в соседней комнате оно освещает подоконники и косяки, толщиной 8 юнитов. Может быть дело в том что окно в редакторе залепили TOOLSBLACK поверх брекабли. Но в других местах не залепили и солнце светит под прямым углом, но в помещение не проникает. Им приходится лепить фейковое солнце спотами. %)
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Товарищи объясните, что происходит со спрайтами снега когда юзаешь их вместе с туманом на ксаше, в обычной хл такого бага нету.
__________________
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 для снега надо выключить туман. Ну или сделать 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'
FiEctro а, там видимое солнце некорректно стоит, а реальные углы другие, такие хитрые что дальше подоконника трейс упирается либо в косяк, либо в колонну, либо в текстуру стекла которое типа настолько грязное что его можно сделать солидом, а с внутренней стороны поставить текслайт.
Мне нужно как-то из РАДа прочитать координаты проп_статиков, но любая попытка копирования куда-то наружу хоть и проглатывается компилятором но вызывает краш при запуске, например:
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; |
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 | } |
__________________
__________________
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.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
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.
Я в VRAD читаю массивы обычных Vector и некий небольшой но значительный процент значений оказывается -2147483648. Во-первых, как это детектировать? Сравнение if x < -99999 не помогает. Во-вторых, можно ли эти значения прочитать правильно? И как возникают они? Координата в мап-файле записана без точки, как целое, и при чтении во флоат что-то происходит?
Читаю углы пропсов и ориентирую лайтспоты соответствующим образом.
В какой-то момент перестало работать и не хочет чиниться. Читаешь с пропса угол 90 0 0, назначаешь его споту а он светит на стенку. Мне так и надо, но ведь 90 0 0 это вертикально вверх, какая стенка?
При том, что в Хаммере при 90 0 0 спот реально встаёт вертикально вверх, а на стенку уходит синяя палочка, видимо ролл.
И да, я помню что ненулевые питч и яв оверрайдят соотв компоненты вектора. И про недавний прикол с моими векторами тоже не забыл.
Вот такой код, нас интересует аксиальный случай т.к. неаксиальный работает правильно:
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 | } |
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 | } |
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Там у пропов и у света совершенно разные ск чтоли? С разными нулевыми направлениями и разными направлениями отсчета?
Добавлено 16-01-2020 в 13:59:
Потому что при инверсии питча и ява и добавления 180 в яв, почти все совпало при проверке но по-прежнему дико сломано в игре.
Сегодня экспериментировал в очередной раз с большими картами. Создал параллелепипед высотой почти 32768 юнитов. Прыгал игроком вниз и считал секунды, за сколько он долетит до земли. Пытался таким образом примерно сравнить габариты с картой Sunspire из анрила. Так вот. Создал внизу воду (мировую), скомпилил... Халфа вылетает при попытке загрузить карту. Пробовал воду-энтитю - такой же эффект. Опытным путём пришёл к заключению, что если расположить водный браш или энтитю дальше, чем 8192 юнита от центра карты - халфа вылетит. Ксаш, конечно же, не вылетает. Интересно, что там за фигня такая в движке, что приводит к вылету? Может быть у кого есть идеи?
Добавлено 27-01-2020 в 04:53:
АП: в софтваре не вылетает. Только в OpenGL.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я сделяль
Причём без всяких мартиц, вьюпортов и прочей шняги.
Добавлено 31-01-2020 в 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'
Дядя Миша вопрос по компилятору моделей, как сделать чтоб он не уменьшал размеры текстуры? Вот хочу юзать 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.
Ku2zoff
Красиво, полезная фича.
__________________
http://www.moddb.com/mods/monorail-quest
thambs я давно хотел сделать. Всё-таки получилась не без багов, иногда уголки съезжают слишком далеко к краям экрана, когда энтитя совсем близко. Но это мелочь, мне лень тащить код из ксашмода, да ещё адаптировать его для халфы. Осталось сделать чтобы можно было так же выделять студиомодели, и будет готово.
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'
Значица есть задача одна. Допустим, имею я текстуру шума, из которой я спокойно смогу собрать "пазл" без швов. Но как вот такую текстуру наложить на сферу/NPC, чтоб не было никаких швов непосредственно на модели?
__________________
Мой сайт
Xash3D Modding Discord
__________________
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.
SNMetamorph можно удалить швы на каждой модели индивидуально
ncuxonaT я думаю он спрашивает, есть ли быстрый способ подобрать UV-координаты для каждого сурфейса чтобы затайлить ту же сферу без швов?
Crystallize вероятно. Но ведь такого способа нет
ncuxonaT я думаю алгоритм растягивания углов квадратной текстуры по углам произвольного трапециидального сурфейса не будет сложным. Подразумевая что текстура бесшовная.
Добавлено 01-02-2020 в 20:39:
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 в ксаше есть это?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша да, и под обычной халфой и под ксашмодом.
Добавлено 10-02-2020 в 18:52:
Хм. Похоже, это только на моих картах. На оригинальных халфовских норм.
Добавлено 10-02-2020 в 19:19:
Какой-то странный баг, появляется только на моих тестовых картах. Перекомпилил две карты из ретрибьюшена, на них этого не происходит.
Тоже вопрос по 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
FreeSlave
trigger_transition?
__________________
http://www.moddb.com/mods/monorail-quest
thambs, предлагаешь растянуть его на всю карту?
__________________
I'm on github
I'm on opendesktop.org
FreeSlave самый лучший вариант - модифицировать пушабли кодом из моего тутора, и грузить отдельными bsp. Растягивать транзишен на всю карту плохое решение. Либо, просто не заводи глобалнейм. Не дай игроку возможности утащить пушаблю на первую карту, вот и всё.
Добавлено 15-02-2020 в 21:42:
Попробуй расположить пушаблю подальше от чейнджлевела, чтобы она не попадала в его PVS, кстати.
Ku2zoff, так она вроде ж и не переходит как раз потому, что не попадает.
Попробовал грузить отдельным bsp - вроде нормально работает.
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Либо костылём, через маппинг, дабы нельзя было бы перетащить объект. Вряд ли сеттинг предполагает поле конфискации народного имущества.
__________________
Tiger! Tiger! burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Тут 129-му элементу (count+1)-ного по счёту массива присваивается указатель на чяр, судя по коду. Какой длины эти массивы, если у тебя повреждаются строки?
Может, имелось в виду strcpy(propDict[count], lump.m_Name);?
nemyax это стрингтабля
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
То есть char propDict[numStrings][128];?
А, я пишу в 128 элемент строки и тут же попадаю в следущую строку?
Спасибо. Я просто решил что ему нужно каждый раз указывать полную размерность.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Кто то знает как изменять менюшки не в стим халве (WON) . На которой базируется ксаш.
Привык что в стиме поиграл с .res файлом и все, а тут ничего найти не могу.
TOPOL_M_FRF берешь BMP файл, в котором написаны строки меню и перерисовываешь. Если какая-то строка не нужна, замазываешь её прозрачным цветом. Нажиматься будет, но её не будет видно. В файле strings.lst (кажется) прописаны описания, что справа от строк меню. Чтобы поменять шрифт, нужно пересобрать hl_res.dll. Это для WON-халфы. В ксаше доступны сорцы menu.dll, можно вообще всё перелопатить по-своему.
У меня вопрос: завёл себе в моде мовевитч. Собсно, только для того, чтобы цеплять стёкла к дверям, да кнопки к поездам и лифтам. С дверьми всё ездит отлично. Платформы ещё не доделал, но думаю, что поедет норм. С трактрейнами проблема - поезд иногда может быть заблокирован игроком, особенно на резких поворотах. Сталкивался с подобным в модах и без мовевитча. Куда копать? Иной раз всё норм, а иной раз, если игрок сунется в угол между плоскостями поезда, последний подтормаживает. Ну, дети, естественно, продолжают ехать. Думал, что я такой криворукий, неправильно скопипастил код из ксаша 0.39. Попробовал карту на спирите 1.9 - там ещё хуже, дети ещё и дёргаются, и вообще их страшно колбасит на поворотах. Помню, что раньше делал на спирите норм поезд со стёклами, используя motion_manager. Ну это вообще жесть, там ещё локусы и алиасы. Что мне нафиг не надо. Где лучше проверять блокировку родителя, чтобы при необходимости заблокировать детей?
Нормальный мовевитч - только начиная с ксаша 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'
Дядя Миша это я знаю. Меня интересует именно секундное застревание игрока в трактрейне. Если от этого избавиться, не надо будет тормозить детей поезда. Либо у меня сама геометрия вагона корявая, либо скорость поезда слишком высокая, либо патчкорнеры криво расставлены на поворотах. В обычной халфе, в главе Black Mesa Inbound, я ни разу не блокировал игроком вагончик. Как и в блушифте или в опфоре. А вот на своих картах или в чьих-то модах такое случалось. Видимо, вопрос больше к мапперам, чем к кодерам.
Набери 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'
Отчего бывает такое когда хуллы останавливают тебя в режиме noclip и при r_showhull визуализируются не там, где они на самом деле?
Хуллы не могут останавливать в режиме ноклип
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну что-то другое значит)) Это оттого что я в новую папку мода просто скопировал папки bin и glsl из ксашмода.
Ксаш-мод и параноя не совместимы с визуализатором хуллов, я наверное забыл сказать. В принципе если кастомный рендерер выключить, наверное будет работать, но так неудобно его туда-сюда.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я всегда в ксашмоде успешно визуализировал хуллы. Правда в сегодняшнем конкретном случае сервер чаще умирает с bad contents -19.
-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'
Как сделать чтобы соприкасающиеся бмодели и браши не резали друг друга на клипноды? Детайлы, func_group, zhlt_nocsg не помогают, они только для видимых сурфейсов. Пока я вижу только func_wall как действенный способ.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Хочу оформить замазыватель швов на текстурах в отдельное приложение и выложить в общее пользование. 2 вопроса:
1. оно кому-нибудь надо?
2. есть ли идеи по поводу интерфейса?
ncuxonaT
Выглядит круто. Под какой формат?
__________________
http://www.moddb.com/mods/monorail-quest
thambs модели в obj, текстуры наверное в любом формате.
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 вещь полезная, заметно как на модельке на скрине исчез текстурный шов на ноге.
__________________
http://www.moddb.com/mods/monorail-quest
Не вижу разницы и всё тут
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша это кстати две разные картинки, можно переключаться между табами как ты любишь
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша нет такого инструмента. Для любых текстур и любой геометрии, только нужно её предварительно в obj конвертировать. С нормалмапами не прокатит наверное, нужно их будет сначала перевести в ворлдспейс, а потом обратно.
ncuxonaT
На чём писал и как вообще сделано, через МНК?
__________________
http://www.moddb.com/mods/monorail-quest
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 на лазарусе. Сделано через метод сопряженных градиентов.
https://www.sebastiansylvan.com/pos...esTextureSeams/ вот по этой статье в основном.
Дядя Миша ну как отчего, оттого же отчего и на лайтмапе. Развертка фрагментами, билинейная фильтрация, цвета отфильтрованных семлов с разных сторон не совпадают. Я не знаю, почему в редакторах нет инструментов. Наверное, потому что программисты говорят моделлерам "делайте швы в незаметных местах".
Если я правильно понял, алгоритм применяется не к развёртке, а к самой текстуре, добавляя туда сглаживающих пикселей.
А можно посмотреть как выглядит текстура до и после?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А как он вычисляет эти пиксели? Интерполирует?
Плохо конечно, что по факту в авторский контент вносятся изменения, и это не 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 ну так на камне и текстура 32х32. И даже так лучше, чем со швами
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
http://www.moddb.com/mods/monorail-quest
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 но ведь не все же рёбра надо мылить.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша все надо мылить. Только не мылить, а минимизировать расхождение. Если расхождения не было, то ничего и не поменяется.
Не нравится мне это всё, совсем не нравится. Эти швы, равно как и швы на лайтмапах - очень частный случай, применение к ним тежолого матана - как из пушки по воробьям, он конечно справится, но это попросту избыточно.
Я напомню, что хитрая китайская придумка гарантировала в принципе отстутствие швов на лайтмапах и при этом использовала довольно простые принципы работы - переход из одного локального пространства в другое.
Собсно, вот я 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 китайская придумка очень сильно жрала оперативу и проц и время
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 есть такое дело. На трианглах она не очень. Но на квадах отлично. Впрочем, я думаю, всё дело в этих точках, они просто для трианглов расставляются неоптимальным образом.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Существует ли простой и изящный способ клипнуть треугольник АА боксом? По типу как на картинке. Чтобы на выходе получить список вершин многоугольника.
Ну как компиляторы карт полигоны режут - всё тожы самое абсолютно.
Ищешь точки за плоскостью, перед плоскостью и на плоскости и клипаеш.
Посмотри в любой кваке 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'
Я не хочу больше писать ничего, только время отнимает.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Добавил в свой мод верёвки. Изначальный вариант от Солокиллера работает как в опфоре, без проблем. Дядьмишин вариант из ксашмода - не совсем корректно. Второй, иногда третий сегменты странно колбасит, они "выпадают" из верёвки в сторону. В чём проблема? И какие основные отличия в реализации? Смотрел код, но ничего особо не понял, многабукаф.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша прямо в ксашмоде. Нормально выглядит верёвка, сделанная одной моделью. А вот сегментированную колбасит.
Второй сегмент ведёт себя странно.
Ну это не моя карта. А на моей бага нет.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Это ofboot3 из опфора. И на ней нет бага с кодом Солокиллера.
Добавлено 22-03-2020 в 01:50:
Удалось воспроизвести баг. Если энтитю верёвки погрузить в браш, чтобы её начало было внутри этого браша хоть на один юнит - сегменты колбасит. Если просто повесить в воздухе, или ювелирно прислонить вплотную к брашу, то всё норм. Так что это всего лишь мапперская ошибка.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
Ну а ты в этот зазор впихни крюк моделькой
Всему вас учить надо
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Vector(-16, -16, -18), Vector(16, 16, 18) |
Верёвка коллидит с миром, да.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Можно сделать первые два-три сегмента несолидными, всё равно на них игрок не может залезть. Я кажется понял, отчего возникла эта проблема именно в модифицированном коде. В оригинале, ЕМНИП, есть семплы и сегменты, кол-во энтить двойное. А тут только сегменты. Подозреваю, что семплы используются именно для того, чтобы лазить, а сегменты для визуального отображения. И в оригинале видимые сегменты не коллайдят с миром. А то, что коллайдит - так же колбасится, просто этого не видно.
Ну в любом случае мне не приходило в голову утопить веровку в потолке.
А двойное кол-во энтить расходуется впустую по сути. Я это дело оптимизировал. Плюс в оригинале ще была какая-то странная штука, может я недопонял, но там видимые и коллидабельные эдикты каждый кадр менялись зачем-то местами.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Товарисчи, кто нибудь пробовал добавить в мод скольжение по наклонным поверхностям как в q1/q3? Я начал разбираться в этой теме, ещё не понял в чем ключевое отличие. В HLSDK это передвижение работает так - если угол между осью Z и нормалью поверхности меньше 45.5 градусов, то передвижение происходит так же, как и по обычному полу. Но если этот угол больше, то передвижение происходит по алгоритму будто игрок летит в воздухе. Ключевая задача такая: сделать возможность взбираться на наклонные плоскости, и скользить по ним вниз, при этом набирая скорость.
__________________
Мой сайт
Xash3D Modding Discord
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
__________________
I'm on github
I'm on opendesktop.org
Так. Нашёл в каком месте кода у нас проблема. Но пока не нашёл, в чём она заключается. Функция CRope::TraceModels, блок кода в условии if (m_bObjectAttached). Если этот блок выкинуть, чтобы трейс был и в случае с приаттаченным объектом, и без него одинаковый - проблемы нет. Может быть, дело в конечной точке трейса, ведь она вычисляется в первом случае динамически, в зависимости от flTraceDist.
Ku2zoff
А можешь показать ведос "до и после"?
nemyax щас запишу.
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'
До:
После:
Добавлено 25-03-2020 в 16:29:
Этот код всё равно в XashNT попал, я потом до него доберусь.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Есть ли возможность смены скорости переключения мерцания у 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");
Т.е. то как быстро одна буква (которой соответствует параметр яркости) сменяет другую
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Подскажите, как можно сделать тени от студиомоделей шадовмапами. Очень уж неохота тащить весь рендерер из тринити ради теней и спотлайтов с текстурой. Читал код тринити, как я понял, проекция модели рендерится в текстуру. Затем поверх мира, грубо говоря, рисуется текстура спотлайта, которая ярче исходной, а поверх неё уже тень. Пробовал избавиться от текстуры спотлайта - пропадает и сама тень. Хочется нечто вроде теней из hlfx 0.5b, когда видимого света нет, есть только тень. Статей по реализации немало, есть и готовый код в тринити и ксашмоде. Но не имея опыта, разобраться трудно. Напишите, пож, что нужно сделать пошагово и куда глядеть. Нужно ли рендерить мир кастомным способом, или же тень вполне наложится на то, что уже нарисованно движком.
Добавлено 03-04-2020 в 18:13:
В крайнем случае, можно тени и шадоввольюмами, но они по-моему тормознее и не заработают в стим-версии халфы от слова совсем. Если раньше можно было подсунуть хакнутую opengl32.dll и заставить работать стенсил-буффер, то теперь, во-первых, Вальва встроила в движок функцию, которая удаляет opengl32.dll из корня халфы при запуске. А во-вторых, если исхитриться, и не дать удалить, в консоли всё равно будет no stencilbits. Хоть на FBO, хоть на обычном рендерере. Так что первая Паранойя никак не работает корректно. Соответственно, бузеровские тени завести тоже не получится. Ну, и хак с плющмоделями тоже не работает. Или функцию вырезали из движка, и изменилось смещение в памяти, которое нужно было делать, чтобы хак заработал.
Тени не рисуются - тени это кэшированный результат трассировки в экранном пространстве, это даже не текстура.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Это не та тема, где можно с краешку поковыряться и забыть. Или бери целиком чужой рендерер или сиди и разбирайся досконально.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Да вот довольно трудно разобраться. Слишком много всего нагорожено. Чего только стоят какие-то клиентские статик-энтити. Или что-то в этом роде. Чтобы их оттуда выковырять, уйдёт несколько дней. Плюс, именно эти энтити используются в тринити в качестве "небесных". Рендерятся в отдельном проходе сразу после неба только они и ничего больше. Зато, это избавляет от хака с буффером глубины, и не нужно тащить хакнутую opengl32.dll для неба, как в Паранойе.
Справедливости ради, стоит заметить, что разобраться всё-таки можно, если исследовать код поэтапно, а не тупо копипастить. Например, мне удалось немножко причесать код мониторов из старого ксашмода 0.39, и избавить его от линковки CvaLib. Но я шибко не тестировал, по-любому там есть косячки.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
алгоритм сорсовских теней - отрендерить черную модель в текстуру, размыть текстуру, наложить её на мир наподобие декали?
Помоему там 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'
Может кто нибудь обьяснить как работает алгоритм пересечения луча и AABB? Рою интернет, уже довольно много информации нашёл, но вообще не могу разобраться.
__________________
Мой сайт
Xash3D Modding Discord
SNMetamorph вот тут достаточно толково описан алгоритм
https://www.scratchapixel.com/lesso...ox-intersection
Добавлено 03-04-2020 в 20:46:
Мне неоднократно попадалась информация, что видеокарта рисует пиксели не по одному, а блоком. И к следующему блоку не приступает, пока не закончит предыдущий. Время отрисовки блока определяется самым медленным его пикселем. То есть если отбрасывать часть пикселей из блока дискардом, на производительность это повлияет слабо.
Я решил проверить это и заодно узнать размер блока. Рендерил один и тот же кадр, отбрасывая часть пикселей либо в шахматном порядке, либо линиями (см. иллюстрации). Замерял фпс для разных размеров шашечек/линий. Во всех случаях количество отрисованных пикселей одинаковое.
С интерпретацией результатов возникли проблемы. Кто-нибудь может объяснить, почему такая разница в фпс между шашками и линиями при размере в 16 пикселей? Правильно ли я понимаю, что размер блока можно считать равным 32х32? На других видеокартах всё может быть иначе?
Смысл забивать голову? Он работает, этого достаточно.
Добавлено 03-04-2020 в 21:18:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой сайт
Xash3D Modding Discord
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вопрос к знающим: как можно оптимизировать террейн, сделанный в Terrain Generator? Дело в том, что мне нужно сделать довольно большой уровень с открытой местностью, террейн этот вопрос решает неплохо(учитывая, что делаю я в Paranoia 2 v1.51 и вопрос с его окраской буду решать с помощью слоёв в рендере). Но полигонов очень много - и, что самое неудобное, после экспорта в Джек Хамер я не могу нормально нанести Null-текстуру на невидимые грани(там все полигоны как отдельные маленькие браши) - в ручную это почти невозможно, их слишком много. Может их можно как-то объединить уже в Джек Хамере?
Этих программок - две штуки. И вот одна из них сама красит нуллом бока. Открываешь уровень в блокноте и автозаменой меняешь 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'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den А он понимает карты высот? Я ведь сначала в geocontrol 2 делаю - и сохраняю в хейтмапу.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Про map конечно жы. Ну это так, может быть в самом генсурфе есть выбор чем красить бока этих брашей, я не помню.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
http://sauerbraten.org/lee/lpv.zip
Вот демка LPV, которую ДМ скинул. Кто-нибудь может объяснить нубу, как её собрать?
Я сорцы не собираю года с 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'
Вот такой интересный баг словил. Две энтити, находящиеся в другом помещении, видны сквозь скайбокс. С чем это связано и как править?
__________________
I'm on github
I'm on opendesktop.org
Дай кусок карты где проявляется, алсо, энтити с оригином?
__________________
http://www.moddb.com/mods/monorail-quest
thambs, я пытался отдельный кусок вытащить, на котором это бы проявлялось, но там баг не проявляется. Да и не было его раньше на той же карте, когда и скайбокс и комната уже были готовы. Начал проявляться с какого-то момента. Разве что в личку всю карту кину, как доверенному лицу
Нижняя энтитя, кстати, - func_water, причем с дырой посередине (как видно на скрине). Может, тот факт, что вода не сплошная, как-то играет роль.
Энтити без оригинов.
__________________
I'm on github
I'm on opendesktop.org
FreeSlave
Кидай в личку, гляну. Алсо, попробуй оригины добавить им.
__________________
http://www.moddb.com/mods/monorail-quest
У меня в ксашмоде такое постоянно было, но потом ДМ кажется говорил что пофиксил это...
Так в халфе же небо не является преградой для 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'
__________________
I'm on github
I'm on opendesktop.org
Ну значит меняй геометрию так, чтобы отсекалось. Других способов нет.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Тоже никогда непонимал, зачем оно рисует через небо то что должно было быть отсечено визом?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Ну значит виз это не смог отсечь.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А как это сделано в анриле первом? Там такой болячки нет.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Уже простыню накатал, распедалил что это, почему появляется и как возникло. Но нет - всё равно никто не читает.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
FreeSlave
Поставил им оригины и скомпилил p2st с обычным (не фаст) визом -- отсекает их:
__________________
http://www.moddb.com/mods/monorail-quest
thambs, что ж ты скриншоты уровня в открытую выкладываешь
Скинул бы в личку, где ты там оригины расставил. Я пробовал добавлять оригины - не помогло, а func_water так и вовсе пропал.
__________________
I'm on github
I'm on opendesktop.org
FreeSlave
Так я-ж то же место... Ага, проверил сейчас на стоковой хл -- действительно вода пропадает, а под ксашем показывает её. Попробую ещё подёргать.
Добавлено 16-04-2020 в 01:23:
Так, а теперь и в ксаше пропала.
Добавлено 16-04-2020 в 01:32:
Ага, полностью переделал воду теперь норм -- проверил на стоковом hl-caged (там вроде обычный хл внутре), щас скину в личку.
__________________
http://www.moddb.com/mods/monorail-quest
http://quark.sourceforge.net/forums...hp?topic=1196.0
На форумах кварка у человека возникала странная проблема когда при компиляции у текстур на брашах херится толи скейл, толи сдвиг, в общем швы от текстурирования. Он говорит что смена компилятора не помогает, а проблема возникает при компиляции на конкретном компе. Кто-нибудь сталкивался с таким?
здравствуйте хотел создать верёвку из исходников 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'
__________________
илья
илья2 redefinition это когда одна и та же переменная объявляется несколько раз подряд по ходу функции, может быть даже каждый раз как переменная нового типа. В общем, такого быть не должно.
Добавлено 19-04-2020 в 03:45:
Not a member of значит что в табличке CBasePlayer нет такой переменной или чего-то другого с таким именем.
эм да я уже сделал веревки
можете не отвечать уже
__________________
илья
Я тут мало-мало починил код спрайтовых декалей из Ивазиона. Всё то, что французы не заюзали или не дописали. Теперь декали нормально лепятся на движущиеся энтити, двигаются с ними и поворачиваются. Сохранение и загрузку я для них давно сделал. Теперь осталось сделать хождение через чейнджлевел и можно писать очередной тутор, надеюсь, что кому-нибудь будет интересно. Это не просто декали высокого разрешения без кастомного рендерера, но ещё и анимированные декали. Лужи крови, жидкости, анимации на стенах длиннее 10-ти кадров и т.д. Ну вы понели.
Ku2zoff ты самого главного не сделал - клиппинга. Если декаль нанести на край стены, то она будет висеть в воздухе.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В процессе работы над рейтрейсером встал вопрос о хранении материалов, чтобы иметь к ним доступ из шейдера. Проблема в том, что свойства материала могут быть заданы как числами, так и текстурой. Ну то есть тот же диффузный цвет может быть задан как 3 числами, так и диффузной текстурой.
Я хочу все вот такие текстуры запихнуть в атлас, а в другой текстуре хранить параметры материалов и ссылки на текстуры в атласе.
Дайте совет, как лучше сделать в шейдере выбор того, что нужно использовать при чтении материала - численный параметр или текстуру.
Завернуть всё в if else, например, если ссылка на атлас отрицательная, то брать число, а если положительная, то читать текстуру из атласа?
Или сделать из всех численных параметров маленькие текстуры, засунуть их в атлас к остальным и всегда брать данные оттуда?
Вопрос по тчинкам в 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
ncuxonaT дак ты при старте приложения все эти числа запишы в одну текстуру и ссылайся на нее.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша так я и запишу. Вопрос в том, как быть с текстурами. У одного материала цвет задан числами, а у другого - текстурой. Нужно как-то выбирать
Да сама система эта порочная числа-текстуры. Отсюда и всё дерьмо.
Я бы сделал через убер-шейдеры с #ifdef к примеру.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша понимаю, что порочная, но не вижу альтернативы. #ifdef не подходит, луч может попасть в любой материал, нужно иметь доступ ко всем сразу
Так что ты надеешься услышать? Без условия очевидно не обойтись.
Ну хочешь - нагенерь мини-текстур в один цвет, засунь их на место диффузок, сравни как быстрее. Проиндексируй эти цвета, чёб не дублировать эти 16-пиксельные текстуры с одинаковым цветом.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша надеялся услышать что-то типа "эээ, не делай через условия, это убьет перформанс, делай через минитекстуры, это будет быстро и универсально". Ну или наоборот
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Есть ли способ определить на сервере, стоит игра на паузе или нет? На клиенте есть ref_params_s->paused. На сервере в глобалсах ничего подобного нет. Пока что мне не пришло в голову ничего умнее, чем нагородить дурацкий огород:
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 | } |
float flSecond = 0.96 / gpGlobals->frametime; |
if (g_ulPostFrameCount > g_ulFrameCount + int(flSecond * 2.0)) |
ALERT(at_console, "Paused\n"); |
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'
Дядя Миша неа. Не работает, я пробовал. Даже на паузе фреймтайм равен 0.016xxxx при 60 фпс. Может быть это потому что стим версия?
А не, в халфе на сервере фреймтайм по идее будет всегда валидным.
Ну тогда чуть сложнее
1 | static float oldtime; |
2 | if( gpGlobals->time == oldtime ) |
3 | { |
4 | // paused |
5 | } |
6 | oldtime = 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'
Спасибо за подсказку. Теперь серверный фмод в инвазионе имеет паузу:
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 | } |
Ku2zoff эх, ты бы лутьше декалям клиппинг сделал
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну дык собираюсь. Уже неплохо оптимизировал саму структуру spritedecal_s, чтобы как можно меньше параметров писать в клиентский сейв, вынул функции работы с декалями из gHUD.m_Particules в отдельный класс CDecalManager, избавился от нагромождения iIndex, iIndexNew, oldindex и кучи лишних циклов, перебирающих несколько раз декали по этим индексам... По сути, уже всё довольно неплохо: сохраняются, загружаются, переходят через уровни. Осталось сделать статик-декали, которые накладывает маппер. Ну и обрезку на краях брашей.
Добавлено 27-04-2020 в 13:54:
Правда, насчёт статик-декалей не всё так однозначно. Для них надо ещё как-то нарисовать спрайты.
Кстати говоря, то что фмод делает паузу с лагом в полсекунды, обусловлено размером его выходного буффера, хотя это и не совсем корректно.
Ну вообщем посмотри, там где-то этот буффер будет задан как 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'
pFMOD->FSOUND_SetBufferSize(100); |
pFMOD->FSOUND_SetOutput(FSOUND_OUTPUT_ALSA); |
Я этот фмод давно уже дропнул и не жалею.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Безопасно ли удалять энтитю, которая получает DeathNotice'ы? Например, monstermaker. Возможна ли ситуация, что DeathNotice получит энтитя, созданная позже и занявшая тот же эдикт?
__________________
I'm on github
I'm on opendesktop.org
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'
Так-то да. Просто смутило, что в коде именно owner юзается. Хотя вряд ли монстрмэйкеры кто-то удаляет. Да и помимо них DeathNotice разве что Big Momma использует.
__________________
I'm on github
I'm on opendesktop.org
Приветствую всех! Такой вопрос, с помощью местного туториала удалил клиентские оружия, и заодно перенёс код фомки полностью на сервер.
Вот собственно проблема: декаль на стенке ставится ровно один раз, при первом ударе, больше они не появляются. Может кто сталкивался с таким, посоветуйте навскидку что это может быть или может я чего сломал)
SetThink( &CCrowbar::Smack ); |
pev->nextthink = UTIL_WeaponTimeBase() + 0.2; |
1 | /**** |
2 | * |
3 | * Copyright © 1996-2002, Valve LLC. All rights reserved. |
4 | * |
5 | * This product contains software technology licensed from Id |
6 | * Software, Inc. ("Id Technology"). Id Technology © 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 | } |
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); |
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 это типа маленькая задержка появления декали, чтобы анимация успела проиграться.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Всем привет! Подскажите кто знает, как сделать так, чтобы npc "хуже" слышали топот игрока? Например при приближении приходится не только шифт зажимать, но еще и приседать, дабы подкрасться поближе. А хотелось бы обходиться только шифтом, да и в целом бег игрока сделать тише для врагов.
float CBaseMonster::HearingSensitivity( void ); |
float CBaseMonster::HearingSensitivity( void ); |
Что означает cldll "1" в liblist.gam?
__________________
I'm on github
I'm on opendesktop.org
И еще кое что:
Если прописать в Deploy оружия
g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 185 ); |
Где тот код который разворачивает модельку игрока в ту сторону куда он идёт, даже если это стрейф? И тот код который потом плавно поворачивает модельку игрока обратно к его реальным viewangles?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша Если камера от 3го лица и ты жмешь стрейф то моделька мгновенно разворачивается на 90 градусов, в сторону стрейфа, и так шагает пока ты пока не отпустишь клавишу, после чего моделька за 2-3 секунды плавно поворачивается в обратную сторону. Вот этот код я ищу.
Добавлено 30-04-2020 в 21:53:
Crystallize я ж тебе написал
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Подскажите, EV_TraceTexture не работает на пушаблях что ли? Все брашевые энтити норм трейсит, а пушабли не хочет.
Ku2zoff видимо от movetype зависит
__________________
-Brain is dead-
Ku2zoff под ксашем тожы не тестит?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
KiQ насколько я смог высмотреть в ксаше, функция PM_TraceSurface почти идентична функции SV_TraceSurface. Где там собака зарыта, я хз. PM_TraceTexture отличается от pfnTraceTexture тем, что первая трейсит физэнтити, а вторая эдикты. И обе они используют очень похожие TraceSurface. Каким-то образом пушабли отсекаются, и PM_TraceTexture возвращает null вместо имени текстуры.
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 трасса текстуры работает с отдельно взятой моделью. Ты для начала убедись что это твоя пушабля.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша это точно моя пушабля. И по номеру энтити, и по номеру физэнтити. Только вот для физэнтити возвращает model.name = (null).
pev->sequence = m_Material; |
g_engfuncs.pfnSetClientMaxspeed(m_pPlayer->edict(), 185 ); |
Sven Co-op в svencoop\sprites weapon_uzi.txt и weapon_uziakimbo.txt что намекает на то что два разных. В Brutal Half-Life глок v_9mmhandgun.mdl бодигруппами левый и правый и только weapon_9mmhandgun.txt.
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 | } |
__________________
Мой сайт
Xash3D Modding Discord
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff а как запретить/ограничить высоту прыжка игрока с определенной пушкой? Есть идеи?
Приветствую всех. В общем, делаю мод под ксаш (уже лет 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 и других. Но они мне так и не дали понять, как заставить пушку брать патроны только из обоймы. Гаусс упорно лезет в "карман" и не понимает, что у него обойма, хотя пользуется обеими.
Разобрался сам. Вот результат:
https://www.youtube.com/watch?v=Xi-0ARCZeaE
Анимация перезарядки эпичная, ГГ видимо джедай, не иначе я бы ещё поправил звук при отсутствии патронов, довольно забавно слышать, как энергетической оружие ВНЕЗАПНО начинает щёлкать огнестрельным затвором (кстати не помню, с оригинальным шауссом так же?)
__________________
-Brain is dead-
Я бы не использовал модель из CS:O.
Aynekko Никто не постучит из-за модели конечно, просто мне кажется эти модели это дурной вкус. Если хочешь, вот тебе альтернатива, а так конечно сам решай.
Насчёт моделей ИМХО вообще не стоит париться, конечно свои ресурсы больше моду оригинальности дают, но если сам не умеешь моделить то ничего плохого нету чтобы взять готовую подходящую модель. Насчёт ресурсов из других игр волноваться тоже не стоит, вон на Гаррис Мод модели из всех игр тащят, выкладывают в официальном воркшопе и ничего, не понятно почему некоторые боятся юзать модели из других игр в модах.
Насчёт КСО, там много трэша, и много неприятных анимаций, но кстати эта пушка с кристаллом, да и вообще почти весь Sci-Fi оружия имеет вполне приятные и вид и анимации, M32 тоже неплох, а вот огнестрел неприятный.
Где можно посмотреть, какие буквенные паттерны соответствуют предопределенным лайтстилям? (Fluorescent flicker и прочее).
__________________
I'm on github
I'm on opendesktop.org
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'
__________________
I'm on github
I'm on opendesktop.org
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 | } |
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Приветствую, есть вопрос: что делает TabulateAmmo? Вроде как он связан с предиктингом хотя я могу ошибаться. Хотелось бы узнать поподробнее.
Yo Den Спасибо большое! Я вообще помнил эту темку, конкретно правда её не искал, но я помнил про гейт и копался с ним, но мне удалось только анимации сломать, не более.
John Tremor ну там описание же у неё есть
шото никак не могу понять, где поменять время исчезновения SpawnRandomGibs (гибсы)?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
Мой сайт
Xash3D Modding Discord
__________________
I'm on github
I'm on opendesktop.org
vidInit вызывается при спавне карты.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Можно ли различить ссылается modelindex на модель или на спрайт? В серверном коде. В клиентском я так понимаю, это определяется через IEngineStudio и структуру model_s.
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
FreeSlave берёшь любой эдикт, сохраняешь его старый модельиндекс в темп, суёшь свой, проверяешь, возвращаешь обратно. Можешь мировую энтить юзать для етова дела.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Заметил что спрайт управления вагонеткой при сэйв/ресторе пропадает, и появляется опять если менять её скорость. Можно ли как-нибудь это победить?
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'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den да это жы я в магазе, когда прорываюсь к кассе через толпу алкашей, пытаясь донести в целости баклажки с пивом
__________________
-Brain is dead-
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
А с чем вообще связано застревание игрока на пол секунды при старте? Есть ли способы это пофиксить в хл?
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Это унлаг так инициализируется. Можно попробовать установить 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'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Можно ли задавать позицию игрока не относительно (через указание его YAW и скорости в функции CreateMove) а сразу ему задавать новую абсолютную позицию (и угол) но при этом не потерять его коллизию с миром и с энтитиями?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
У меня проблема с двумя "path_corners" одновременно.
Я хочу, чтобы искусственный интеллект немного подождал, прежде чем перейти ко второму «path_corner».
"monster" --- (go) ---> "path_corner" --- (подождите 10 секунд) ---> "path_corner"
Вкладка «Ожидание», очевидно, не работает для NPC.
Как это сделать тогда?
__________________
настоящий мужчина не нуждается в подписи.
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
На сервере я сделал регн здоровья, который регулируется командами. Скажем sv_regen 0 или 1 - вкл/выкл реген здоровья. Проблема: оно не сохраняется в слоте.
Я меняю значение, находясь на карте, сохраняю игру, выхожу из игры. Запускаю игру, загружаю, значение не сохранилось. В теории это плохо, потому что если я буду управлять на карте значением через trigger_command, то после сохранения все сбросится. Подскажите, может какой флаг где-то прописать надо или что-то на клиенте сделать?
Aynekko при регистрации квара поставь ему флаг FCVAR_ARCHIVE. А ещё лучше, заведи BOOL m_bRegen или int m_iRegen прямо в классе игрока. Меняй эту переменную специальной энтитей и сохраняй в сейвдату игрока. Так будет грамотнее. Потому что квар работает на всех картах, если читается из конфига, независимо от того, применял ты trigger_command в текущей игровой сессии или нет.
Добавлено 28-05-2020 в 09:05:
Какой у тебя реген, кстати? До 100% или другого определённого значения? Я сделал у себя "округление" здоровья. То есть, если последняя цифра процентов не равна 0, то здоровье растёт в большую сторону. Например с 21 до 30 или с 45 до 50 и т.д.
Мучаю фитцквейк, замерил реальное перемещение игрока между превстейтом и курстейтом и вижу что игрок который движется по окружности радиуса 100 оказывается процентов на 20 быстрее игрока который бежит по окружности радиуса 500. Я-то всегда закладывал в расчёты константную скорость типа 400, 320 или 200 умноженное на фреймтайм, а оно на самом деле вон как.
Там трение большую роль играет и игрока по факту заносит?
Crystallize ты умножаешь скорость на время кадра?
https://habr.com/ru/post/442528/
ncuxonaT да, фреймтайм, я же говорю.
Crystallize Crystallize не стоит так делать. Смотри раздел "Обновления с переменным шагом времени"
Помогите пожалуйста. Как в player.cpp отключить игроку возможность нажатия на кнопку при определенном условии?
В файле с мультиплеером есть такое:
if ( pPlayer->m_afButtonPressed & ( IN_DUCK | IN_ATTACK | IN_ATTACK2 | IN_USE | IN_JUMP ) ) |
pPlayer->m_afButtonPressed = 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 я думал что в движках кваки и хл это уже вписано, разве не так?
Кстати в хл же вроде кто-то там тикает на 20фпс, но при этом используется фреймтайм. Интересно, что есть что.
Я прочитал тот абзац, но моего понимания не хватает.
Crystallize не могу ничего сказать про движки кваки и хл, на форуме есть компетентные товарищи, может, они дадут комментарии. Но использовать переменный фреймтайм при расчете движения и многих других вещей - плохая идея.
"Потому что физику не обманешь — расстояние это интеграл от изменения скорости по времени, а не просто произведение моментальной скорости на время. По-сути, он считал раньше интеграл дискретным суммированием и делать это можно лишь с минимальным возможным шагом времени, но попытка увеличивать этот шаг сразу же дает ошибку. В правильном варианте надо вывести функцию изменения скорости (а вывести ее с таким трением будем не просто) и затем интегрировать."
ncuxonaT т.е. всё сводится к какому-то голому теоретизированию и обвинениям в неидеальности? Что мне, кваку на константный фреймтайм переводить? Ну вот а фреймтайм станет константным если я просто включу всинк или укажу fps_max?
ncuxonaT ну тому может быть много причин, какова вероятность того что мы везунчики и наша проблема решается простой фиксацией фпс?
Crystallize мне надоело доказывать. Не хочешь разбираться в теории, хочешь умножать на переменный дельтатайм - пожалуйста.
Интегрирование то дело десятое. Оно больше влияет на воспроизводимость симуляции, чем на её качество. Просто потому что интегратор использует данные от коллижен-детктора, а вот от того как устроен коллижен детектор и зависит вся устойчивость физики. Если он завязан на временные переменные - да, всё посыплется к чертям, если не завязан - дельта может плавать в произвольных пределах. Подсказка - в D3 он не завязан. Но это не мешает физике быть деревянной.
Добавлено 01-06-2020 в 21:45:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Aynekko ты хочешь запретить прыжок? В player.cpp у тебя этого не выйдет. Только в pm_shared.c. Ну или playermove.cpp в XashXT.
Добавлено 02-06-2020 в 11:16:
Ещё раз повторю. Уровень стамины надо хранить в pev->fuser1 игрока, чтобы к ней был доступ из pm_shared.c. Там есть функция PM_Jump. В самом её начале можешь добавить маленькое условие
if (pmove->fuser1 <= 15) |
return; |
Ku2zoff, спасибо. Я помню. Но пока не разобрался, как это сделать, для меня "хранить в pev->fuser1" мало о чем не говорит… Думал, может проще есть способ, как в мультике.
Я вот тоже думаю, может оставить ее, да и все. Просто если часто прыгаешь, то спринтить не получится.
В начале функции PlayerJump поставить какое-то условие.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Как убрать ограничение на уровень опускания/поднятий рук? Даже при стандартном cl_pitchdown 89 модель явно не опускает руки до этой отметки (и тут ещё у модели стоит blend XR -90 90, при стандартном значении вместо опускания рук после определённого угла наклоняется по оси ВСЯ модель). Перелопатил StudioModelRenderer.cpp но что-то ничего дельного не нашёл
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Надо все анимации переделывать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ах, так вот в чём дело, спасибо) надо будет попробовать
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
а это не то что питч делится на три?
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'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
только я вообще не представляю, зачем они сделали этот наклон самой модели
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
ну тада 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'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
ну шо могу сказать, не так уж и муторно. Через милку, я так понимаю, это вообще невозможно, но animiks выручает, просто волшебная прога
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Пытаюсь добавить новый мощный тип патронов
case BULLET_PLAYER_050: |
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((iDamage = 30) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
// Gargantua is immune to any damage but this |
#define GARG_DAMAGE (DMG_ENERGYBEAM|DMG_CRUSH|DMG_MORTAR|DMG_BLAST|DMG_BULLETU) |
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_ENERYGEAM | ((iDamage >= 30) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_ENERYGEAM | ((iDamage >= 30) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((pev->health < 20) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
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 | } |
if (gpGlobals->time < m_flPainTime) |
return; |
m_flPainTime = gpGlobals->time + 1.0; |
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((pEntity->pev->health < 20) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
if (gpGlobals->time < m_flPainTime) |
return; |
m_flPainTime = gpGlobals->time + 1.0; |
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((pEntity->pev->health < 20) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
//Броня не защищает от газа и яда |
if (pev->armorvalue && !(bitsDamageType & (DMG_FALL | DMG_DROWN | DMG_POISON | DMG_NERVEGAS | DMG_PARALYZE | DMG_CLUB | DMG_SLASH)) ) |
хм, а возможно ли в коде гс сделать, чтобы ambient_generic звучал, как бы не располагаясь в 3д-пространстве (с постоянной громкостью каналов). Как, допустим, при воспроизведении его через play в консоли, не заходя в игру. Хочу сделать в кооп-моде динамический саундтрек, с постепенным наложением и убиранием инструментов за счёт касания триггеров
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Ну вот только если всем команду play рассылать по сети, только так.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den прицепи фмод, инициализируй его на несколько каналов, и крути каждый инструмент в отдельном канале. DSP эффектов не будет + формат можно не только лишь wav.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Понял. Он спавнится в точке нахождения игрока, но не следует за ним.
Тогда ой.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Есть ли возможность сделать func_door_rotating моделью?
Проблема вот в чем. Парентом-то я модель двери прикрепляю к door_rotating (которая сама по себе состоит из null-браша (для коллизии) и ориджина. Но дело в том, что модель крепится по имени двери. А если задать двери имя, то по касанию она не будет открываться. Только по триггеру.
Я честно пытался накодить, но ничего не получилось. Закинул в door_rotating функции, скопипащенные из других энтитей - типа precache (void), а так же прекэш и спаун модели, если в энтити прописан параметр model и путь. Пробовал брать из монстров и из env_model. В обоих случаях все компилируется отлично, но в игре модель не появляется ни в какую. Полагаю, это потому, что это брашевая энтитя, а я брал из точечных…
Еще была мысля, что я нигде не задаю координаты спауна модели, думал может она будет по ориджину появляться хотя бы. Наверное я вообще бред сделал))
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Собственно, нубский вопрос. Как уменьшить скорость лазания по лестнице?
Просмотрел весь PM_LadderMove, там не нашел. При этом, судя по всему, используется другой вид передвижения, т.к. есть строчка
"pmove->movetype = MOVETYPE_FLY;"
Полез в FLY, там вообще ничего не понятно для меня. Где-то можно значения подшаманить?
Aynekko
__________________
I'm on github
I'm on opendesktop.org
Каждый раз когда я хочу сказать что-то умное, вспоминаю, что сорцы ксаш-мода лежат где-то очень далеко. Но вообще вроде бы 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'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff, спасибо, еще раз перепроверил. Оказывается строчка #define MAX_CLIMB_SPEED была прописана 2 раза - в playermove.cpp и player.cpp. Я менял только в move. Поставил одинаковое значение в обоих файлах и все заработало.
хм, а как сделать общую модель для p_ и w_ оружия? Сейчас пробовал спавнить вместо ворлд плееровскую модель оружия в void CMP5::Spawn( ) и поворачивать через pev->angles.ось -= и она почему-то только по y-оси крутится, на другие не реагирует (обнуляется где-то/из-за скелета?)
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den надежнее будет как в ХДМ и последнем HLWE сделано, там тоже p_ модель и для рук и для предмета на земле используеться, там добавлена еще одна анимация для p_ модели где оружие лежит на земле.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
В ксаш-моде в незапамятные времена сделал эту штуку, потом Хвидер к себе утащил в 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'
Хочу отредактировать эффект при падении, когда экран скашивается вправо. У меня ксаш-мод. Что бы ни делал, изменений в игре ноль. На клиенте в playermove.cpp есть такой код:
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 | } |
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 | } |
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Yo Den, спасибо большое, закомментировал "pev->punchangle.x = 0;" и поставил по оси Х вместо Z (pmove->punchangle[ 0 ]), сделал что хотел.
__________________
Мой сайт
Xash3D Modding Discord
Добавил у мп5 небольшую тряску при выстреле с подстволки.
UTIL_ScreenShake( GetAbsOrigin(), 5.0, 150.0, 0.5, 0, true ); |
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'
Спасибо большое, заработало, я пытался использовать m_pPlayer->pev, а про это что-то даже не подумал
Каким образом подружить gl fog со скаем, как это сделали в cs 1.6 и вроде dod? По всем туторам, что я видел https://twhl.info/wiki/history/Tutorial%3A_Coding_Fog небо пропадает, как под водой
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
оно не пропадает, оно затуманивается
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
качнул отсюда сборник туторов для кингпина http://download.kingpin.info/index..../maps/tutorial/
забавно, всегда думал, что path_corner и лайт-стили (а-ля LIGHT_STYLE(1, "mmnmmommommnonmmonqnmmo") это valve придумали, а там абсолютно всё тоже самое, видимо это наследие кваки 2
Добавлено 28-07-2020 в 23:46:
да и func_door_rotating тоже
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
JPEG простой поезд есть уже в первокваке, я думаю по патч-корнерам он там и ездит.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
у меня оружие не перезаряжаться как исправить ?
__________________
илья
По Сорсу специалисты еще остались?
В первой халфе как известно эти магические числа 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'
хочу сделать спрайтового монстра, допустим пока из двух анимаций - стоит на месте и идёт. Т.е. два спрайта сменяющих друг-друга в зависимости от таска.
Пример с одним спрайтом: https://youtu.be/alD70JTA91k
В спавн написал
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( ); |
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
У спрайта есть групповые кадры, т.е. 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'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Возможно, подниму древний вопрос, но копаюсь в исходниках совсем недавно и хочу спросить про замедление игрока, когда тот активирует эвент "+use" или, проще говоря, нажимает на "Использовать" (дефолт E). Пробовал убирать флаг и пропуск функции PlayerUse, но ничего не дало – видимо, не там копаю.
Суть вопроса: куда копать, чтобы убрать это самое замедление?
XashXT 0.82 rev 2 + Half-Life 1
__________________
El. Psy. Kongroo.
Что-то такое в playermove.cpp
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, моя благодарность)
Проверил, все работает.
__________________
El. Psy. Kongroo.
Хочу сделать кастомного гранта с размером 1.15. Все получилось, но есть вопрос. В спауне я задал pev->scale 1.15, так же поменял hull'ы в 1.15 раз. Грант действительно стал больше, как и надо, но хитбокс остался таким же. На уровне носа попадаю, на уровне глаз уже пули сквозь летят. Мне подсказали, что проще отскейлить саму модель - это в общем-то помогло, но можно ли это сделать кодом?
Со скейлом физики там помоему остались проблемы. Лучше саму модельку увеличить - надёжнее.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Всем доброго дня. Ткните пожалуйста носом, как быстро заменить текстуру на свою собственную. Достаточно ли просто подменить gl_texturenum, или же как в Паранойе порядок действий такой:
1. Пробегаемся по сурфейсам (msurface_t).
2. Находим текстуру сурфейса (texture_t).
3. Подменяем её на загруженную извне с помощью Bind2DTexture.
Пробегаемся по 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'
Я обошёлся самым простым вариантом:
surf[i].texinfo->texture->gl_texturenum = texture; |
glBindTexture(GL_TEXTURE_2D, texture); |
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, ScreenWidth, ScreenHeight, 0); |
а texture чему равен?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша texture равен тому, что выдаёт glCopyTexImage2D. Виду из глаз игрока. Я, можно сказать, повторил эксперимент БУзера, он нечто подобное постил на хлру много лет назад:
glBindTexture(GL_TEXTURE_2D, texture); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вопрос такой, задаю звук текстурам в materials.txt и при добавлении очередной текстуры у предыдущей звук снова сменился на generic, хотя она прописана. Если удалить новую текстуру из списка, то к предыдущей звук возвращается.
Написано, что лимит в файле 512, хотя строчек в файле около 300 - я уже не говорю про то, что между ними пробелы даже есть.
Опытным путем заметил, что можно заставить обе эти текстуры звучать, если удалить еще какие-то строчки. То есть явно идет упор в лимит. Почему, и как его обойти?
Собственно, я полез ковыряться, но ничего не получилось (не сломалось, но и не заработало). Куда копать?
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 | { |
То буффер для чтения, его трогать не надо.
Ищи чему равен CTEXTURESMAX и увеличивай его.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Не помогло. Поставил его и 1024, и 2048.
Заметил вот что: я закомментил три строчки в материалс, начинающиеся на Y (другой материал) - ничего не изменилось. Потом я их вернул на место, и закомментил ОДНУ строчку D (именно там проблема) - текстура зазвучала. Такое ощущение, что достигнут лимит DIRT текстур.
Но их там очень мало, других текстур в 2-3 раза больше
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Разобрался. Я не инициализировал texture. Что в ксаше, что в паранойе, исходное значение texture_id равно (1<<25). А у меня было 0. Теперь в консоль выдаётся номер в районе 33 миллионов. Проверил на мониторах старого ксаша - так и должно быть. Нарисовал новую текстуру через glBegin, т.к. подмена gl_texturenum теперь не работает. Ну такое себе, фпс упал примерно в три раза со 120 до 45 при восьми мониторах в кадре.
Мониторы оставлю такими, какие есть. Единственная проблема с ними в том, что на новом рендерере (который юзает VBO кажется), glCopyTexImage2D ведёт себя неадекватно: захватывает только уголок экрана. Какая-то трабла с координатами.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Механизм подхвата детальных текстур напрочь кривой и косой.
К примеру у него лимит имени - 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'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну имя ты какое задавал для 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'
SAFE_GET_PROC(glLockArraysEXT, PFNGLLOCKARRAYSEXTPROC, "glLockArraysEXT"); |
Такой вопрос:
В Ксаше монстры после смерти ещё некоторое время блокируют путь игроку. Кодер сделал это, но в итоге трупаки перестали разлетаться на ошметки при взрыве. Как от этого избавиться и сделать так, чтобы они не блокировали путь игроку и при этом продолжали разлетаться на ошметки?
__________________
Killing Floor: Horzine Outbreak
1 | int PM_Ignore(physent_t *pe) |
2 | { |
3 | if (pe->iuser3 == -1) |
4 | return 1; |
5 |
6 | return 0; |
7 | } |
case SCHED_DIE: |
{ |
pev->iuser3 = -1; |
return &slDie[ 0 ]; |
} |
Спасибо большое! Попробуем!
__________________
Killing Floor: Horzine Outbreak
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
По мне так проблема с монстрами даже не в том, что они преграждают путь для игрока во время умирания (игрок может и подождать), а в том, что впоследствии их трупы мешают движению всяких брашевых энтить типа дверей и пушаблей. Соответственно для передвижения пушабли приходится эти самые трупы разбивать, а уж сколько раз трупы хедкрабов застревали в дверях - не пересчитать. С одной стороны, в этом есть смысл, но чаще всего лишь мешает. Ku2zoff, может напишешь тутор на этот счёт? Разумеется, с сохранением возможности разбивать/взрывать трупы.
__________________
I'm on github
I'm on opendesktop.org
Было бы неплохо собрать все актуальные для Ксашей проблемы и сделать общее подробное описание с их решением. Но никто ведь не займется этим. Да и эти фиксы вставить бы в стандартный ксаш, чтобы другие не маялись тем же, что и их предшественники.
При этом, те, туторы, которые мы привыкли видеть, на самом деле не совсем туторы, а скорее инструкции, потому что чел, который это делает, может совсем ничего не понимать и только копипастить вслепую. А туториал должен обучать. Какие проблемы? Как их можно решить? Что и для чего делается? И прочие вопросы, которые появляются в головах новичков.
__________________
Killing Floor: Horzine Outbreak
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Crystallize
К сожалению, такое - редкость. Видел на ютубе по монтированию видео в Вегасе. Там чел толково объяснял что да как и почему.
__________________
Killing Floor: Horzine Outbreak
В общем, закончил мониторы. Теперь без зависимости от cvaLib.lib. Обнаружил неприятный бажочек: они видны сквозь стены. Отсечение по фрустуму работает, если отвернуться, фпс вырастает. Как можно это поправить?
включить запись в буффер глубины
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша нет, это не то. Я не совсем правильно описал проблему. Они на самом деле не видны, но считаются видимыми, когда попали во фрустум, даже если между ними и игроком стенка, и для них рисуются дополнительные проходы, что просаживает фпс. Был бы вменяемый способ проверки видимости (или попадания в PVS) на клиенте, я бы уже исправил.
Добавлено 04-09-2020 в 03:15:
Не нашёл ничего лучше, как просто тупо трейсить все вертексы монитора по очереди. Для экономии сделал так, чтобы при обнаружении хотя бы одного видимого вертекса цикл прерывался.
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 | } |
Ku2zoff
А если через дыру в стене смотришь на монитор?
__________________
http://www.moddb.com/mods/monorail-quest
thambs значит надо добавить пятый трейс из центра. Хотя проще не допускать ситуации с дырами в стенах. Можно конечно отключить все проверки. У меня на дохлой видеокарте GT220 при восьми активных мониторах с вьпортами 512х512 около 140 фпс. Представим, что мониторов во фрустуме будет максимум 4, и сцены в них будут содержать больше полигонов. На любой более-менее современной видеокарте в FullHD будет уж точно больше 100 фпс.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff
Так ведь смотреть можно и не на центр, да и дырка в стене может быть, например щелью, или ещё каким нетривиальным препятствием. Это всё очень ненадёжно.
__________________
http://www.moddb.com/mods/monorail-quest
А вот для того и делают порталы. Портал это как раз случай видимости одного объекта внутри другого.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Очень странный вопрос. 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'
Mod_DecompressPVS( leaf->compressed_vis, world.visbytes ); |
Ku2zoff а чуть-чуть ниже промотать в том же файле? Нет надо сразу на форум.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Есть 2 лайта с одинаковыми именами. На одном из них флажок Initially dark. По итогу оба выключены и по имени оба включаются. На деле должно быть, как вы уже поняли, один изначально включенный и по вызову они меняются местами.
При этом, если задать им разные имена, то все нормально. Но приходится вносить еще одно имя в менеджер…
Не то чтобы это сильно напрягает, но из-за чего это может быть? В самом лайте покопался, там про targetname есть одна строчка в спауне, стоит комментарий "inert light".
Еще один знакомый маппер вспомнил, что у него была похожая проблема с несколько door_rotating, когда у всех было одно имя, но у некоторых проставлена галка start open.
Aynekko
У них же один лайтстайль тогда получается. По разным именам -- разные, управляй ими через реле или мультиманагер, например.
__________________
http://www.moddb.com/mods/monorail-quest
Интересно, а зачем нужно было делать зависимость от имени?
Я собственно так и делаю, как же еще
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Всем привет!
1) Можно ли сделать хорошо видимые трассеры? Как вообще разнообразить их в более зрелищный вид, насколько первая халфа может? Например хотелось бы у дробовика подчеркнуть мощь выстрела все этой дроби
2) Можно ли сделать более-менее реалистичный боб оружия, а не взад-вперед, или лево-право?
1. Трейсеры и так видимые. Просто у дробовика они не используются. В какой-то старой версии ксаша, несовместимой с халфой был код трейсеров (и вроде бы ещё лучей) в клиентке. Так вот, они визуально мне больше нравились, чем халфовские. А вообще, есть особая темпэнтитя pEfxAPI->R_UserTracerParticle, которой можно задать толщину, цвет, скорость. Вот и получатся кастомные трейсеры.
2. Туторов на эту тему вагон и маленькая тележка. Даже я кое-что по молодости выкладывал здесь на форуме. ИМХО, наилучший результат даёт смешение двух БОБов: один для камеры, второй для оружия. Если сейчас выкопаю древнюю версию своего мода, запишу видео и выложу здесь.
Добавлено 25-09-2020 в 16:52:
Нашёл в загашниках папочку со старым модом, записал видео. Как я выше указал, здесь два боба с разным ритмом.
А что это за ассаульт? Мне такой не попадался.
__________________
Tiger! Tiger! burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Flash cs_assault_russka. Этих клонов манзионов и ассаултов хоть жопой ешь. Попадаются даже весьма интересные, не просто с новыми деталями и текстурами, но и новыми путями. А ещё рекордсмен по клонам и римейкам - дедаст.
Плиз хелп. Я успешно перенес shock trooper'а (это который wub-wub говорит) из opfor к себе в мод (напоминаю, что у меня ксаш-мод), работает вроде бы все, но есть проблема с сейв-рестором. Когда монстр стреляет, именно в тот момент когда летит лазер и сохраниться в этот момент, в консоли вылезает:
Saving game to save/quick.sav... |
Error: Invalid function pointer in class CShock! |
Error: R_BeamComputePoint: invalid entity 4095 |
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) |
1 | // virtual int Save(CSave &save); |
2 | // virtual int Restore(CRestore &restore); |
3 | // static TYPEDESCRIPTION m_SaveData[]; |
4 | DECLARE_DATADESC(); |
Aynekko ты еще забыл в самом классе прописать наследование, ну типа
DECLARE_CLASS( CBasePlatTrain, CBaseToggle );
только для труппера.
Добавлено 26-09-2020 в 13:27:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Там у него идет строчка
class CStrooper : public CHGrunt, а ссылается это дело на hgrunt.h, который я взял из опфора. Из-за этого еще пришлось и гранта переделать под этот h.
Или этот CBaseToggle в любом случае надо прописать?
Это просто для примера, в каждом классе эта строчка своя.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Привет!
Еще вопросы:
1) Замоделил я новых голов для хгрунта, сделал дефайны в коде, убрал зависимость оружия от головы. В хаммере выставляю виды голов, вроде работают, но некоторые начинают жить своей жизнью: номер 1 путается с номером 11, вместо некоторых конкретных видов упорно ставится 1 (берет). Есть ли там какие-то лимиты на это дело?
2) У того же хгранта в анимациях есть стрейфы влево/вправо, комбатроллы всякие и прочее. Он изначально умел уворачиваться от атак? Даже ивенты остались
$sequence "strafeleft" "strafeleft" LX LY fps 30 loop ACT_STRAFE_LEFT 1 |
// For mods |
int iuser1; |
int iuser2; |
int iuser3; |
//int iuser4; |
Vadiman, возможно hgrunt становится squad-leader'ом, а там для хгрунтов прописан костыль, выставляющий вариант с беретом. В общем гляди в CSquadMonster::StartMonster
__________________
I'm on github
I'm on opendesktop.org
Vadiman
__________________
http://www.moddb.com/mods/monorail-quest
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Проблем с PlayerUse.
Накодил юзабельную не-solid энтитю: https://github.com/FreeSlave/hlsdk-...149c7abe8b87c76
"Непроходимость" реализуется отдельными клип-брашами на карте. В аттаче карта и исходник с 4-мя энтитями вокруг одного столба. Непосрдественно проблема: если подходить к энтитям вплотную насколько возможно и нажимать use, то вместо южного и западного экземпляра юзаются соседние. С восточным и северным данная проблема не наблюдается. В чём загвоздка?
__________________
I'm on github
I'm on opendesktop.org
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; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff, Дядя Миша там проблема не в порядке энтить. Если рядом других энтить нет, то и не юзается та, что прямо перед игроком, когда тот стоит вплотную. Это просто какой-то краевой случай, который приводит к тому, что PlayerUse считает, что объект не перед игроком. Я сделал выставление размера в SetSize в зависимости от Yaw-угла и оно заработало как надо.
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
Мне интересно можно ли в халве вместо аттачементов использовать положение кости? К примеру для острела конечностей спавнить на месте кости гибс и эффект крови.
Chyvachok можно, но это неудобно. Как ты найдешь нужную кость? По имени? По номеру?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Народ, подскажите. Как изменить размер трейсеров пуль, уж слишком они огромные. Все, что смог нарыть, это вот:
#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, большое спасибо.
__________________
Мой мод на Xash
Как можно гарантированно определить на клиенте, что энтитя сдохла? curstate.health всегда 0, хотя в дельту строчка добавлена и в AddToFullPack строчка передачи подправлена. curstate.solid не катит - не меняется, даже когда на энтитю применено UTIL_Remove. GetEntityByIndex всё равно продолжает возвращать несуществующую энтитю, видимо, клиентский массив cl_entities не обновляется при удалении энтити с карты.
Или это только с брашами такая засада?
Добавлено 12-10-2020 в 22:03:
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 |
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша понятно, значит никак. Только каким-нибудь хаком.
Можно от локального игрока взять 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'
Поясню, что хочу сделать. Это до сих пор те самые спрайтовые декали из инвазиона. Прекрасно ходят через чейнджлевел, сохраняются, загружаются, двигаются вместе с энтитями. Есть охранный механизм: из ориджина декали делается трейс внутрь браша на полъюнита. Если там пустота - декаль удаляется. То есть разбили брейкаблю - её декали исчезли. Проблема в том, что когда любая энтитя выпадает из PVS, трейс возвращает пустоту, и декали исчезают. Я думаю, это происходит потому, что энтитя пропадает из массива физэнтить. Убрать охранный механизм - нехорошее решение, декали будут висеть в воздухе после исчезновения энтити. Пока что вижу одно решение - не ставить декали на брейкабли и ломаемые пушабли. Остальные энтити вроде дверей, ротатингов, кнопок и прочего не исчезают с карты. Правда, не тестировал ещё с глобальными энтитями, что ходят с карты на карту, непонятно что будет там. Хотелось бы найти способ заставить это дело работать нормально.
Добавлено 13-10-2020 в 00:17:
Дядя Миша а если есть доступ к model_t конкретного браша? Там какая-нибудь информация изменяется, если энтитя исчезает и больше не рендерится?
Добавлено 13-10-2020 в 00:23:
Подумал и придумал. Если совсем ничего не получится, придётся просто запретить определённым энтитям отсечение по PVS. Костыль, но ничего не поделаешь. Да и сколько может быть брейкаблей и пушаблей на карте? Даже если штук 50, это не должно сильно просадить фпс.
Да какие трассы, какие полюнита, зачем такие сложности
Вот тебе очень простое соображение - если не видно бмодели, то значит не видно и декали. Нет ни одной ситуации, когда бы декали было видно, а бмодель - нет. Значит, мы просто напросто проверяем ent->visframe на валидность перед отрисовкой декали. И если энтить не видна - то и декаль не рисуем. И таким образом одним простым условием разрешаем вообще все проблемы. А уж по какой причине она исчезла - вышла из PVS или удалена с карты, нам неважно. Ну может быть еще имеет смысл добавить в декаль указатель на модель, на случай если энтить будет перезаюзана - брекабля-то уже не вернётся на карту назад, значит мы можем на это опираться.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну можно же в движке посмотреть как декали устроены, вместо того чтобы у французов копипастить.
Добавлено 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'
Глупый вопрос. Есть два массива декалей в классе CDecalManager:
spritedecal_s m_pDecals[MAX_DECALS]; |
spritedecal_s m_pTempDecals[MAX_DECALS]; |
if (!g_pDecalManager) |
g_pDecalManager = new CDecalManager(); |
if (g_pDecalManager) |
{ |
delete g_pDecalManager; |
g_pDecalManager = NULL; |
} |
Статические массивы (с заранее заданным размером) не нужно удалять отдельно. Их элементы уже в составе памяти, выделенной под объект. Удаляешь объект - высвобождается память выделенная под его составляющие.
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Даже не вопрос, а скорее просто наблюдение. Ну, если вопрос, то тогда - почему не работает?
Проблему-то я решил, но суть в чем: у монстров есть функция TakeDamage. В нее я по образцу из зомби добавил коэффициенты в зависимости от типа урона и даже от установленного skill. Ну например:
if ( (g_iSkillLevel == SKILL_MEDIUM) && (bitsDamageType == DMG_BLAST) ) // half-dmg from explosions in medium mode |
{ |
flDamage *= 0.5; |
} |
flTake = flDamage; |
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 | } |
__________________
Мой мод на Xash
В конце функции CTalkMonster::TakeDamage все равно идет переадресация на CBaseMonster::TakeDamage. Там просто проверяется наличие дамага, чтобы например ученый комментировал. Само повреждение там не выполняется, так что это без разницы. У барни вроде окей все, я там почти все подчистил под себя.
Так или иначе, вот здесь у зомби коэффициент не работает - я его вообще не трогал.
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 | } |
__________________
Мой мод на Xash
По поводу эффектов, интересно есть ли вообще описание какое либо как их делать? В оригинальной халве они примитивные, и самое противное - зашиты в движок, их переделать поэтому не получится, только кодить с нуля, хотя взять тот же 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:
По мелочи еще, в сети есть некие попытки воссоздать код ОпФора, с боссами и прочим, интересно какая из них лучше? Где те же боссы нормально работают с веревками.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff Спасибо, гляну, мож хоть сейчас разберусь с ними, единственное что у меня выходило это с горем пополам переделать wallpuff из паранои под эффект попадания плазмы, по типу синих кольц при попадании у плазмогана из Инвазиона, которые там были через декали сделаны, правда оно бывало глючило и спрайт на всю карту рисовался.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
JPEG ну как чем? Поддержка линукса и макоси, использование SDL, новые интерфейсы стим-версии, исправлены некоторые старые баги, посажены новые. Дллки собранные из 2.4 не работают в вон-версии и под оригинальным ксашем как раз именно поэтому. Ну то есть интерфейсы в ксаше вроде бы есть, а вот SDL нету. Собсно, там надо только над клиенткой поколдовать в плане инпута, чтобы выкинуть SDL, и оно почти точно заведётся на вон-версии. Ещё кое-какие мелочи есть, но я этим не интересовался. Если охота изучить, есть сорцы XDM 3.0.3.8, там Мастер всё ifdef'ами обернул под каждую версию движка.
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., их где-то можно скачать? А то на моддб только последняя версия, а на сайт ХДМ-а браузер не хочет пускать мол опасный сайт.
Chyvachok я давно (в 2008-2009 годах) качал эти сорцы с x.netheaven.ru, когда сайт ещё работал. Потом благополучно потерял. Мастер мне их скинул пару лет назад, когда я попросил. Думаю, никакой военной тайны в них нет, т.к. версия старая, а на моддб доступна новая 3.0.3.8. Выкладываю аттачем, пусть будет доступна народу.
Раз уж пошла такая пьянка про старые потерянные сорцы, нет ли у кого случайно старого ксаша 0.39. Именно самого архива с модом, сорцы-то у меня есть. А вот ресурсов нет. Крайне нужно протестировать поведение оригинала в сравнении с адаптированным в мой мод кодом. В идеале бы конечно хотелось ещё сорцы ксаша 0.45, где кроме зеркал и мониторов ещё и порталы есть, но это уж точно навряд ли у кого осталось, тем более, что официального релиза не было
У автора-то осталось, наверное.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну так было бы здорово, если бы автор выложил. Всё равно старое и неактуальное.
Дык профита никакого
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша а какой профит ты получил от разработки всех ксашей, кроме опыта, повышения ЧСВ, и просто удовольствия в процессе работы? Я конечно понимаю, что за все свои наработки хочется что-то получить. Если не донаты, то хотя бы благодарность или авторитет в сообществе. Собственно говоря, ты вполне сможешь монетизировать XashNT, если с лицензиями всё будет в порядке. Что касается старых ксашмодов, учитывая, что они - проба пера, и так или иначе есть или были в открытом доступе, не вижу смысла не выложить их. Ты ведь даже более ценную вещь - сорцы паранойи 2 и Xash3D отдал народу на растерзание, что уж беспокоиться о старье, которое нужно паре-тройке человек на почитать.
Я никогда не публикую данные о профитах, которые я получил. Поскольку одни начнут смеяться, а другие завидовать и это расколет общество.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Нубский вопрос, как получить в ev_hldm аттачемент оружия в виде вектора? К примеру у R_BeamEntPoint аттачемент оружия указывается в виде idx | 0x1000, но у меня эффект принимает позицию в виде только вектора, я не нашел как можно idx | 0x1000 конвертировать в вектор.
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'
Еще нубский вопрос, как получить entindex самого оружия в эвенте, а не игрока? args->entindex как я понял это игрок передавший клиент, а то теперь луч сравнится из паха игрока...
Добавлено 26-10-2020 в 19:20:
ну и чисто вопрос для общего развития, для чего в некоторых местах добавлено "(float*)&"?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша все разобрался, там где координата начала я указал gun->attachment[0], потом в начале добавил const struct cl_entity_s *gun = gEngfuncs.GetEntityByIndex(args->entindex);, оно начало спавнить луч не из ствола оружия, а из паха игрока, потом поменял на const struct cl_entity_s *gun = gEngfuncs.GetViewModel(); и заработало.
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 { }*/ }
1 | M ME_METAL |
2 | M ME_SERVSIDE |
3 | M ME_GRATE // <--- вот эта отвалилась, играет дефолт |
4 | M ME_GRATEBL |
5 | M ME_GRATEWH |
__________________
Мой мод на Xash
Очень ублюдский михонизм, да.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я разобрался кажется и текстуры заработали.
У меня в materials всего около 370 строчек, включая все закомментированные и т.д. и т.п. А CTEXTURESMAX проставил 512, при этом текстуры отваливаются.
Я взял и заспамил файл строчками в конце
1 | D NONE |
2 | D NONE |
3 | D NONE |
4 | D NONE |
5 | D NONE |
6 | ...... |
__________________
Мой мод на Xash
__________________
Мой мод на Xash
Нет, все чисто.
__________________
Мой мод на Xash
Я когда-то разбирался где там ошибка, но уже запамятовал.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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 | } |
__________________
Мой мод на Xash
gcTextures чему равно?
#define CBTEXTURENAMEMAX 13 // only load first n chars of name |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Там еще strcpy этот. Хотя по идее и не должен влиять.
ну ок, перед strcpy пихни вот такую строчку
1 | buffer[j] = 0; |
2 |
3 | ALERT( at_console, "#%i %s [%d]\n", gcTextures, buffer, j ); |
4 |
5 | strcpy(&(grgszTextureName[gcTextures++][0]), &(buffer[i])); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ncuxonaT, в PM_InitTextureTypes() в начале задается 0. Статик это вообще в самом начале файла прописано.
Дядя Миша да, есть, навскидку внешне вот например - T FIFTIES_FLR02C - 14 символов.
Сейчас попробую, спасибо!
__________________
Мой мод на Xash
Блин, пишет ALERT незадекларирован. Он в playermove вообще нигде не используется. Если util.h добавить, то начинает ругаться на enginecallback.h
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
pmove->Con_Printf( "#%i %s [%d]\n", gcTextures, buffer + i, j ); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Ладно, всё что я хотел увидеть - я увидел. Увеличение 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'
Вот лог. Текстур таких нет. По сути это халфовский файл, в который я просто добавлял свои текстуры по образцу. Я знаю, что пробелов быть не должно, всегда пишу подчеркивание между символами.
JPEG, не было, я потом забил тогда. Сейчас просто добавил очередную текстуру, она не заработала, ну и пошли пляски.
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
С пробелами.
Сейчас через прогу удалил дубликаты строчек. Не помогло.
__________________
Мой мод на Xash
Можно еще вот так попробовать
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'
Ну чего ходить вокруг да около. Вот сам файл материалс. Я не могу там найти ничего странного, может вы найдете. Кроме одной закомменченой строчки //unbreakable crates
__________________
Мой мод на Xash
Меня не интерисует файл materials, мне интересно как оно выглядит в памяти. Выкладывай лог с последним куском кода.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Сверил выведенный лог с последним кодом и файл материалс. Отсутствует последняя текстура.
__________________
Мой мод на Xash
До меня дошло. Мы же сперва смотрим что там записывается, а портится оно уже после. Я еще и думал, что же меня так смущает.
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'
Тонна красных строчек "sprintf throw exception" в консоли.
На всякий случаю показываю, как вставил код:
Блин косяк там. Ща
Добавлено 28-10-2020 в 22:24:
Там была русская с в %c.
Все то же самое. Последней текстуры нет.
__________________
Мой мод на Xash
Ну ладно, раз ты игноришь мои просьбы, разбирайся сам.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну вот лог. Только в чем смысл? Сверил список диффчекером, последней текстуры нет, а так все совпадает...
__________________
Мой мод на Xash
Дай-ка подумать. У бинарного поиска могут быть некоторые фейлы вот как раз в тех случаях, что ты привёл.
Замени PM_FindTextureType вот на это
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 | } |
val = strnicmp( name, grgszTextureName[ pivot ], CBTEXTURENAMEMAX-1 ); |
val = Q_stricmp( name, grgszTextureName[ pivot ] ); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
И впрямь заработало О.о старый код вернул и строчку поменял, тоже работает. Последняя текстура так появилась в консоли только после того, как я добавил пустую строчку в тхт.
Файл чистый, без дубликатов и прочего. Большое спасибо!!!
Добавлено 28-10-2020 в 23:47:
__________________
Мой мод на Xash
Да я понял. В сортировке 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'
В халве есть какое либо ограничение на кол-во бодигрупп у модели? А то добавил солдату боди для отстреленных конечностей, поврежденный и уничтоженный торс, и у него 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 в 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'
Да все нормально, у модели которая работает максимально число 239, хотя я там убрал только 1 бодигруппу и поубирал у боди конечностей blank боди, а у той за 4000 переваливает, строка даже не помещается и переносится из-за чего точно число сложно разобрать, наверное этот setbodygroups не рассчитан на такие числа.
SetBodyGroups рассчитан. Надо delta.lst подкорректировать.
В секции Entity_Encode
DEFINE_DELTA( body, DT_INTEGER, 8, 1.0 ), |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша теперь ясно где править, если еще боди понадобятся, спасибо.
Еще хотел по поводу трассы спросить, я ее вчера так и сяк мандровал, так и не вымандровал в итоге, идея в чем, я все еще тот лазер мучаю, решил попровать рисовать луч на сервере, допустим координата выстрела у меня
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; }
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'
Он на сервере, по поводу 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 }
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Сам код переделанная функция fire из Егона вроде, домучал таки, добавил Vector vecDest = vecSrc + vecDir * 8192; после vecDir = UTIL_VecSkew( vecSrc, vecDir, rightOffset, downOffset, ENT( pev ) ); и оно заработало. Хотя я раньше пхал его и оно не пахало. Осталось еще ревизию проверсти и убрать лишнее.
Добавлено 29-10-2020 в 14:36:
Еще вопрос, сколько вообще у модели аттаче-ментов может быть?
В халфе четыре, в Ксаше сколько угодно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Попробовал сделать подобие расчлененки в стиле Брутал Халвы, пока только зомбе и хгрунт, хотелось бы чтобы кто-то посоветовал по поводу кода, не сильно ли я его перемутил? Плюс сами модельки, куски и боди Гранта из Брутал ХЛ, и боди конечностей оттуда, распиленные пополам НПС, отстреленное место головы у зомби уже мои, плюс есть еще Гомом из ОпФора, боди тоже уже чисто мои, не позаимствованные.
Вот эта вся шняга: https://files.gamebanana.com/bitpit/_gib.rar
Гном: https://files.gamebanana.com/bitpit..._bodygroups.rar
В геймплейных вещах термин "перемутил" некорректен. Там все извращаются как могут.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
По поводу спрайтов менюшки выбора оружия, в них есть ли какое-либо ограничение на размер самой текстуры, к примеру взять 640hud-ы, в оригинальной игре они имеют масштаб 256х256 пикселей, они такого размера должны быть или их можно смело до 512х512 увеличивать? И они должны быть кратные 16-ти или можно любые размеры указывать?
В текстуру 256х256 влезает всего лишь 5 иконок для оружия такого же размера как в халвеб 170х45, в то время как в текстуру 512-512 уже огого сколько всего можно засунуть.
Что мешает взять и проверить?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Chyvachok ограничения на размер нет. Но нет и вменяемого масштабирвания.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Всем привет. У меня для заинтересованных форумчан (которые делают сингловые моды) две новости. Хорошая и плохая, по классике. Начну с плохой: ходяче-атакующие монстры мне ещё не поддались, я пока не разобрался с переключением гейта и активностей. Ситуацию особенно портит m_fSequenceFinished, что отлавливается кодом далеко не всегда. Это я буду починить потом.
Но есть и хорошая. Я порылся в коде AI и навигации монстров, и дал ума барнику. Теперь зомбаки (тестировал код на них) практически не могу его забить, т.к. не могут подойти достаточно близко для удара - засранец фкаске отваливает при сокращении дистанции. В общем, как в Свенкоопе. Позже сегодня заведу новую тему, где всё распишу и покажу видео с примерами. Там и выслушаю ваши предложения, как и каких монстров исправить, или что им добавить, используя стандартный AI.
Я в конфиге задираю число эдиктов до максимума в 8К но уже когда я ставлю на карту больше 4К энтитей, эдикты заканчиваются. Это что, лимит MAX_EDICTS это число эдиктов на сервере ПЛЮС столько же их копий на стороне клиента?
ED_AllocEdict: no free edicts (max is <max_edicts> ) |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff, а саму навигацию улучшал как-то? Я у себя для поиска пути вместо триангуляции (расчёт обхода препятствия по одной промежуточной точке) делал расчёт по двум и трём дополнительным точкам. Проблема в том, что это оказалось довольно затратно. Может, есть другой более оптимальный способ.
А в плане фичей для ИИ монстров, я добавлял восстановление здоровья монстрам, когда те кушают трупы врагов (буллсквиды, агрунты и т.д. Хаундаи тоже стали кушать), возможность ученым лечить своих союзников (как медики в опфоре).
Отступление, как ты описал, тоже было бы неплохо.
__________________
I'm on github
I'm on opendesktop.org
__________________
http://www.moddb.com/mods/monorail-quest
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff
Красиво. Но ему явно не хватает возможности пинка ногой.
__________________
http://www.moddb.com/mods/monorail-quest
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff Отличная новость, из фитч - если барник с пистолетом разрывает дистанцию с меллишными монстрами, то против ренжовых ему бы научиться сейвиться во время перезарядки или когда мало хп - за ближайшим непрозрачным(для трассы?)укрытием. Браш или енв_статик.
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 в БХЛ есть разные анимации для барников, даже для РПГ, делал у себя чтобы они были вооружены разным оружием - с РПГ это получается ультимативный тимкиллер, союзник похуже любого врага
А если враг подойдет то и себя до кучи на воздух отправит.
Кстати по приколу загрузил в фрагмоушене бег от хранта зомбику, анимация не считая неподходящих пропорций, по поворотам более менее нормально встала, я удалил у всех костей кроме Bip01 кадры отвечающие за перемещение костей, оставив кадры поворотов, и оно еще более менее норм вышло, развернул руки вперед, и с бегом зомбики даже как-то расцвели, они совсем по другому ощущаются когда вместо того чтобы лениво тащится они бегут да и еще резво, правда сильной угрозы все равно не представляют, без гейтсеквенций любой монстр каким он быстрым бы не был догнав останавливается, и пока замахнется игрок уже отойдет, и пока можно бежать назад он не может нанести урон, но для других НПС они стали куда опасней, да и выглядят куда угрожающее.
Добавлено 19-11-2020 в 22:10:
Насчет НПС с базуками, в Свен Коопе заметил что солдаты там тоже как игрок юзают лазерный прицел.
Вам, наверно, нужна отдельная тема по редактированию ИИ в халве\ксаше.
А так все это звучит и выглядит классно. Реально монстров надо прокачивать. А это это действительно нынче сильно бросается в глаза. Меня вот заботит такая трабла: надо сделать так, чтобы монстры шли друг за дружкой в плотной толпе, как зомби в лефте или киллинг флуре. А то они ждут, пока один дойдет до точки или сдохнет и только после этого начинают идти. А это печаль. Это хотя бы в теории можно реализовать?
__________________
Killing Floor: Horzine Outbreak
А если просто убрать другого монстра из списка препятствий, чтобы монстр пытался просто пройти дальше? Если вся толпа будет так идти, то зацепов не должно быть
__________________
Killing Floor: Horzine Outbreak
KorteZZ Возможо они будут ходить друг через друга
Lev я думаю они просто начнут толкаться
Crystallize Кстати да, ббоксы никто не отменял.
В Killing Floor'e они постоянно пытаются пройти вперед, даже когда перед ними стоит целая толпа монстров) Постоянно проигрывается анимация ходьбы. Хотя из-за этого они начинают порой застревать в дверях. Особенно в узких, одиночных, не пропуская друг-друга.
__________________
Killing Floor: Horzine Outbreak
Плиз хелп. Делаю энтитю выпускающую шары наподобие ХЛ2 (prop_combine_ball). Энтитя 1 (спаунер) создает энтитю 2 (шар). Направление Шара задается через angles Спаунера (сделал). Также Спаунер задает начальную велосити Шара.
Шар представляет собой спрайт с осязаемым боксом (util_setsize).
Шар создается и летит. А потом начинаются проблемы. Я не могу сделать отскок! Попытался сделать наподобие шаров нихиланта (они там тоже отскакивают), но что-то не то. Смотрел как сделано в ксаше отражение лучей от поверхностей. Делал по подобию, но все равно не получается. Тут какая-то математика, а я в ней честно сказать не силен.
Спаунер :: Use
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 ); |
1 | ............ |
2 | UTIL_SetSize( pev, Vector(-4,-4,0), Vector(4,4,4) ); |
3 | SetTouch( BounceTouch ); |
4 | m_vecIdeal = Vector( 0, 0, 0 ); |
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 | } |
__________________
Мой мод на Xash
Aynekko, а зачем ты вычитаешь позицию из скорости? Убери вторую строчку из BounceTouch и должно заработать.
Ну и определись m_vecIdeal у тебя локальная переменная функции или составная часть объекта. У тебя сейчас получается перекрытие символа.
__________________
I'm on github
I'm on opendesktop.org
FreeSlave, без второй строчки они просто исчезают в стене. Я сделал три спаунера под разными углами (вверх, вбок, вверх по диагонали 45 градусов). Все три исчезают. Если строчку оставить, то они адекватно реагируют на толкание игрока, летят куда толкаешь. А от стены не отскакивают. Прилипают и летят судя по всему на origin мира вдоль стен.
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(); |
m_vecIdeal = m_vecIdeal + (vecTarget - GetAbsOrigin()).Normalize() * 100; |
SetAbsVelocity( m_vecIdeal ); |
__________________
Мой мод на Xash
Может лучше 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'
Проблема решилась одной строчкой
#define MOVETYPE_BOUNCEMISSILE 11 // bounce w/o gravity |
__________________
Мой мод на Xash
Ну это ты просто заюзал встроенный тип физики. Но можно было и самому сделать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Задаю размер через UTIL_SetSize - 0,0,0, 8,8,8 - нормальный квадратный размер. Задаю 0,0,0 9,8,8 (к примеру) - увеличился осязаемый размер примерно в 2 раза. Проверил и поставил второй вектор 16,16,16 - да, такой же. Можно ли как-то задать скажем 12,12,12?
Может в дельте что-то поменять? Я на ксаше.
__________________
Мой мод на Xash
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 точно подмечено. Для игроков размер по Z указывается как -4 и 4, например, а для монстров как 0 и 8. Всё потому, что у монстров оригин в ногах, а у игрока на уровне пояса.
Один фиг там ломается все. То, что Дядя Миша предложил, лучше всего оказалось. Но хотелось бы расширить до объема 10-12, а не 8, а он сразу на 16 прыгает.
__________________
Мой мод на Xash
А посоветуйте какие-нибудь моды, в которые вы играли или просто видели, чтобы там HUD был нестандартный. Ну то есть не полупрозрачный подкрашенный. Overturn и Паранойи не надо, я их видел. И ещё желательно, чтобы менюшки оружий были нестандартные. У меня уже есть идеи на собственный худ, но охота проверить, как нестандартные варианты выглядят прямо в игре, и удобно ли это.
Mech mod с роботами, там и меню и худ.
https://gamebanana.com/guis/32344
https://www.youtube.com/watch?v=oj9eXUNUVCs
Лидерами по кастомизации худа являются 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:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Как сделать прошивание НПС через трассировку выстрелом?
Пример: стоят в ряд 5 зомби, стреляешь под прямым углом в тело первого и дамаг наносится всем остальным.
P.S. пытался сделать через цикл и заново заданную трассировку, но после первой трассировки остальные будто прерываются и не работают. Какой подорожник нужен этой трассировке, чтобы она работала адекватно?
__________________
El. Psy. Kongroo.
Eljeyna найди сорцы HLWE. Там, насколько я помню, есть прострелы через стены. Я в своё время делал прострелы циклом, у меня работали. В цикле надо использовать while. Вот мой старый код:
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 | } |
Спасибо! Оно наконец заработало (тут от силы понадобилось 10% кода для понимания). Моей самой большой ошибкой было то, что я проверял на NULL энтити (не халфер и лишь малость разбираюсь в двигле) и не до конца понимал, как работает мультидамаг
__________________
El. Psy. Kongroo.
Вы встречали такой баг, что оружие, сбрасываемое хгрунтами при смерти, иногда падает очень медленно, а затем и вовсе проваливается сквозь пол? Кто-нибудь это исследовал?
__________________
I'm on github
I'm on opendesktop.org
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
FreeSlave это распространённый баг. Обычно проявляется, когда ориджин заспавненного оружия находится в стене. Здесь поможет проверка на tr.allSolid, чтобы точка спавна ствола не была внутри БСП-геометрии. Нужно просто сдвигать точку спавна в сторону от стены. Ещё одно проявление этого бага - когда батарейки или аптечки спавнятся из разбитых коробок внутри полки, а потом медленно проваливаются сквозь пол. Причина та же самая - спавн с ориджином внутри браша.
Добавлено 02-01-2021 в 01:21:
__________________
I'm on github
I'm on opendesktop.org
FreeSlave ситуации с ящиками на полках и оружием грантов немного разные. Если в случае полок итем рано или поздно "выпадет" из браша, когда провалится сквозь полку, то в случае с застрявшим в стене стволом это не прокатит.
__________________
I'm on github
I'm on opendesktop.org
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
гамма раньше клиппинга
дефолт?
гамма до клиппинга, клип 196, даёт красноватый оттенок
мои эксперименты с подтяжкой под сорс, в том числе клиппинг 255 дают чуть более бледный оттенок чем дефолт
аналогично, внимание на кружки на лайтмапе
а это если пересчитывать цвет ещё раньше, в даблах, но тогда непонятно что делать с желтушным солнцем
Почему возникает эффект бензиновой плёнки когда у очень тёмных и очень светлых люкселей подскакивает насыщенность и появляются красные, синие, зелёные пятна? Такое даже в ХЛ2 на тенях есть. А вот в лайтбейкере вроде нету
И вот здесь ещё, что имелось в виду? Смысл сравнения с нулём?
#define Q_rint(x) ((x) < 0 ? ((int)((x) - 0.5)) : ((int)((x) + 0.5))) |
Потому что в лайтбейкере есть тонмаппинг, и он включен по умолчанию
А почему вообще изменение яркости приводит к тому что в цвете начинает доминировать то одна то другая компонента и изображение идёт радугой?
Из-за округления наверное
ну ок а в ХЛ2 почему это проявляется?
Crystallize а почему бы не проявляться? Там лайтмапа как-то иначе хранится/записывается?
ncuxonaT ну она же там с четвертым компонентом отвечающим за возведение в степень.
Crystallize какая там формула перевода из трех флоатов в четыре байтовых компонента?
void VectorToColorRGBExp32
https://github.com/ValveSoftware/so..._conversion.cpp
Crystallize экспонента всё-таки шаренная и выбирается по самому яркому каналу, поэтому, например, если лампочка светит желтым, то гуляние точности в синем канале будет заметнее. И еще, либо у меня голова не соображает, либо они используют только половину диапазона.
А вот во флоат или дабл, не помню:
Crystallize на первом скрине цветные пятна прям хорошо видно. Я наверное неправильно понимал, что ты имеешь в виду под эффектом бензиновой пленки. Щас померял цвет пипеткой в месте этого странного перехода, там почему-то меняются оттенок и насыщенность. Какой цвет у лампочки? И без радиосити то же самое?
ncuxonaT я не могу понять откуда берутся большие пятна: вон сначала жёлто-оранжевое и вокруг него более крупное но менее яркое красно-зелёно-синее.
Это и есть чистый директ без радиосити, даже без неба.
лампочка 254 216 146 150
Crystallize а серый свет откуда светит?
Красно-оранжевое пятно 1 - это из-за пересвета, одна или две компоненты больше 255, тонмаппинг бы это убрал.
Странный переход цвета в зоне 2 - вот тут я без понятия.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Нормализация по наибольшему значению одного из трёх каналов сама по себе некорректна, мягко говоря. Но не факт, что жёсткий клампинг был бы лучше - цветовое пространство нарушится в любом случае, если источник не белого цвета.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну так не нужны ни нормализация, ни клампинг. Ты объясни, почему цвет плавает там, где нет пересветов. И почему он не соответствует ни одному, ни другому референсу.
#define Q_rint(x) ((x) < 0 ? ((int)((x) - 0.5)) : ((int)((x) + 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'
Вообще надо будет в своём лайтмаппере посмотреть, у меня вроде нет этих пятен.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я замутил тонмаппинг по Рейнхардту с белой точкой, но с ним результирующее значение может превышать 1.0, бывает доходит до 1.06 примерно. По-хорошему надо как-то доработать формулу, но тут я без понятия.
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 ); |
Crystallize рейнхард мерзкий, попробуй экспоненциальный
color.rgb = vec3(1.0) - exp(- color.rgb);
И это, тонмаппинг должен идти до гамма-коррекции.
я бы на вашем месте хранил вообще интенсивность в 24-х битах, взаместо цвета, тогда и разводов не будет. А источники можно в реалтайме накладывать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
а дот и затухание по дистанции тоже в 24 битах считать?
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'
Разводов и так быть не должно. Если есть разводы, значит что-то не так считается.
Crystallize я без понятия, что это за белая точка и зачем она нужна. Но по крайней мере теперь нет желто-красного пятна на стене.
Дядя Миша непонятно, как хумус кластеры рассчитывал. В кластер пихаются все непересекающиеся источники? А что делать с глобалкой?
Добавлено 10-01-2021 в 23:47:
Раз уж речь про компиляторы, скажите мне, как рассчитывается яркость ареа лайтов? В lights.rad записана яркость чего? Одного квадратного юнита?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Но яркость в итоге зависит от площади? Если я хочу заменить ареалайт одним или несколькими спотлайтами, как высчитать их яркость?
по-моему зависит, да.
VectorScale(dl->intensity, p->area, dl->intensity); |
VectorScale(dl->intensity, DIRECT_SCALE, dl->intensity); |
Crystallize а Valve weird divider как нужно применять?
ncuxonaT
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; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Как найти люксели вокруг люкселя samp->light[k]?
1 | -1, -1 |
2 | 0, -1 |
3 | 1, -1 |
4 | -1, 0 |
5 | 1, 0 |
6 | -1, 1 |
7 | 0, 1 |
8 | 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'
а, там размеры конкретного массива и текущая координата на виду лежат? Ну ок, присмотрюсь, спасибо.
Что увидел. Чел учит маппать точка к точке.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff ХЛ2 в принципе упирает больше на геймплей чем на контент самой игры. К тому же у меня впечатление что славяне и азиаты не талантливы в программировании настолько массово как англосаксы, мы как раз больше по контенту.
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 ну можно по методу доктора Тресни поместить в центр карты большую анимированную модель.
Crystallize это ж не от хорошей жизни, а от того, что доступа к коду нет. Да и не всё можно моделью сделать. Партикли, к примеру, так не добавить. Чтоб дым из трубы завода шёл.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1 | -1, -1 |
2 | 0, -1 |
3 | 1, -1 |
4 | -1, 0 |
5 | 1, 0 |
6 | -1, 1 |
7 | 0, 1 |
8 | 1, 1 |
Почему непредсказуемо?
К каждой лайтмапе обязательно добавляется по одному люкселю, чтобы минималка получилась 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'
Да там и после этого несовпадение между w*h и fl->numsamples.
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; |
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'
Посмотрел лайтмапу через Crafty, там красивый кремовый цвет без радуги. Может в ксаше в glsl что-то происходит?
Гамма там происходит. Сколько еще раз мне повторить.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
С гаммой 1.0 цвет должен быть нормальный?
Оно не даст выставить гамму 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'
del
А, я понял, тебя наверное вот это смутило, да?
pFaceLight->numsamples = pSamples - samples; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Можно ли в голдсурсе как-то на стороне клиента узнать classname энтити? Может быть для этого надо что-то в delta.lst подкруть? Знает кто нибудь?
SNMetamorph если есть доступ к сорцам - передавай класснейм мессагой. Если сорцев нету - тады ой. Даже пев->хелс не передаётся на клиент. На мой взгляд весьма сомнительная оптимизация. Пиши я сам движок, я бы все энтварсы передавал на клиент. И выборочно бы регулировал для каждой энтити, какие точно передавать через 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'
pFaceLight->numsamples = pSamples - samples; |
Я смотрю исходники 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'
А, ну я-то тут с p2rad уже.
Ванильная халва. Есть вышка - 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
Да что тут сделаешь.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я таки сделал динамическую смену тумана
https://youtu.be/NNCDCs2i93Y
Но в одном не могу никак разобраться. Как мне достать 4 заветные числа тумана из g_pWorld->pev->impulse? И если доставать надо не оттуда, то откуда, и как?
На данный момент в моей энтити 2 поля - стартовый туман и конечный.
Это костыльно, но хотя бы уже работает. Энтитя прописывает туман в Update-packed-fog и в g_pWorld (чтобы в сейвресторе сохранялось). Так вот как мне достать текущее значение тумана из карты?
__________________
Мой мод на Xash
Дядя Миша
Объясни, плиз, в чем дело. Ты же пофиксил это в ксаше
__________________
Killing Floor: Horzine Outbreak
1 | r = (pev->impulse & 0xFF000000) >> 24; |
2 | g = (pev->impulse & 0xFF0000) >> 16; |
3 | b = (pev->impulse & 0xFF00) >> 8; |
4 | density = (pev->impulse & 0xFF) >> 0; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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
Возвращаясь к теме аутизма и многолетней аппроксимации кругового движения через формулы. Я-таки сосредоточился и реализовал формулу которую ещё летом нагуглил, через пересечение двух окружностей. (я надеялся предварительно её понять, но так и не понял, лол)
И она работает достаточно неплохо: для радиуса в 500 юнитов погрешность полтора юнита, для 200 - 3-4 юнита, для 150-175 что-то около 5, но дальше начинается трэш и для 100 юнитов реальный радиус движения оказывается 120, для 30-50 - 116.
Т.е. налицо рукалицо какое-то мягкое ограничение: мгновенное изменение YAW (2.9 градуса в кадр или 208 градусов в секунду, немало) не означает мгновенного изменения вектора моментальной скорости, даже близко. Большие или малые значения sv_stopspeed ситуацию не спасают. Игрок как-то проскальзывает, чтоли.
Добавлено 24-01-2021 в 17:23:
Fitzquake это.
И мы увидим в этой тишине
Как далеко мы были друг от друга,
Как думали, что мчимся на коне,
А сами просто бегали по кругу.
А думали, что мчимся на коне.
__________________
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 в 15:44:
причём эту проблему можно обойти, если игрок будет идти медленнее.
Добавлено 25-01-2021 в 15:45:
случайно каламбур вышел))
Вы не поверите, я сделал кармаковский фикс на отключение баннихопа и у меня баг уменьшился в разы(!), теперь при заданном радиусе 50 он послушно бегает не по кругу 115 а по 55 юнитов!!! при 100 юнитах-по 103.
Афтар маладец за проделаную работу!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
У меня с кодом Фитцквейка давно ещё была такая проблема что переменную нельзя объявить в произвольном месте функции одновременно с присваиванием: error C2143: syntax error : missing ';' before 'type' Поэтому сначала объявить все переменные и только потом пишешь логику.
Сейчас ещё вылезло что при объявлении void-функции всегда возникает ошибка 4027 declared without formal parameter list хотя входные переменные там есть. Причём если опять нажать компиляцию то ошибка исчезает.
А подскажите, реально ли отловить нажатие клавиши escape в коде VGUI меню? Вроде как есть такая возможность, но при нажатии игра всё равно ставится на паузу, и открывается главное меню. Ещё в инвазионе бесило, что кодовые замки и терминалы управления надо закрывать, кликая мышкой. В TFC этот код почти работает: при видимой кнопке CANCEL в открытых TeamMenu и ClassMenu на первое нажатие esc открывается главное меню, на второе нажатие главное меню закрывается, и следом закрывается уже открытое VGUI меню. Может быть есть способ как то блокировать движковую команду? Или такое дурацкое поведение только в стим-версии?
Есть две команды: 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'
Дядя Миша по-умолчанию в конфиге всегда к esc привязана cancelselect. Я корочи хукнул обе и подменил командами с вызовом gEngfuncs.ConDPrintf, чтобы отследить, какая когда используется. При вбивании в консоль в обоих случаях срабатывает escape. То есть в стим-халфе внутри движка cancelselect перенаправлена на неё. Но засада в том, что при нажатии клавиши esc в консоль ничего не выводится - такое впечатление, что тут GameUI.dll перехватывает нажатие клавиши, и уже потом выполняет команду в движке. Хотя я ещё не пробовал EngineCMD - только ClientCMD.
Добавлено 31-01-2021 в 14:39:
Глянул сорцы движка HL2 Beta. Ну точно, так и есть. GameUI перехватывает escape, и нажатие клавиши не доходит до клиента:
if ( key == K_ESCAPE && VGui_GameUIKeyPressed() ) |
{ |
// game ui handled it, so don't pass on |
return; |
} |
В Key_Event должен приходить сигнал от искейпа поидее. Н у в ксаше точно приходит.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Треск в начале и в конце зацикленного звука
Никак не могу избавиться в зацикленных звуках от треска при их повторном проигрывании. Как я понимаю, проблема где-то здесь (обведено жёлтым). Кто подскажет, как от этого грамотно избавиться?
UPD: вырезаю звуки из больших звуковых файлов со стоков.
Re: Треск в начале и в конце зацикленного звука
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Вопрос связанный с размером энтить и столкновением.
Большинство прожектайлов (наверно даже все) в HL имеют нулевой размер, выставляемый через
code:
UTIL_SetSize( pev, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ) );
__________________
I'm on github
I'm on opendesktop.org
Хитбоксы трейсятся только для трейслайна, для трассы боксом они игнорируются, если не задано обратное через флаг 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 на кой они тебе?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша захотел доделать подводные каустики. А то начатый код с 2016 года валяется недописанный. Так и не нашёл удобного способа пометить нужные сурфейсы. Метод от некоего Патрика с wavelength.net годится только для мировой воды, там он шарит по листьям с CONTENTS_WATER, и помечает нужные сурфейсы. Для воды-энтити это не катит.
не юзай воду-энтить
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша не, вода должна быть прозрачной. Как иначе ихтиозавров стрелять? А ещё мировая вода не умеет двигаться, сливать/наливать её не получится. Ну раз никак без извратов подводные сурфейсы не отфильтровать, то не будет никаких каустиков. Применю код для чего-нибудь другого.
Ну через верхнюю плоскость в пиксельном шейдере, по аналогии с туманом можно сделать. Иначе никак. Точнее, можно и иначе, но это как минимум придётся ей делать препроцессинг в компиляторе, разбивать водой брашы, чтобы выделить где каустики есть, а где их нет, если вода с изменяемым уровнем, там вообще без вариантов что-то сделать без попиксельного эффекта.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Мне кажется проще рисовать каустики у мировый воды, и сделать её прозрачной. В кваке-то мировая вода вполне прозрачна.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша а как её сделать прозрачной без вторжения в движок?
Я не могу понять какие ты цели преследуешь. Ты хочешь стандартными средствами 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'
Но ты себя намеренно загоняешь в еще более узкие рамки. С одной стороны - не трогаем движок, с другой стороны - никаких кастомных рендереров.
XWider придерживался примерно такой же стратегии, ну и где он сейчас? Слёг с воспалением мозга, так ничего нормального и не сделав.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша да, согласен. Но кастомный рендерер - слишком избыточно для моих целей. Тащить его ради каустиков, декалей, теней от моделей и фонарика нет никакого смысла. 3д небо возможно без него, красивые анимирированные декали тоже. Правильные тени опять же не нужны, можно обойтись спрайтом под ногами, как в кс. Нужно соблюсти баланс детализации моделей/уровней и графических плюшек. Чтобы не выглядело кубично и деревянно, но зато с шейдерами.
И я почему-то подозреваю, что у вас с Мастером и мотивация схожая. Ты, как и он не хочешь осваивать ничего нового, тебе комфортнее ковыряться в том что ты уже понял. Это ни хорошо, ни плохо, но зачем же ставить себе задачи, выходящие за рамки компетентности?
Чтобы реализовать то, что ты хочешь, надо как минимум досконально понимать принципы работы движка и уметь это всё реализовывать на его уровне. И вот тогда уже можно поразмыслить, как перенести в дллки.
Да, многое возможно, когда ты понимаешь что делаешь.
Добавлено 02-03-2021 в 16:09:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
р
Добавлено 02-03-2021 в 20:09:
извините что отвлекаю не мог файл выложить просто проверка. Почему здесь бывают проблемы с выкладыванием фалов ?
__________________
илья
В последнее время какая-то нездоровая тенденция. Вместо того чтобы делать мод, люди начинают сосредотачиваться на графических эффектах, хотя всё что им нужно - это просто нарисовать новые текстуры.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Такой вопрос, спавню турели вот так:
CBaseMonster *pSentry = (CBaseMonster*)Create( "monster_sentry", TurretSpawnPosition, g_vecZero, edict() ); |
__________________
Мой мод на Xash
Так логично, для овнера объект всегда несолиден.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Это я знаю. Мне как раз нужен player был. В общем, выставил там NULL. Турель должна быть солидной все-таки.
__________________
Мой мод на Xash
__________________
Мой сайт
Xash3D Modding Discord
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой сайт
Xash3D Modding Discord
Вопрос по punchangle. Взял код из паранои 2, он же сорсовский, поставил себе в ксаш. Все работает, но...он как будто лагает что ли? Когда панч большой, то это не так заметно. Но если выставить маленький, то когда панч при возврате в центр движется совсем медленно, заметны некие рывки в движении. Не знаю, как еще лучше объяснить. В хл2 такого не наблюдается.
Вот код который у меня сейчас:
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 | } |
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 | } |
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 ); |
m_pPlayer->pev->punchangle.x = RANDOM_FLOAT( 1.0f, 2.0f ); |
m_pPlayer->pev->punchangle.y = RANDOM_FLOAT( -2.0f, -1.0f ); |
__________________
Мой мод на Xash
Этот панч еще БУзер делал для первой паранои, я к нему никаким боком.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Так я не с претензиями к тебе, да и вообще код из соурса я скорее с вопросом, как заставить его работать так же как в соурсе. Вроде бы код более-менее идентичный
__________________
Мой мод на Xash
Время по разному идёт, в этом всё дело.
FPS отпущен?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вот я тоже подумал, будто бы эффект обновляется не так быстро или еще что-то. Фпс что 60 что 200 разницы нет никакой внешне
__________________
Мой мод на Xash
Aynekko Я уже копипастил себе этот пунч. Лагает он из-за того, что нужно делать его на клиенте. Серверный пунч передается на клиент в четырьмя знаками после запятой у флоатов. Поэтому на маленьких значениях и лагает.
Добавлено 25-03-2021 в 21:49:
У себя я сделал так, что серверный пунч больше не влияет на наклон камеры, но все еще влияет на направление стрельбы. И все pev->pubchangle += ...; менял на вызов функции ,которая отправляет мессагу на клиент, который в свою очередь делает клиентский пунч чисто для визуального эффекта. То есть этот код должен быть и на клиенте и на сервере.
[i]Добавлено 25-03-2021 в 21:51:
__________________
Никогда не поздно сделать мод под хл1
__________________
Мой мод на Xash
Проблема с лагающим punchangle решилась банально с помощью delta.lst.
Вместо 8.0 поставил 32.0 и все отлично стало.
__________________
Мой мод на Xash
__________________
Никогда не поздно сделать мод под хл1
gEngfuncs.COM_LoadFile( char *path, int usehunk, int *pLength );
Кто нить знает за что отвечает usehunk?
В какую область памяти положить загруженный файл. Чтобы не было неожиданностей, следует использовать только число 5.
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ради уточнения скажу что речь идёт о загрузке HD текстур.
Прохожусь по всех текстуркам уровня, ищу их dds/tga вариант в папке, гружу, попутно сохраняя индексы новых HD текстур в мапу типа <НазваниеТекстуры, индекс>. Потом подменяю индексы текстур на HD. При загрузке/смене уровня снова смотрю в мапу, догружаю новые HD по надобности
Я надеюсь, после загрузки в видеопамять ты эти текстуры освобождаешь при помощи COM_FreeFile ?
Добавлено 31-03-2021 в 14:30:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Уровень - тот где 3 тентакли под двигателем. Это был первый левел где началась эта проблема. Решилась она проставление usehunk = 2, и оттуда я дошёл до монорельса который после гарга без проблем. Как я понимаю usehunk = 2 опасно, поэтому надо мне исправить проблемы с загрузкой файлов
Добавлено 31-03-2021 в 14:31:
Посмотри для начала в менеджере задач сколько памяти потребляет твой мод в среднем. Ну, вся халфа вместе с ним.
Добавлено 31-03-2021 в 14:32:
И еще. Есть ли проверка, что COM_LoadFile вернул валидный указатель или оно прямо внутри движка крэшится?
Добавлено 31-03-2021 в 14:34:
Текстуру удолять вот так
glDeleteTextures( 1, &texnum ); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Стоят конечно проверочки типа
if (!file)
{
Log("CreateTexture failed to load file: %s\n", filename);
...
Крашится где то внутри, что удивляет
Добавлено 31-03-2021 в 14:35:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Копаю дальше в мод, решил его покрутить под ксашем, чтобы увидеть ошибки с другой перспективы. Пришлось ксаш3Д собрать Visual Studio 2017, ибо мод на ней делаю. Первое что выпало -
Добавлено 31-03-2021 в 21:29:
Это даст мне хотя бы какой то манёвр, надеюсь, с помощью твоего двигла наконец допилю хоть до уровня чтобы не выкидывало )
Ну да, голдсорс молча валится, в ксаше можно хотя бы отловить ошибку.
Да и он частенько информативно ругается в консоль там, где голдсорс просто падает.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В общем на том месте где Халфа падает ксаш не падал, поэтому я подсунул ему сейв с халвы с проблемного места, ксаш его грузанул раз, а на вторую загрузку выдал это. Есть идеи?
Добавлено 31-03-2021 в 21:44:
Понятно, что порча памяти. Хотя бы куда смотреть есть идеи?
Колстек
Добавлено 31-03-2021 в 22:06:
Это карта с2а3 и бьётся сейв после того как ломаешь замок, который удерживает пушаблы-бочки что должны всплыть.
Добавлено 31-03-2021 в 22:09:
Есть ли какой нить способ отследить все события произошедшие на карте к определенному моменту? Чтобы хотябы знать что проверять, потому что предидущее заявление про брекаблу замок неверно, там какой то рандом
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
По колстеку было видно что там с памятью эдиктов, да, но как именно её можно было поломать я представить не мог. Спасибо за наводки, буду глядеть в оба.
Забыл добавить. В кваке был константный размер для всех эдиктов, равный максимальному. Поэтому там ни с какой точки зрения нельзя было промахнуться и испортить память. В халфе конечно экономия, эдикт занимает ровно столько места, сколько требуется его классу.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
class CClass
{
bool SomeArray[5];
...
TYPEDESCRIPTION CClass::m_SaveData[] =
{
DEFINE_ARRAY( CClass, SomeArray, FIELD_BOOLEAN, 5 ),
Вот что трешило память
Нужно было поменять тип с bool на BOOL
Там ведь и табличка имеется
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 |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А чем обосновано то, что в Халве BOOL по факту int? У этого есть какой то практический смысл?
Это не практический смысл, а исторический. Не всё поддаётся логическому объяснению, надо знать историю.
В чистом Си вообще не было переменной 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'
Спасибо за исторический экскурс! )
В Сорсе вроде как студиомодели освещаются в один момент не более чем двумя источниками. Кто-нибудь в курсе, каким образом выбираются эти два источника, и как определяется, не в тени ли модель? Кидаются трассы до всех лампочек, и выбираются самые яркие?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Как вытащить из mdl анимацию? Хочу посчитать тени от моделей, геометрию вытащил, но многие модели повернуты анимацией, а я не могу разобраться, как она записана.
Все анимации в модели анализируются и для 6DOF находятся максимально возможные величины скейлов. Эти значения записываются в структуру костей. При извлечении анимации надо умножать полученные значения на них. Сами анимации точно так же делятся на 6 независимых потоков.
XYZ-pos, XYZ-rot.
1 | typedef struct mstudioanim_s |
2 | { |
3 | unsigned short offset[6]; |
4 | } mstudioanim_t; |
1 | typedef union |
2 | { |
3 | struct |
4 | { |
5 | byte valid; |
6 | byte total; |
7 | } num; |
8 | short value; |
9 | } mstudioanimvalue_t; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Как правильно повернуть вершины? Прибавить value из mstudioanimvalue_t к value из mstudiobone_t? Или сначала повернуть на одно, потом на другое?
ncuxonaT ты же код студиомоделей смотришь.
Извлечённое значение из анимации надо сперва умножить на скейл из структуры кости. А потом прибавить дефолтное положение скелета.
final = bone->value + anim->value * bone->scale |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша аллилуйя, всё получилось, спасибо!
Как мне правильно отрисовать хулл энтити через опенгл? Начну с того, где взять правильный оригин? cl_entity_t->origin и cl_entity_t->curstate.origin почему-то выдает разные числа. А еще, как повороты учитывать? Я вот скопипастил матрицу трансформации для энтити из ксашмодовской GL_CacheState, каждую вершину хулла умножаю на матрицу, и в итоге оно при повороте энтити куда-то улетает. Не пойму что делать.
__________________
Мой сайт
Xash3D Modding Discord
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой сайт
Xash3D Modding Discord
SNMetamorph так ты XT допиливаешь или что ты делаешь?
Подскажите, есть ли возможность научить пушаблю падать, после того, как из-под неё была вытолкнута другая пушабля? Если нижнюю расстрелять - верхняя падает. А вот если просто вытолкнуть - верхняя остаётся висеть в воздухе.
Добавлено 11-04-2021 в 21:44:
Вышел из положения временно вот таким кодом:
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 | } |
__________________
Мой сайт
Xash3D Modding Discord
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'
Дядя Миша так не годится. У пушаблей пропадает трение, если убрать флаг. Ну или не пропадает, но они скользят до бесконечности по полу, если получают ускорение, видимо, работает SV_FlyMove. Флаг надо снимать в определённый момент, когда внизу становится пусто, а не каждый кадр.
Ну я ж говорю, надо рекурсивно находить кто на ком стоял, в момент начала движения нижней пушабли. Но из кода самой пушабли это не слишком корректно делать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Блин, ну я балбес. Из движка ведь торчит нужный экспорт
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша я тчинк сделал пореже, до 0.5 секунды увеличил. И сделал проверку на FL_ONGROUND, чтобы для падающих пушаблей не считалось. Посмотрим. Если вдруг нарвусь на тормоза, никогда не поздно будет вернуться к варианту с гравитацией.
Добавлено 12-04-2021 в 01:08:
Вообще, для обычных пушаблей на зависание в воздухе можно забить - ситуация редкая. Я лишь в паре любительских модов такое видел, где авторы так их располагали, что можно из них составить пирамиду. Обычно все пушабли на одном уровне: меньший ящик толкается к большему, а потом по ним игрок куда-то лезет. Но у меня ситуация с носимыми в руках пушаблями: их ведь можно поставить на что угодно, куда "руки" дотянутся. Вот и столкнулся с неприятным моментом.
__________________
Мой мод на Xash
Значится, я рисую у энтити их обьем таким вот образом
https://github.com/SNMetamorph/gold...report.cpp#L114
Проблема в том, что у func_tank питч инвертированный получается, хотя у всех остальных энтити всё выглядит нормально и питч такой как надо. Как это решить?
А ещё я заметил, что у некоторых энтити их ориджин находится как бы в центре хулла, а у других он находится в самом низу хулла. Как определить где находится центр для какой-то конкретной энтити? Есть флаг некий для этого?
__________________
Мой сайт
Xash3D Modding Discord
Написал такую штуку и столкнулся с тем что в конце при выводе через printf оба значения по нулям.
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 ); |
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 ); |
void GetAngleScaler( float &scaler, float &scaler1 ) |
__________________
Мой сайт
Xash3D Modding Discord
SNMetamorph он хочет закрывающую скобку перед символом ссылки
Crystallize
Так это сишный файл, наверно. А в сях только указатели и нету неко ких ссылок.
nemyax а, ну да сишный. Но в чём проблема что оно не работает через простые флоаты?
Причём тут простые флоаты. Тебе надо как-то вернуть значения.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой сайт
Xash3D Modding Discord
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Нужно просто вот так переписать:
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 | } |
GetAngleScaler( &scaler, &scaler1 ); |
Спасибо всем
Стоит ли в пределах одной комнаты, ну или одного открытого места, объединять кучу func_illusionary или wall в одну энтитю? Если у них свойства совпадают.
Я так понимаю, что один иллюженари/волл считается как "модель" и занимает edict, то лучше делать все, скажем, перила одним func_wall и это будет считаться как один edict? Или func_wall, состоящий из нескольких брашей, все равно как-то разбивается движком?
__________________
Мой мод на Xash
Можно детайлами делать, у детайлов есть настройка 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'
Aynekko если для таких брашей не нужны рендермоды, то лучше их делать детайлами. В случае с перилами или стёклами - func_wall. Объединять их в одну энтитю можно, но с оговоркой. Если у тебя, грубо говоря, два func_wall в виде букв "L" или "Г", и расположены они так, что один занимает угол напротив другого по диагонали, то если объединить их в одну энтить - пушабли через пустое пространство между ними не катаются. Сталкивался с таким. Возможно, что и монстры могут не ходить.
__________________
Мой мод на Xash
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
Да, в компиляторх тоже лимит на 1024 модели, их тоже пересобрать бы надо.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я сейчас поменял MAX_MAP_MODELS в параноевских компиляторах на 2048. Перекомпилил все p2, только вместо p2rad взял hlrad (который в параноевском сдк). Результат остался тот же. p2rad у меня не хочет компилится - у меня шестая визуалка, ругается на
ALIGN16 byte block[64]; |
ALIGN16 byte outBlock[16]; |
__________________
Мой мод на Xash
__________________
Мой мод на Xash
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'
__________________
Мой мод на Xash
Ну неплохо, мне нравится.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Раз нравится, то вот еще скрин скину. Опять же все скалы моделями накидал (так проще и быстрее, и выглядит имхо лучше). Модели не мои - портировал из NFS Payback
Собственно больше скринов есть по ссылке в подписи, на моддб.
__________________
Мой мод на Xash
Есть такой баг в халфе, который раздражает - когда идешь по самому краю браша, начинает проигрываться звук ходьбы по-умолчанию - CHAR_TEX_CONCRETE. К примеру если идти по тонкому деревянному брусу, его очень легко словить. Шерстил код, смог добраться только до PM_TraceTexture в самом ксаше, где дальше идет PM_TraceSurface. А тут уже тупик, ибо ничего непонятно (лично мне). Понял я только одно, путем алертов в консоль, что идет трасса ровно из центра игрока вниз. Поэтому ничего и не находится под игроком.
Может кто-нибудь фиксил это?
__________________
Мой мод на Xash
Может быть делать четыре-пять трасс. Одна по центру и 4 по углам ббокса.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Из коллизий никак нельзя получить материал пола? Кидание трассы для звука шагов звучит как забивание гвоздей микроскопом.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В общем все получилось. Сделал проверку сначала центральным трейсом - если там fraction 1 (что случается только на краях браша), то включаются 4 дополнительных трейса по углам хулла. Все сделал внутри PM_CategorizeTextureType. Работает прям как в сорсе, что и хотел.
__________________
Мой мод на Xash
В КС 1.6 есть трюк, который довольно сложно исполнить: можно прыгнуть с просто невероятной высоты на краешек браша и не потерять ХП. Также на старых версиях, если поставить бомбу и сидеть неподалеку на стыке текстур и стрелять в них, то после твоей смерти от взрыва, на следующем раунде ты получишь порядка 7К баксов, чего хватает на авапу, фулл армор и раскид. Уже на втором раунде))
__________________
Killing Floor: Horzine Outbreak
Можно ли как-то визуализировать util_traceline и tracehull? Чтобы видно было, куда и насколько идет трейс. С линией еще как-то обхожусь алертами, а с хуллом как определять?
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
Что-то мне гугол не может дать внятного ответа, видимо за давностью лет. Подскажите, кто знает, порядок выхода версий 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 чего-то промежуточного без клиентских пушек, но совместимого с обновлённым движком?
Нет, не было. Оригинальную версию 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'
Подкиньте компилятор для первой ХЛ который может делать тени сквозь браши с прозрачными текстурами(тень лестницы от браша с текстурой лестницы например)
по-моему любой из современных должен уметь
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Есть ли способ повысить разрешение лайтмапы локально на каком то участке кроме как скейлить текстуры вниз?
Есть, но это только под Ксашем работает.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Подскажите, никак не могу понять. Как вывести число через UTIL_ShowMessage? Скажем у меня есть float четотам = 1.015. Как ее вывести на экран именно через message? И чтобы с подписью "такое-то равно 1.015".
__________________
Мой мод на Xash
Aynekko:
char msg[64]; |
sprintf(msg, "Float is: %f", flFloat); |
UTIL_ShowMessage(msg, (CBaseEntity*)pPlayer); |
char msg[64]; |
sprintf(msg, "Float is: %f", flFloat); |
UTIL_ShowMessage(msg, (CBaseEntity*)pPlayer); |
__________________
Мой мод на Xash
nekonomicon спасибо за разъяснение
__________________
Мой мод на Xash
Народ, вожусь с trigger_push, прошерстил инет и даже нашел какие-то концы на этом форуме про FL_BASEVELOCITY, но так ни до чего и не додумался. Там что-то с самой физикой игры.
Суть проблемы - есть подводный туннель, который полностью внутри func_water, а внутри туннеля trigger_push. Пуш не толкает. Если включить и выключить noclip, то толкнет один раз и замолкает.
Припоминаю, что в хл2 игрока толкало под водой. Как это исправить, или может есть какие идеи, как еще это реализовать?
На одном сайте была идея поставить кучу мелких пушей друг за другом, чтобы кидало из одного в другой. Но это ж бред…хоть и может сработать.
__________________
Мой мод на Xash
Aynekko может флаг Once Only стоит?
Добавлено 22-05-2021 в 03:29:
Алсо, триггер должен быть растянут на весь туннель
__________________
-Brain is dead-
__________________
Мой мод на Xash
Там поидее надо не триггер пуш, а несолидный конвейер, чёб игрока извнутри тащило.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
pOther->SetBaseVelocity( vecPush ); |
pevToucher->flags |= FL_BASEVELOCITY; |
vecPush *= 0.01; |
pOther->SetBaseVelocity( vecPush ); |
// pevToucher->flags |= FL_BASEVELOCITY; |
__________________
Мой мод на Xash
Убрал зависимость от фпс, но все равно пуш ведет себя немного странно (ну это немудрено). Если поставить флаг FL_BASEVELOCITY, то получается вообще треш.
Пока получилось так, сделал спаунфлаг, и тестирую два пуша рядом. Снизу оригинал, сверху мой огород. Шестерка подобрана эмпирически.
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
Поставлена задача: автоматически рассчитывать расстояние, на которое камера приближается к монитору. Пока что юзаю две энтити - сам монитор и точку обзора, куда перемещается pparams->vieworg. В планах строить вектор, перпендикулярный поверхности, из центра браша, рассчитывать расстояние так, чтобы монитор умещался в экран по одной из осей впритык. Нужно как-то сделать поправку на FOV. Подскажите, есть ли какое-то решение, не охота городить огород.
FOV 100:
FOV 90:
Добавлено 31-05-2021 в 01:27:
Размер VGUI-меню подгоняется под размер брашевого экрана (привет из тутора про рамки выделения). И все элементы меню динамически меняют своё положение и размер. В теории, какую бы форму не имел монитор, меню в нём спокойно уместится. Тестировал на разных разрешениях, начиная от 640х480. Всё помещается. Но вот с FOV проблема. У меня по дефолту стоит 100 для моего разрешения экрана. Для обычных не широкоформатных мониторов годится 90, а если 1080p и выше, то я думаю, что подойдёт значение 105-110 и т.д. Если получится это победить, то дело останется за малым - дописать парсер текстовиков для мониторов (да, количество кнопок, менюшек, прочего, а также команды и тексты я планирую грузить из файлов). Команды вообще делаются просто, находим активный монитор, который в данный момент юзает игрок, и в client command отправляем что-то типа "monitor_use menu1 param1". Ну а энтить монитора уже разруливает параметры и управляет другими энтитями. Я очень рад, что нашёл альтернативу ксашевским OpenGL-мониторам. Картинка видеонаблюдения на скринах реалтаймовая. И оттуда даже звук есть, в общем, каеф.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Подскажите по такому нубскому вопросу. Ставлю звук:
EMIT_SOUND_DYN(ENT(pev), CHAN_STATIC, "sound.wav", 0.25, 2.0, SND_CHANGE_PITCH | SND_CHANGE_VOL, 100); |
__________________
Мой мод на Xash
gEngfuncs.pfnPlaySoundByName |
gEngfuncs.pfnPlaySoundByIndex |
gEngfuncs.pfnPlaySoundByNameAtLocation |
gEngfuncs.pfnPlaySoundVoiceByName |
gEngfuncs.pfnPlaySoundByNameAtPitch |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Спасибо всем за помощь.
__________________
Мой мод на Xash
float cylstep = (2.0f*PitchWing) - (2.0f*AtomicWing) / 18.0f; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Можно ли узнать view origin игрока на сервере? Мне нужно сделать там проверку с использованием именно view оригина, а не самого оригина игрока. Связано это с триггер_камерой. А она делает SET_VIEW и все. Может как-то можно достать с клиента это?
Добавлено 04-08-2021 в 13:53:
Пробовал делать копию оригина в vuser4, а он почему-то все равно всегда нулевой. Я по ксашмоду прошелся, он там где-то используется. Можно конечно воткнуть еще один entvars но это уже крайние меры
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну просто на клиенте есть vieworg, который отвечает именно за камеру, и origin отдельно. Поэтому я так выразился.
Мне нужно на сервере сделать проверку расстояния между энтитей и камерой игрока. Вот я не могу оригин этой самой камеры игрока достать.
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Спасибо. Я примерно так и сделал, но не в сетвью, а прямо в камере. Копирую в игрока оригин и имя камеры.
Параллельно получился еще и фикс - камера теперь проверяет, какое имя камеры у игрока записано (когда она работает), если не совпало - выключается. А раньше как было - можно активировать одну камеру, затем вторую, а затем выключить вторую. А первая как think'ала, так и будет think'ать! Вот так вот
В общем, сделал что хотел и даже больше.
__________________
Мой мод на Xash
Ох, у меня к этим вьюриджинам и вьюанглсам давняя нелюбовь. Вроде бы в коде всё прозрачно, а на выходе имеем не то, что хотели. Но я всё-таки разобрался. Даже написал особую энтить, которая захватывает взгляд игрока. Для катсцен от первого лица, чтобы игрок смотрел туда, куда задумано. Осталось добавить этой энтите функционал, чтобы она захватывала управление и вела игрока по патч_корнерам, и будет прямо как в современных играх. Побочкой появился код для заглядывания в мониторы. Если буду делать транспорт (есть пара мыслей где его применить), то это же будет кодом входа/выхода из него.
__________________
Мой мод на Xash
На ксаше. В общем у меня стоит punchangle из сорса, который вычисляется в playermove.
Ситуация - создаю дедикатед сервер. Потом подключаюсь с двух компов - на одном более 200 фпс, на другом 30.
Когда заходит один клиент, любой - панч ведет себя нормально.
Если у обоих клиентов одинаковый фпс - то у обоих все нормально.
Но, если у одного клиента 30 фпс, а у другого 200, то у первого панч ооочень медленный, а у другого наоборот ускоренный. Фпс у обоих клиентов должен быть полностью одинаков, чтобы все нормально работало. Как это побороть?
Код панча:
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
у меня DJVU или ты уже задавал этот вопрос?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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 | } |
PunchAngle(); |
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
Этож по локалке. А так будут лаги, скорее всего.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Не могу разобраться с параметром pparams->spectator на клиенте. Откуда он берется. Вот к примеру pmove->spectator говорит, что он активен, когда я переключаюсь в спектатора. В это же время в CalcRefDef pparams->spectator не активируется. Из-за этого я не могу применить некоторые настройки.
И другой вопрос. Как мне в этом refdef достать параметры клиента, вроде iuser1 и всякое такое прочее? Не могу никак найти.
__________________
Мой мод на Xash
gEngfuncs.GetEntityByIndex(player_index)->curstate.iuser1 |
__________________
Мой мод на Xash
я кстати тоже спектатором интересуюсь пытаюсь добавить фишку как в dmc но все безуспешно. Как же все таки добавить эту фишку где её найти ? работает он как то так когда мы спавнимся то игрока самого нет он с пектаторе но когда мы нажимаем ок в меню то игрок спавниться.
__________________
илья
[QUOTE]Ku2zoff писал:
[B]Не в спектаторе. Игрок невидим, несолиден, невосприимчив к урону, не может двигаться. Только вертеть головой.
этот эффект я обнаружил в player.cpp в спавне игрока в этом ты прав.
неплохо бы спавн функцию игрока оттуда скопипастить в hl и будет как в dmc.
__________________
илья
__________________
Мой мод на Xash
ладно лучше не буду делать. это для тебя так легко для меня это целая эпопея.
__________________
илья
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша не пугают, а мотивируют!
илья2 если тебе что-то не даётся, оставь на время, и делай что попроще. В самом начале своей моддерской деятельности я занимался клонированием монстров и пушек. Сейчас я могу сделать монстра наследованием, да и пушку тоже, да и вообще, если заморочусь, могу почти с нуля написать. А тогда клонировал весь код. Пробуй делать что попроще и в дебри не лезь. Но первый спавн из DMC всё-таки скопипасти. Ты же уже нашёл, что там всё в спавне игрока. Вот и переноси в халфу всё, что связано с условием m_bHadFirstSpawn.
Скопипастил в Фитцквейк из Спирита функцию float AngleBetweenVectors().
Сначала положил её в матчлибу, но при вызове из cl_input.c она давала бред типа 1239768.00000 без ошибок и ворнингов.
Тогда положил её в тот же cl_input.c и она стала нормально передавать значение, но возникла другая проблема, когда вектора переданные ей в качестве параметра, после нормализации в дочерней функции оказываются нормализованными и в материнской. Это что ваще.
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'
хочу отрисовать спрайт на весь экран
как это сделать?
Re: хочу отрисовать спрайт на весь экран
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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)
например, так https://csm.dev/threads/hl1-blood-overlay.18688/
кстати хороший тутор можно наконец то классный спецэффект аптечки из mmod сделать
__________________
илья
Подскажите. Есть класс CHudAmmo, где в public есть int ID оружия. Я его занес туда, т.к. оно мне нужно. Меняется оно так - iId = READ_CHAR(). Оно меняется - проверил. В другом cpp файле я хочу это значение использовать.
Сделал код:
CHudAmmo AmmoData; |
int WeaponID; |
WeaponID = AmmoData.iId; |
__________________
Мой мод на Xash
Ну в классе-то оно само-по себе не возьмётся.
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'
__________________
Мой мод на Xash
CHudAmmo AmmoData; |
int WeaponID; |
WeaponID = AmmoData.iId; |
__________________
Мой мод на Xash
я так понял здесь кто то уже говорил про пропы, раз поиск по форому выдал эту тему, не подскажите на какой странице был разговор про пропы?
hgrunt_2020 где-то далеко, я думаю. Долго искать. Нужны пропы студиомоделями? В ксашмоде есть env_static, используй их.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
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
и че делать незнаю
немогу заставить энтитю реагировать на игрока, я хочу что бы игрок мог толкать энтитю своим телом
Остался ли у кого этот архив? https://hlfx.ru/forum/showthread.php?s=&threadid=4511
Я даже не могу найти ссылку туда, где он лежал и название файла. Подскажите, может быть ещё у кого-то завалялись сорцы ксаша (движка) версии 0.68-0.72, ещё до совместимости с голдсорсом.
Ku2zoff на кой они тебе?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша спортивный интерес. Ну и ещё система частиц из старого ксаша. Клиентскую часть версии 0.72 я нашёл. А вот движка нету, он тогда ещё не был опенсорсным, и в комплекте с сдк не поставлялся. Думаю, что в том самом большом архиве эти сорцы должны быть.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
У меня лежит какой-то xash22.06.07_09.05.10.rar (792 МБ) сохранен 26 июня 2013
Decay по-моему, он самый. Билды ксашей с 22.06.07 по 09.05.10. Можешь выложить?
https://drive.google.com/file/d/1H8...iew?usp=sharing
Как можно на сервере управлять временем (типа сделать замедление и вернуть обратно)? Я конечно могу сделать через SERVER_COMMAND, но подумал, что лучше спросить - может есть другой, менее костыльный способ?
__________________
Мой мод на Xash
Замедление времени никогда не было элементом геймплея в ксаше.
Нет таких способов.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Aynekko а как в моде про Макспейна сделано?
__________________
Мой мод на Xash
в квейке была команда host_timescale замедляющая время, в первых версиях хл тоже вроде как работала, мб как-то можно вернуть
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Очень хитрая формула:
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'
это не для меня, для друга
можно ли как то убрать определенный тип урона при нажатии примари аттак?
ну или имунитет сделать
Кто-нибудь может провести ликбез, как устроено время в ксаше/хл, где что тикает, как увязываются клиент с сервером, какие значения используются для интерполяции и т.д.?
Не могу найти рассказ ДМ про то что BSP не беспокоится о ликах и их проверку ввели как оптимизацию, может помнит кто где он это писал?
Re: это не для меня, для друга
if ((pev->buttons & IN_ATTACK) && (bitsDamageType & DMG_ТИПУРОНА)) |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
дратути, я с проблемой
хотел сделать 8 визуалов для барни, но при количестве бодигрупп больше 3 ксаш крашится с отсылкой на клиент и gl_ref
КАК ПОЧИНИТЬ HOLSTER?
так и не понял как это сделать
hgrunt_2020 вот так. По этому тутору всё прекрасно делается. Рекомендую отключить клиентские пушки и завести кастомную мессагу вместо SVC_WEAPONANIM, чтобы нормально работало по сети в режиме наблюдателя.
опять я, и опять с вопросом
хотел чтоб в место заряженного выстрела гаусс сам пополнял боезапас, провозился долго, но чет толи я дурак, толи лыжи не едут, анимация 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;
}
}
Думаю, многие замечали, что в какие-то моменты анимация деплоя оружия перестаёт играть при быстрой смене между пушками (на Q) - оружие мгновенно отображается на экране. Проявляется это как в сетевой, так и в одиночной игре. Кто-нибудь копал в эту сторону? Можно ли это стабильно побороть?
__________________
I'm on github
I'm on opendesktop.org
Пытался сделать улучшение для пушек , но чет пошло не так
Если в общем то хотел сделать итем при подборе которого на пушке менялась бы бодигруппа магазина на увеличенный и менялось бы максимальное колличество патронов, но при подборе итема ничего не происходит. Просто в пустую исчезает итем и все
код итема
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 | }; |
__________________
И главное, Артём, помни: не ешь желтый снег!
hgrunt_2020 так тебе надо заводить переменные в коде пушки или игрока, а не в коде итема. В общих чертах:
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 | } |
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 | } |
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
здесь надо писать номер и ID пушки?
ибо у меня при подборе вылетает
__________________
И главное, Артём, помни: не ешь желтый снег!
Вместо WEAPON_MYWEAPON пишешь, например, WEAPON_MP5. Возможно, указатель получается невалидный. Поищи в коде, где из m_rgpPlayerItems ищутся CBasePlayerItem и сравнивай, в чём разница.
Тема с апгрейдами интересная, к примеру еще как вариант интересно бы сделать акимбо-пушки, но чтобы это было не отдельное оружие которое дается при подборе, а было апгрейдом существующей, а то без тутора Дяди Миши всего 32 слота на пушки, хотя я вроде смог осилить более-менее нормальные акимбо пушки. Из мелочей еще надо сделать какую-то анимацию применения подбора, просто холстер и деплой с новой боди группой если пушки в руках и игрока.
Кстати для акимбо полезная была бы фишка это блендинг анимаций, чтобы при стрельбе из левого пистолета не обрывалась анимация правого, и если правый не стреляет, то он проигрывал idle анимацию вне зависимости от левого пистолета.
Достаю в HUD_WeaponsPostThink состояние клиентской пушки через gEngfuncs.GetViewModel() и меняю там curstate.body. Но отображается изменение несколько позже. Можно ли как-то триггернуть перерисовку?
__________________
I'm on github
I'm on opendesktop.org
FreeSlave посылай с сервера в мессаге SVC_WEAPONANIM. Тогда бодя будет меняться не посреди кадра, а в начале. Но если надо менять налету, лучше используй Xash Weapon System с её бодями и скинами.
Добавлено 10-10-2021 в 23:42:
Ещё можешь попробовать менять бодю не в посттчинке, а в HUD_Frame. Теоретически, если операции, что делаются в ItemPreFrame запихать в HUD_Frame, а те, что в ItemPostFrame, оставить в HUD_WeaponsPostThink, это избавит систему оружий от глюков. Но ссылку на инфу о предиктинге можно получить только из HUD_PostRunCmd. Так что проще вообще нафиг вырезать клиентские пушки. От них один геморрой, а лаг в полсекунды при стрельбе не так уж заметен при игре по сети.
Ku2zoff SVC_WEAPONANIM же резетнет саму анимацию? Мне нужно менять боди без смены анимации, поэтому полез напрямую в ViewModel.
Возможно действительно стоит клиентские пушки убрать, тем более, что мне по большей части для сингла нужно.
__________________
I'm on github
I'm on opendesktop.org
Помню я с этим дерьмом боролся на уровне движка. Вроде даже победил.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Как сделать чтобы из противоположных кнопок типа W и S передавалась всегда только та которая была нажата последней?
Куда передавалась?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Crystallize "отжимай" противоположную кнопку в коде инпута:
1 | void IN_ForwardDown(void) |
2 | { |
3 | KeyUp(&in_back); // новое |
4 | KeyDown(&in_forward); |
5 | gHUD.m_Spectator.HandleButtonsDown( IN_FORWARD ); |
6 | } |
Перегрев
Я тут запил перегрев оружия, и думаю, может сделать из этого нубо-тутор?
Собсна демонстрация онного https://youtu.be/xZpEV5QODLQ
__________________
И главное, Артём, помни: не ешь желтый снег!
hgrunt_2020 а где коронное "Пацаны, я маслину поймал!"? Непорядок
Ну а почему нет? Выложи, мб кому-то пригодится.
__________________
И главное, Артём, помни: не ешь желтый снег!
На вью модели можно регулировать кости?
А на вью модели можно регулировать кости? ну контролировать, как голову у нпс, мне для индикатора надо.
Если да то как контролировать эту кость?
__________________
И главное, Артём, помни: не ешь желтый снег!
При сборке модели очевидно надо создать контроллер кости.
__________________
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 проверить m_pCurrentEntity на вьюмодель, а потом крутить у этой энтити контроллер. Положение контроллера слать на клиент пользовательской мессагой. Наверное, для вьмоделей можно даже сделать блендинг между анимациями. Например, чтобы не было резкого перехода между idle/fidget и reload.
Ku2zoff
Даже интересно стало про блендинг анимаций на вью модели
__________________
И главное, Артём, помни: не ешь желтый снег!
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. Насколько мне известно, движок этого не делает.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Значит задача такая есть 2 модели с одинаковым скелетов но разным порядком костей. Ну и короче мне надо чтобы пересадить анимации с одной модели на вторую и возникает такой вопрос - Как можно свапать кости подскажите или может бытт есть прога для этого?
Если милка импортирует анимации некорректно, стоит попробовать во фрагмоушене.
Нет дело не в милке так как это изначально модели с разным порядком костей.
Добавлено 28-10-2021 в 18:02:
Потому что одна модель из одного мода а другая из другово и имеет другие анимации и иной порядок костей
Типа кости ног в одной имеют номера 3, 4, 5 а во второй они уже где-то в конце и там 28,29,30
Ну и если так компиляции делать то анимация выкручивает эти ноги под не естественым углом
Поиграл в SWAT Remastered от Aynekko, там встречается странный баг когда на определённых брашах, мировых, фонарик не рисуется. Там же рядом есть лифт который едет рывками если на нем убить слишком много солдатиков (они в итоге проваливаются насквозь и тогда он едет) но это-то как раз известно, я думаю.
Наверняка многие замечали, что trigger_hurt не воздействует на стоящих на месте монстров. Собственно, с чем это связано, и какие есть варианты решения?
__________________
I'm on github
I'm on opendesktop.org
Потому что триггеры действуют наоборот. В функции 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'
Да, точно, помню такое.
А есть ли способ проверить как-то с другой стороны? В 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
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, хмм, попробовал с UTIL_SetOrigin( pev, pev->origin ) в MonsterThink, ничего не поменялось.
Карта с примером в аттаче.
__________________
I'm on github
I'm on opendesktop.org
Может вызываешь не оттуда?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, а там большой выбор? Вот изменение https://github.com/FreeSlave/hlsdk-...4b9b852949f54a9
__________________
I'm on github
I'm on opendesktop.org
Пихни алерт в 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'
Дядя Миша, добавил в CTalkMonster::Touch. На trigger_hurt не вызывается.
__________________
I'm on github
I'm on opendesktop.org
в 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'
Можно ли передать на клиент отрицательный iuser(1-4)? Столкнулся с тем, что приходит 0. Положительное число видит.
__________________
Мой мод на Xash
Aynekko попробуй увеличить количество бит в delta.lst до 8. Как, например, у sequence и gaitsequence. Там точно и стопудово приходят отрицательные значения.
Ku2zoff спасибо, что откликнулся, в entity encode у меня уже стоит 16, 1.0 у всех iuser. Но даже число -3 не проходит, пишет ноль. Больше нуля выставляю сразу все четко. Если это важно, то ставлю iuser3 в спаун солдата, на карте только я и солдат, пустая коробка. Пишу 555, вижу на клиенте 555, пишу отрицалку вижу ноль...
__________________
Мой мод на Xash
Aynekko тогда не знаю, в чём дело. Поступи по-другому. Вместо отрицательных чисел используй какой-нибудь диапазон. Например, в качестве положительных 1-255, а в качестве отрицательных 256-511. То есть, у тебя на клиенте проверка была
if (entity->curstate.iuser4 < 0) |
if (entity->curstate.iuser4 > 256) |
if (entity->curstate.iuser4 > 256) |
entity->curstate.iuser4 = 256 - entity->curstate.iuser4; |
state->iuser1 = ent->v.iuser1; // flags |
state->iuser2 = ent->v.iuser2; // flags |
state->iuser3 = ent->v.iuser3; // vertexlight cachenum |
state->iuser4 = ent->v.iuser4; |
В принципе я уже решил проблему, заведя новый pev-effects, но все равно хотелось бы разобраться.
__________________
Мой мод на Xash
DT_SIGNED
Добавлено 09-11-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'
__________________
Мой мод на Xash
Может просто множить искомое число на -1 при получении?
__________________
Мой мод на Xash
Хотел на клиенте повращать браш. Обнуляю там angles и параллельно постоянно считаются и задаются новые координаты. Но он не крутится.
Сделал ту же самую энтитю, но точечную, с моделькой - крутится.
Судя по репортам консоль, брашевая энтитя приходит на клиент, координаты так же считаются и задаются. Если делать то же самое на сервере, то браш крутится. Какая-то особенность для брашевых энтитей?
__________________
Мой мод на Xash
Aynekko с сервера приходят координаты и углы, а клиент уже по ним производит трансформацию. Учти, что брашевая модель - субмодель мира.
1 | static Vector Angles; |
2 | Angles.z += 200 * g_fFrametime; |
3 | if( Angles.z > 359 ) Angles.z = 0; |
4 | e->angles = Angles; |
__________________
Мой мод на Xash
Не, тоже не хотит. И моделька тогда тоже не крутится, что интересно. Только если просто angles менять
Добавлено 14-11-2021 в 14:59:
Все, нашел. В R_AddEntity нашел, где трансформация браша происходит.
if( clent->model->type == mod_brush ) |
clent->hCachedMatrix = GL_CacheState( clent->origin, clent->angles ); |
__________________
Мой мод на Xash
Интересно, а как на клиенте сдвинуть счетчик патронов? Пока не могу найти где. А то я когда добавлял вторичную обойму для Акимбо-Подствола, он стал шире, и иконка патронов уехала за экран.
Добавлено 23-11-2021 в 15:51:
И вопрос по R_StreakSplash, как в нем указывается цвет? Там color не rgb, а просто одно число.
x = ScreeinWidth - ширина спрайта - отступ. |
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); }
Chyvachok софт-партикли делаются через шейдеры
Но твоя идея тоже интересная.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Мне бы хотя бы начало лучика мягким сделать, идея есть, грубо говоря вместо одного 2 луча нарисовать, один начальный короткий отрезок, с прозрачностью 0 в начале луча, и непрозрачный в конце, и дальше как этот отрезок заканчивается просто нарисовать дальше второй луч, полностью непрозрачный, но вот как это закодить то, в этом pTriAPI я вообще не очень шарю в тех же координатах для вертексов, да и вообще с этими векторами наверное больше всего геморроя, я еле смог заставить на клиенте спавнить в эвенте оружия R_Sprite_Trail чтобы они корректно спавнились, тоже возня с векторами была.
Я просто вспомнил как делал в ксаш-моде программный экспоненциальный туманчег партиклям
Там же рядом можно было замутить и повертексные софт-партикли через 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'
Дядя Миша
Софт партикли требуют ditect X 11 и старше. Не?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Можно ли как-то заставить построитель нодов коннектить ноды находящиеся по обе стороны от двери?
Из-за отсутствия связи монстры часто тупят на проходах.
__________________
I'm on github
I'm on opendesktop.org
__________________
Мой мод на Xash
__________________
I'm on github
I'm on opendesktop.org
В CGraph :: HandleLinkEnt есть код, связанный с этим
if ( FClassnameIs( pevLinkEnt, "func_door" ) || FClassnameIs( pevLinkEnt, "func_door_rotating" ) ) |
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 | .......... |
__________________
Мой мод на Xash
Aynekko, спасибо. Но саму структуру WorldGraph я бы не советовал трогать (ну или не забудь перегенерировать графы с нуля), лучше уж отдельную глобальную переменную.
__________________
I'm on github
I'm on opendesktop.org
В этом случае там ничего важного и не трогается, этот новый бул ставится true только после начала генерации вейпоинта, если его нет, и false при завершении операции. Может там уже и есть даже подобный бул, я просто решил завести новый как раз чтобы ничего не трогать. В любом случае, графы еще будут миллион раз переделаны, т.к. мод в глубокой разработке
__________________
Мой мод на Xash
Aynekko, я про то, что структура графа читается и сохраняется в файл напрямую.
Я как-то тоже добавлял в CGraph переменную, потом у меня монстры где-то то ли невалидный вектор получали, то ли ещё что, и кружились вокруг своей оси, когда хотели куда-либо пойти
__________________
I'm on github
I'm on opendesktop.org
__________________
I'm on github
I'm on opendesktop.org
Стоп. Проверил обычную халфу, в ней так и показываются связи. Только не на всех картах их почему-то видно.
Добавлено 05-12-2021 в 19:47:
Нашёл статью о нодах на TWHL. Цитата:
__________________
Мой мод на Xash
Я поподробнее посмотрел код реакции монстров на двери и он вообще довольно опасный.
Например:
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
__________________
Мой мод на Xash
__________________
I'm on github
I'm on opendesktop.org
Ещё заметил, что связи не строятся через func_monsterclip. Пока не нашёл, как чинить. У кого-нибудь есть мысли на этот счёт?
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Такой вопрос, никто не делал луч моделькой? Типа как у Шафта в 1 Квейке? Я смотрел код dmc, как я понял там луч средствами ХЛ рисуется, через R_BeamPoints.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
Ну тады ой Но всё равно надо копать в этом направлении.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Копать скорее надо в направлении Walk Rejection. Я создал карту-коробку с двумя нодами. Без препятствий между ними связь есть. Если поставить func_monsterclip, то связь не рисуется.
В логе
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Такой вопрос, а что делает таких монстров как барнаклы и турели не разрываемыми на куски? У Турелей тчинк TurretDeath вместо killed используется. Барнаклов смог сделать, но опять же - их разрывает только если их взорвать сразу, уже убитого нельзя на ошметки разнести, а у турелей, попытка моя как то их сделать разбиваемыми на куски сделала их не убиваемыми.
Chyvachok у барнакла своя функция Killed, из неё не вызывается GibMonster. То же самое с турелями.
Ku2zoff У барнакла может быть дело в этих строках в Killed?
pev->solid = SOLID_NOT;
pev->takedamage = DAMAGE_NO;
По идее из-за этого нельзя ему нанести урон после того как он убит, но я не знаю какой solid у трупов других врагов, чтобы можно было из оружия урон нанести и при этом сквозь них пройти можно было.
Это влияет да. А ещё вот:
1 | if ( HasMemory( bits_MEMORY_KILLED ) ) |
2 | { |
3 | if ( ShouldGibMonster( iGib ) ) |
4 | CallGibMonster(); |
5 | return; |
6 | } |
Насчет этих двух строк, если убрать 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 ); }
CBarnacle :: WaitTillDead тут возвращай ему солидность. Может подходящее место. А вообще, чтобы жертва не застревала, можно воспользоваться груптрейсом.
Ku2zoff Я не могу найти какая солидность у трупов, они получают урон из оружия, и в то же время сквозь них можно пройти.
Добавлено 07-12-2021 в 14:44:
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; } } }
pev->groupinfo = 1; |
pVictim->pev->groupinfo = 1; |
UTIL_SetGroupTrace(pev->groupinfo, GROUP_OP_NAND); |
UTIL_SetGroupTrace(pVictim->pev->groupinfo, GROUP_OP_NAND); |
UTIL_SetGroupTrace(pev->groupinfo, GROUP_OP_AND); |
UTIL_SetGroupTrace(pVictim->pev->groupinfo, GROUP_OP_AND); |
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 ) ); }
Chyvachok особо ничем, разве что удобочитаемость снижается.
Добавлено 08-12-2021 в 02:42:
Как обещал - секвенции дробовика и пинка хедкраба ногой в аттаче. Надо немножко их допилить. Для M4 секвенции можно выдрать из оригинальной модели мода Zombie Edition.
int FindShortestPath ( int *piPath, int iStart, int iDest, int iHull, int afCapMask ); |
int FindShortestPath ( int *piPath, int iStart, int iDest, int iHull, int afCapMask, bool dynamic = false ); |
if( m_fRoutingComplete ) |
if( !dynamic && m_fRoutingComplete ) |
if( !HandleLinkEnt( iCurrentNode, m_pLinkPool[m_pNodes[iCurrentNode].m_iFirstLink + i].m_pLinkEnt, afCapMask, NODEGRAPH_STATIC ) ) |
if( !HandleLinkEnt( iCurrentNode, m_pLinkPool[m_pNodes[iCurrentNode].m_iFirstLink + i].m_pLinkEnt, afCapMask, dynamic ? NODEGRAPH_DYNAMIC : NODEGRAPH_STATIC ) ) |
__________________
I'm on github
I'm on opendesktop.org
__________________
Мой мод на Xash
__________________
I'm on github
I'm on opendesktop.org
1 | if ( FClassnameIs( pevLinkEnt, "func_door" ) || FClassnameIs( pevLinkEnt, "func_door_rotating" ) ) |
2 | {// ent is a door. |
3 | if( !WorldGraph.m_fRoutingComplete ) |
4 | return TRUE; |
// 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
Да, похоже что-то не так с 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
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
Aynekko, хочешь сделать, чтобы монстры сами разбивали breakable'ы на своём пути? В общем случае лучше такое не позволять. Вдруг это взрывные бочки
В идеале такое можно было бы реализовать только для специально помеченных брекаблей и по-разному для отдельных монстров. Например, вполне можно представить, что агрунт снесёт какие-нибудь коробки просто пройдя сквозь них А хуман грунты могут использовать пинок для поломки.
__________________
I'm on github
I'm on opendesktop.org
__________________
Мой мод на Xash
__________________
I'm on github
I'm on opendesktop.org
Хехех, ну так дело в том, что ящик стоит посреди коридора там никак не обойти. Почему я, собственно, и сделал это вообще.
__________________
Мой мод на Xash
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);
В общем еще вот, к примеру когда я сделал Акимбо Хорнет заметил, если спавнить Хорнетов сразу при стрельбе с двух рук (первичная стреляет по очереди, левая правая, вторичная сразу с двух рук), и оставить код что подправляет траекторию чтобы они летели в центр экрана - то они в друг друга врезаются и падают, в общем опять же, как этот груп инфо сделать так чтобы если что хорнеты пролетали сквозь друг друга, и в тоже время попадали в НПС и наносили им урон, пусть я и убрал подправление траектории в прицел, все равно видно что они бывают в друг друга врезаются.
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 | } |
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 | } |
Ku2zoff Вроде понял, в UTIL_SetGroupTrace в первую колонку идет номер группы, а во вторую тип коллизии, GROUP_OP_NAND или GROUP_OP_AND .
А вообще, обязательно ли изменять жертву? Просто это еще думать надо куда этот код всунуть еще, чтобы он точно вызвался, жертва ведь может быть кем угодно, и игрок и НПС-ы, это метод надо искать что у всех всегда вызывается.
В Теории достаточно снарядам выставить к примеру при спавне
pev->groupinfo с номером (как я понял любое число кроме 0) и UTIL_SetGroupTrace(this->entindex(), GROUP_OP_NAND);, это по идее должно предотвратить их коллиззию с друг другом и в тоже время оставить коллизию с монстрами? Допустим если я хочу сделать энергодробовик, и хочу быть уверенным что снаряды с собой не сколидят при выстреле.
С кусками тоже придумать надо, надо чтобы они вообще ни с чем кроме геометрии не колидили, можно хоть на клиенте сделать, но они вроде как будут сквозь брашевые энтити вроде лифтов и дверей проходить, тоже не хорошо. Плюс у меня есть еще куски что к стенам липнут, как их портануть на клиент и еще заставить колидить с брашевыми энтитями и чтобы они двигались тоже с дверями и прочим.
Chyvachok я тут покумекал. Короче, с барнаклом решается всё просто:
1 | if (HasMemory(bits_MEMORY_KILLED)) |
2 | { |
3 | if (ShouldGibMonster(iGib)) |
4 | CallGibMonster(); |
5 | return; |
6 | } |
7 |
8 | Remember(bits_MEMORY_KILLED); |
if (ShouldGibMonster(iGib)) |
{ |
CallGibMonster(); |
return; |
} |
if (pev->solid == SOLID_NOT) pev->solid = SOLID_SLIDEBOX; |
if (pev->takedamage == DAMAGE_NO) pev->takedamage = DAMAGE_AIM; |
Кстати, а как сделать спрайт на клиенте который через ТриАпи рисуется чтобы на него влиял свет? Сделал себе следы крови за кусками, которые на Авроре сделаны, но на партикли не влияет свет, для плазмы какой нибуть или огня ракеты норм, но для дыма и кровяки надо напильником подпилить эту систему.
В ксашевской авроре есть освещаемые партиклы.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша а какие ключевые слова отвечают за освещение? CONTENT_SPOTLIGHT или m_iLightingModel?
Добавлено 09-12-2021 в 20:01:
Еще вот, в КсашХТ в 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'
Дядя Миша собственно а как через 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.
__________________
I'm on github
I'm on opendesktop.org
Там где рисуется партикля в 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 такого вида, и по одной координате.
Исправил застревание гибсов в умирающем барнакле:
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 | } |
Ku2zoff может такие вещи оформлять отдельными сниппетами-темами в туторах? Яуже со счету сбился сколько вы фиксов к ксашу сделали.
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(); } }
lightColor = lightColor * (1.0f / 255.0f); |
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); } |
Ku2zoff тут даже не в *= дело - сам LightAtPoint не работает.
Добавлено 09-12-2021 в 22:21:
Он вместо освещенности в диапазоне 1-255 выдает некое число которое зависит от того куда смотрит игрок. pDraw->origin это ж позиция партикли? Хотя я пробовал и part->origin и что только можно. ХЗ почему в КсашХТ оно работает а тут нет.
Вообще, в ReGameDLL расширенный класс Vector, который позволяет всякие операции вроде
pev->velocity /= 2; |
pev->velocity = pev->velocity / 2; |
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); или нет.
Color 0.749020 0.749020 0.533333 |
У меня по всем координатам кроме одной 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 и так далее.
Chyvachok попробуй засунуть в HUD_DrawTransparentTriangles
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); |
v_origin это над методом void DLLEXPORT HUD_DrawTransparentTriangles( void ) добавить extern vec3_t v_origin;?
Пробовал пишет 0 0 0 снизу OPENGL_ERROR: GL_INVALID_ENUM_CALLED
Chyvachok да, верно. Интересная ошибка. Какой движок и какой мод?
Кстати этот же OPENGL_ERROR: GL_INVALID_ENUM_CALLED пишет и когда в партилклях вызывается.
Добавлено 09-12-2021 в 22:53:
Двиг Ксаш, код обычный ХЛСДК, не КсашХТ.
В голдсорсе мой код работает и пишет правильные значения, попробуй запустить под ним.
Вроде заработало в HUD_DrawTransparentTriangles, дело было в triangleapi.h, у меня изначально не было там LightAtPoint, я скопировал только LightAtPoint, теперь я скопирал вообще все что было из более нового СДК, вроде теперь пишет что надо. Остальные методы, там Color4fRendermode, BoxInPVS и так далее.
Добавлено 09-12-2021 в 23:01:
Что-то вроде в духе такого уже выводит 0.749020 0.749020 0.533333 и в коде партиклей.
Я не помню откуда качал СДК но с задницы какой-то, забыл что он на Гите есть.
Добавлено 09-12-2021 в 23:28:
Чтобы последний сдк был совместим с ксашем, надо вернуть старый инпут из версии 2.3, и ещё прилинковать старую vgui.lib оттуда же. Короче, немного работы с клиенткой. В XDM 3.0.3.8 всё это можно подглядеть, Мастер обернул #ifdef'ами все нужные места.
Добавлено 10-12-2021 в 04:35:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В общем сделал эту аврорку, чтобы свет на нее влиял, и приделал опцию которая бы читалась из txt файла и влияла, освещается партикл или нет.
Осталось придумать с сервером, Аврора не сохраняется, и след исчезает у сущности если сохранится и загрузится, я вот думаю, а как сделать функцию, которая бы вызывалась только после того как игрок загрузился? Которая бы след восстанавливала бы.
Chyvachok SendInitMessage из первой паранойи. Ну или Xash PostActivate System. Первое работает и в мультиплеере. Второе только в сингле.
Добавлено 10-12-2021 в 20:01:
Ещё DesiredAction из спирита. Правда оно больше для мовевитча, и посылка мессаг на клиент сделана через него, потому что по таймингам попадает в нужный промежуток.
Еще тоже с кусками и авророй, у меня след удаляется в функции WaitTillLand, но как я понял если куски пропадают из поля зрения, то игра их удаляет, а след остается, не очень удобно что вручную нужно удалять саму систему: https://imgur.com/a/gifVyNo
На этой карте видно как вообще игра их удаляет чуть ли не на глазах, а система остается, загвоздка в том что я не нашел через какую функцию игра чистит куски, чтобы туда код удаляющий след влепить.
Добавлено 10-12-2021 в 15:16:
Подскажите пожалуйста. Перенес TE_GUNSHOTDECAL на клиент. Код-то я сделал:
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; |
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
Ну и говно это Аврора.
Добавлено 10-12-2021 в 22:17:
Код из Спирита-Паранои не дописан толком, а из Ксаша попробуй утяни, там ведь рендер свой, тем кто шарит в програмировании да, проблем нет никаких, но тем кто нет, очень сложно. Не удивительно честно учитывая как она пашет, что никто не юзал ее для следов-снарядов кроме мода Alternative Way.
Она еще глючит начинает когда партиклей много спавнится, к примеру когда сразу много врагов гибаешь, они перестают исчезать и прочая дичь начинается, тоже самое с следом снарядов. Месага удаления тоже, она вообще не принималась пока я не пофиксил, но опять же - она резко удаляет партикл систему, то есть спрайты вместо того чтобы сами по себе растворится резко исчезают.
Chyvachok
В XDM погляди партеклсистему.. Она тпм годная и исходники открыты.
[CFR] B@N@N она добавлена уже, пусть и с более старой версии, но там немного другие функции. Аврора это всякий там дымок, или следы типа след снаряда, но работает она через зад, как оказалось. А фиксить честно пока не осилил, в КсашХТ лучше работает вроде, хотя опять же, надо тестить, но там рендер другой, надо шарить как код этого клиента устроен, чтобы портануть хотя бы.
Добавлено 10-12-2021 в 23:29:
У ХДМ-овской тоже есть недостатки, она вся захардкодена, любое изменение требует компиляции движка, не читает параметры как автора из текстовых файлов и нету никакого визуального редактора.
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; }
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Такой вариант сделать другой цвет крови при выстреле в голову нормальный? Пока вижу что есть шанс если монстра разорвет на мясо выстрелом в голову, то куски будут желтую кровь оставлять, а если в тело то красную. Хотя как вариант влепить в 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; }
Короче, я пошёл по пути самурая. CZombie::TraceBleed с аргументом цвета крови, что логично. CZombie::TraceAttack, CZombie::GibMonster, CZombie::SpawnGibs. Последнее делать не хотелось, но гибсы из SpawnRandomGibs по-умолчанию принимают цвет крови владельца. Пришлось сделать для зомби кастомную функцию, чтобы задать цвет вручную.
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 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша а где всю эту математику поглядеть? Какие функции в gl_decals.c?
Ku2zoff
https://en.wikipedia.org/wiki/Suthe...dgman_algorithm
__________________
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'
От задач зависит. По крайней мере никто не заставляет пограммистов придумывать новые математические решения. Но вот воплощать в коде уже имеющиеся - вполне себе.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
Мой мод на Xash
Разве мы в прошлый раз не пришли к тому, что трансформация модели идет через modelview матрицу, а источники света этого не учитывают?
Я смотрел в параное 2, там по сути все точно так же за некоторыми исключениями (копипастил - все сломалось). Точно так же строится rotationmatrix. Вот и говорю, какие-то замуты с матрицами мира/модели/света, как одно к другому складывается я вообще не понимаю.
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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 в 22:12:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
// build the rotation matrix |
m_pModelInstance->m_protationmatrix = matrix3x4( origin, angles, scale ); |
m_pModelInstance->m_plightmatrix = m_pModelInstance->m_protationmatrix; |
__________________
Мой мод на Xash
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'
__________________
Мой мод на Xash
Посмотрел, там всё еще интереснее. Оказывается для ксаш-мода этого фикса с декалями вообще нет, но для паранои он есть. В чём тут смысл - на статик с пользовательским скейлом декаль тоже ложится не оригинального скейла.
А в зависимости от размера этого статика. Если модель ужата по одной из осей, то декаль тоже ужмётся или растянется, чего естественно быть не должно. В параное, собственно, свет считается в мировом пространстве, поэтому там не нужны обратные преобразования. Но все вот эти VectorIRotate и VectorITransform они неполноценные преобразования.
Они скейл принимают всегда еденичный. Зато быстро. Поэтому надо построить m_plightmatrix с обратным скейлом. Для еденичного разницы всё равно не будет.
Чот такое попробуйте:
// 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'
__________________
Мой мод на Xash
Ну что увы? У нас теперь есть две матрицы. Они обе прямые, но в одной из них инверсный скейл. Значит ту вторую нужно использовать везде, где она вызвает функцию VectorIRotate или VectorITransform.
r_studio.cpp:4046
tr.modelorg = m_pModelInstance->m_plightmatrix.VectorITransform( RI->vieworg ); |
Vector lightorg = m_pModelInstance->m_plightmatrix.VectorITransform( pl->origin ); |
tr.modelorg = m_pModelInstance->m_plightmatrix.VectorITransform( RI->vieworg ); |
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'
Особо ничего не поменялось. Аттенюация сменилась на обратную, теперь огромные модели наоборот видны издалека, а маленькие освещаются вплотную (раньше было с точностью наоборот).
Вот видео. Сначала тут точечный источник, закрепленный на игроке, потом показываю обычный фонарик:
https://www.youtube.com/watch?v=Pbi_Q2yph0A
Правильность наложения теней можно проверить по брашевому полу. На некоторых моделях от омнилайта она ложится правильно, потому что у них angles 0 0 0. А другие повернуты и все съезжает. Если модель лежит на боку, то тень тоже на боку будет. А от прожектора почему-то тени ложатся всегда правильно.
Видимо, потому что подход разный:
shadow = ShadowProj( var_ShadowCoord, u_ShadowParams.xy, dot( N, L )); // прожектор |
shadow = ShadowOmni( -var_LightVec, u_ShadowParams ); // динлайт |
__________________
Мой мод на Xash
Эй-эй, так я про тени ничего не говорил, только про свет. А свет вроде как правильно начал накладываться. Он же у тебя раньше обрезался?
Добавлено 19-12-2021 в 13:40:
matrix4x4 lightView = pl->modelviewMatrix.ConcatTransforms( m_pModelInstance->m_protationmatrix ); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Про тени я без претензий, просто показываю наблюдение. Проекция теней от динлайта не учитывает angles модели. И скейл кажется тоже...
__________________
Мой мод на Xash
Если так и не разберёшься, может весной найду время.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Может проще избавиться от локальных координат и сделать освещение динлайтами в мировых? Знать бы хоть где посмотреть в параное. Шейдеры выглядят плюс-минус одинаково.
__________________
Мой мод на Xash
Можно завести отдельный юниформ для скейла, поворот и позицию передавать через кость и оставить в покое modelview матрицу?
__________________
Мой мод на Xash
У кого-нибудь бывало, что при переходе на следующую карту нод граф создается, но с невалидными связями? (так что 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
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
Я в Fitzquake столкнулся с парой странных вещей. Например bound не работает, хотя никаких ошибок нет, просто не даёт эффекта. Или VectorAngles с какого-то момента стал корруптить тот компонент вектора который в коде пишется первым. Второй компонент пишется нормально. Причем если писать сначала в локальную переменную а потом из неё в компонент вектора, то ничего не корруптится, просто получается ноль. Я сейчас мучаю Cam_UpdateForDrawing.
В аттаче карта. Барник стоит посреди пустой комнаты, но покрывается желтыми частицами как если бы застрял (stuck in wall--level design error). Похоже, происходит так, только если он стоит достаточно близко к центру карты.
Собственно, желтые пятна не проблема, но хотелось бы узнать, почему игра считает, что он застрял?
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну bound это мини функция которая ограничивает число между двумя крайними значениями: bound(a, x, b)
__________________
Мой мод на Xash
__________________
I'm on github
I'm on opendesktop.org
Я его просто вниз опустил и скомпилил, не было желтых партиклей о.о
__________________
Мой мод на Xash
Aynekko, а ты перекомпилировал оригинал (без изменения высоты)? Может, зависит от компиляторов. Ну и я запускаю на голдсорсе на обычной ХЛ, если что.
__________________
I'm on github
I'm on opendesktop.org
Слушай, а теперь интересно. Еще раз взял оригинал, сколько ни двигаю вниз - все равно партикли. Не думаю, что дело в компиляторах. Наверное я чуть вбок его подвинул.
Добавлено 22-12-2021 в 21:23:
Ага. Проверил со всех сторон. Партикли возникают, если барник находится в районе 32 юнитов от центра. Со всех сторон, если смотреть на виде сверху. Ставил его на расстоянии 31-32-33 по всем осям. Высота всегда была одинаковая - 3 юнита от пола. Интересно. Наверное, какая-то движковая особенность.
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
В общем там в матчлибе я не объявил в хидере новую функцию. И потом когда я ее использовал в коде, парой строчек ниже там была эта VectorAngles которая и стала давать порченый результат.
Вопрос такой вылез, в ксаше есть папка scripts, там можно сделать фон в меню виде карты, но какие ещё есть скрипты по мимо того же меню?
__________________
И главное, Артём, помни: не ешь желтый снег!
Не могу никак побороть баг с лучом трипмины. На другом конце карты есть одна трипмина, луч у нее активируется через 2.5 секунды. Естественно не в PVS. Вот две ситуации:
1) Через 5 сек вылетаю с ноуклипом, лечу туда. Луч есть.
2) Лечу к месту трипмины по карте, НЕ вылетая за ее пределы, чтобы не задеть PVS мины раньше времени. Прилетел к мине, луча нет.
Изредка бывает, что во второй ситуации луч таки есть. Процентов 10.
На клиенте есть функция R_AddEntity, где проверка на ET_BEAM. Когда луча не видно, эта проверка не срабатывает. Значит луч не приходит на клиент вообще.
Сделал вот так. Это в MakeBeam у трипмины
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() ); |
__________________
Мой мод на Xash
В общем решил, что я смогу обхитрить мину и завел ей спаунфлаг "стартовать выключенной", чтобы активировать по триггеру (по тихому и без звуков), когда игрок гарантированно будет в PVS. И это не сработало
- спавнюсь, лечу к мине ноуклипом, запускаю - луч есть;
- спавнюсь, лечу к мине по карте, не вылетая за пределы карты. Вижу ее в прямой видимости, активирую. Луча НЕТ. MakeBeam срабатывает - вывел в консоль. А луча нет... Делаю сейврестор, луч появляется.
Это какой-то несусветный бред. Если раньше я мог хоть идентифицировать где багуется примерно, то сейчас я даже примерно не могу понять, что не так.
Добавлено 25-01-2022 в 22:25:
Но вот одну деталь обнаружил. Спавнюсь и сразу же делаю сейврестор. То есть мина еще не успела сделать луч. И о чудо, луч есть всегда. Вроде как. Еще потестю.
Добавлено 25-01-2022 в 22:29:
Да, так и есть.
Я вот знаком с ситуацией, когда что-то не работает после сейврестора. Но чтобы не работало до сейврестора - это просто вау.
__________________
Мой мод на Xash
Aynekko не знаю, связано ли это с твоей проблемой, но порядок строк в AddToFullPack сначала отсекает энтитю по PVS, а потом уже задаёт ей тип ENTITY_BEAM. Который, скорее всего, особым образом обрабатывается движком.
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 | } |
1 | state->entityType = ENTITY_NORMAL; |
2 |
3 | // Flag custom entities. |
4 | if ( ent->v.flags & FL_CUSTOMENTITY ) |
5 | { |
6 | state->entityType = ENTITY_BEAM; |
7 | } |
REMOVE_ENTITY(ENT(pev)); |
baseline->effects = entity->v.effects; |
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Мне сказали, чтобы для статиков отключать тени через EF флаг.
__________________
Мой мод на Xash
Ну сделай проверку там. Если playermodelindex равен нулю - это значит спавнится статик.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Да, баг больше не проявляется. Надеюсь правильно поставил
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 | // ... |
__________________
Мой мод на Xash
__________________
Мой сайт
Xash3D Modding Discord
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой сайт
Xash3D Modding Discord
там какая-то часть эффектов - совсем не эффекты, очевидно же.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
На скрине совсем небольшой кусочек карты. В логе вот такое:
Warning: too many light styles on a face (2111 faces overflowed) |
Warning: too many light styles on a patch (48393 patches overflowed) |
-gamma 0.7 -smooth 75 -blur 4 -bounce 8 -threads 7 |
1 | 498 base patches, required 130.34 Kb |
2 | 13 direct lights |
3 | <...> |
4 | total facelight data: 3.45 Mb |
5 | <...> |
6 | 55490 luxels affected by direct light |
7 | 161001 luxels reached by direct light |
8 | <...> |
9 | BounceLight 8: |
10 | 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% (0.00 secs) |
11 | Warning: too many light styles on a face (2111 faces overflowed) |
12 | Warning: too many light styles on a patch (48393 patches overflowed) |
13 | <...> |
14 | Reduce lightmap from 739.97 Kb to 673.98 Kb |
__________________
Мой мод на Xash
А не было такого, что если лампочке прописать имя, то ей назначится какой-то лайтстиль, отличный от 0?
Добавлено 29-01-2022 в 12:19:
ncuxonaT
1 | void CLight :: Spawn( void ) |
2 | { |
3 | if (FStringNull(pev->targetname)) |
4 | { // inert light |
5 | REMOVE_ENTITY(ENT(pev)); |
6 | return; |
7 | } |
8 |
9 | if (m_iStyle >= 32) |
10 | { |
11 | // CHANGE_METHOD(ENT(pev), em_use, light_use); |
12 | if (FBitSet(pev->spawnflags, SF_LIGHT_START_OFF)) |
13 | LIGHT_STYLE(m_iStyle, "a"); |
14 | else if (m_iszPattern) |
15 | LIGHT_STYLE(m_iStyle, (char *)STRING( m_iszPattern )); |
16 | else |
17 | LIGHT_STYLE(m_iStyle, "m"); |
18 | } |
19 | } |
Похоже да, из-за кучи лампочек. Там есть 3 лампочки, которые вкл/выкл, но 2 из них с очень маленьким радиусом (25 четвертое число).
Действительно задал дверям блокировку света, 2111 фейсов уменьшилось до 161. Спасибо.
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вдогонку к проблемам с освещением. Никак не могу побороть вот этот лайтлик. Свет идет, судя по всему, из другой абсолютно точно замкнутой комнаты. На скрине слева. Отчего это вообще зависит? Трасса в rad проходит сквозь браши?
__________________
Мой мод на Xash
Из скрина ничерта непонятно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Левая полоса светлая. Должна быть темной. Вторая полоса уже освещена фонариком. Никак не могу понять, откуда это световое пятно идет.
__________________
Мой мод на Xash
Геометрию покажи, где там лампочки, где что. Вид сверху.
И можно снабдить пояснительными стрелками, где по твоему утечка.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вот уж как смог показываю. Две комнаты. Потолки я скрыл в джеке, чтобы было видно (в игре они есть). С gl_wireframe одна комната не рисует другую, и обратно. Так что просвета нет.
Тут две лампы - красная в одной комнате, текстурная белая в другой.
- удалил только красную лампу - пятна нет
- удалил только текстурную лампу - есть еле-еле видное красноватое пятно на том месте.
- когда есть обе лампы, там яркое белое пятно.
- пятно проявляется, если у красной лампы радиус больше 50 (ну или как он правильно называется, четвертое число)
- поставил радиус 140 у красной...пятна нет О.о
Добавлено 29-01-2022 в 17:14:
С радиусом 140 не прокатило, скомпилил бОльшую часть карты и опять пятно, хотя в этом примере оно уже пропало...
https://drive.google.com/file/d/1eS...iew?usp=sharing
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
привет всем, кто знает, есть ли в халфе такая команда, позволяющая смотреть хит боксы тригеры энтити прямо в игре ?
Добавлено 05-02-2022 в 21:56:
помню что такое было, но что плохо помню
__________________
илья
r_drawentities 3 - хитбоксы
showtriggers 1 - но сработает после перезагрузки и не со всеми компиляторами карт. С VHLT не сработает, к примеру.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
во спасибо как раз то что нужно
Добавлено 05-02-2022 в 22:31:
а вот это команда showtriggers 1 не работает.
__________________
илья
на оригинальных халфовских картах работает. Но только после перезагрузки уровня.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
в ксашмоде надо ввести gl_renderer 0 и showtriggers_toggle
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Там интересно. Проверка на состояние квара есть, а сам квар похоже выпилили.
Но в Ксаше я его вернул, там эта штука работала.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А почему MSG_WriteShort обнуляет 1.000?
Crystallize попробуй явным образом привести его к шорту.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша (short) не помогает, пришлось менять на ReadFloat-WriteFloat
Добавлено 08-02-2022 в 01:32:
Наверное что-то сломается, но пока не заметил.
^лол нет, не об этом
Что может быть не так с трейслайном в фитцквейке? Как я ни пытаюсь сделать все правильно, длина трейса выдается всегда сотнями юнитов, и он визуально проходит сквозь стенки.
И еще, как бы вы алггритмизировали ситуацию когда игрок заворачивает за угол коридора? Вот этот выпирающий угол, можно ли его аналитически протрейсить и обнаружить?
Всё с трейслайном в порядке, ты им как-то неправильно пользуешься.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша обнаружить выпуклые пары смежных фейсов под прямым углом друг от друга. Или смежные пары лифов расположенных буквой г
Ты какую-то бредятину щас написал, не?
Еще раз - зачем тебе угол обнаруживать? С какой целью?
Добавлено 20-02-2022 в 16:09:
Тебе именно угол или просто дверной проём?
Пусти вперёд хулл по размеру игрока, ну скажем на 128 юнитов.
И если он ни во что не упёрся - пусти два хулла под углом 90 градусов влево и вправо. Это тебе как отправная точка. Точечные нет смысла пускать.
Добавлено 20-02-2022 в 16:17:
Вот, даже картинку нарисовал
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В коде первокваки есть эта жалоба что у джоя WingMan Warrior нулевое положение 32668 вместо 32768. А я подключил через китайский переходник геймпад от 1 соньки но со стиками, так у него вообще 32511.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_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 у меня никогда не было жостика, ничего не могу сказать.
__________________
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 CHalfLifeRules::FlPlayerFallDamage.
__________________
И главное, Артём, помни: не ешь желтый снег!
Поищи этот комментарий, навряд ли его удалили:
// check to see if player landed hard enough to make a sound |
// falling farther than half of the maximum safe distance, but not as far a max safe distance will |
// play a bootscrape sound, and no damage will be inflicted. Fallling a distance shorter than half |
// of maximum safe distance will make no sound. Falling farther than max safe distance will play a |
// fallpain sound, and damage will be inflicted based on how far the player fell |
как замедлить игрока, когда он находится в воде?
__________________
И главное, Артём, помни: не ешь желтый снег!
ну по пояс?
__________________
И главное, Артём, помни: не ешь желтый снег!
В PM_WalkMove сделать проверку if (pmove->waterlevel >= 2) и снизить pmove->velocity. Не забыть сделать то же самое в PM_WaterMove. Первое - когда игрок касается ногами твёрдой поверхности, второе - когда не касается, а уже плывёт.
Вот почему такое происходит? Скейл текстуры 0.25.
Добавлено 26-02-2022 в 21:10:
При скейле 0.5 все нормально. Опять какие-то лимиты?
__________________
Мой мод на Xash
Наверное слишком много лифов нагенерило. Хотя хз, я там лимит в 512 штук ставил на стеке.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
Ну что тут понимать. Дело не в скейле. Скейл провоцирует лавинообразный рост лифов из-за разбиения полигонов. Полигоны в свою очередь разбиваются из-за лайтмапы. Вся эта куча лифов не влезает в кэш, собирающий полигоны для динамического освещения. А раз не влезает - то они не рендерятся и освещения нет.
1 | bool Mod_BoxVisible( const Vector &mins, const Vector &maxs, const byte *visbits ) |
2 | { |
3 | short leafList[48]; <--- |
4 | leaflist_t ll; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
Мой мод на Xash
Я с таким не сталкивался. Но да, возможно на грасс_тесте тоже есть подобные места.
Добавлено 27-02-2022 в 15:14:
Так я не понял, у тебя с лайтмапой проблема или с фонариком?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Да, портятся все лайтмапы за пределами 8192. Просто это слабо проявляется на скейлах вроде 1. На 0.25 проявляется моментально. Где лимит опять засел?
Добавлено 27-02-2022 в 15:15:
__________________
Мой мод на Xash
Ты меня абсолютно сбил с толку. Всё что я тебе писал касалось динамического света. Потому что ты зачем-то включил фонарик на втором скриншоте.
Добавлено 27-02-2022 в 15:48:
В следующий раз излагай, так сказать более чётко.
Добавлено 27-02-2022 в 15:51:
Поясни насчёт скейла. Ты старым дедовском способом увеличиваешь разрешение лайтмапы? Почему ты не хочешь использовать прямое регулирование через zhlt_texturestep или как он там называется, я забыл уже.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
В общем, разобрались с психопатом что это за баг был. У текстуры лайтмапы/делюксмапы был выставлен GL_CLAMP_TO_EDGE, из-за чего такие артефакты шли. Мы убрали текстурный флаг TF_CLAMP и стало нормально.
__________________
Мой сайт
Xash3D Modding Discord
Интересно
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
что мешает включить показ лайтмап?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну вот. Справа как должно быть. Слева сломано.
__________________
Мой мод на Xash
кстати тоже сталкивался с почернением лайтмапы на фейсах со странными скейлами
Aynekko попробуй проверить всё это под оригинальным Ксашем, собранным шестой студией.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша агась. Это похоже FWGS виноват. Но tf_clamp все равно убрать было нужно - там лайтмапа не рисовалась и на 4529. А конкретно это место на 4529 пофиксилось.
__________________
Мой мод на Xash
скейл текстуры 0.1 и 0.2, из параметров только zhlt_maxextent 128, индирект есть
Crystallize жесть, это gl_renderer 0? Или ксашмод?
__________________
Мой мод на Xash
Aynekko ксашмод
вот без макэкстента
Добавлено 28-02-2022 в 14:34:
от рендерера не зависит
Crystallize убери TF_CLAMP из TF_DELUXMAP и TF_LIGHTMAP. Это в r_local.h в клиентке
Добавлено 28-02-2022 в 10:37:
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша мой ксашмод стоковый если что
__________________
Мой сайт
Xash3D Modding Discord
Там нужно явным образом привести всё к даблам, чтобы компилятор успокоился. Кажется в FitzQuake есть образец как это сделать.
Я давно об этом знаю, но не парился, поскольку для шестой студии проблема неактуальна.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
https://github.com/FWGS/xash3d-fwgs/pull/781
Вот тут я сделал все фиксы касательно лайтмапы, теперь всё окей. И на движковом рендере, и в прайме, осталось лишь ждать когда примут PR.
Добавлено 28-02-2022 в 18:06:
Уже приняли, можно взять continious build движка и протестить на нем, если кто хочет.
__________________
Мой сайт
Xash3D Modding Discord
Вы бы движок что-ли переписали на кресты и избавились от этих дефайнов с дот-продуктоме.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
https://github.com/FWGS/xash3d-fwgs/issues/782
Не тут то было, пофиксилось одно, сломалось другое. Почему так может быть?
Добавлено 28-02-2022 в 19:14:
Ну в общем, разобрались что такое, просто я зря переменные перевел в double.
__________________
Мой сайт
Xash3D Modding Discord
Надейтесь на собственные силы всё же. Не надо по каждому чиху писать на форум, тем более что вы уже и сами неплохо спровляетесь. Меня стоит спрашивать, уже как последний шанс, если ничего не помогло.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вот эта хрень, кстати, тоже решилась. Светового пятна больше нет.
https://hlfx.ru/forum/showthread.ph...6807#post206807
__________________
Мой мод на Xash
А вот то, что надо убрать TF_CLAMP - это вероятно такие замечательные драйвера теперь. Потому что я 15 лет ничего подобного не наблюдал.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Так стек не очищается принудительно, иначе скорость работы упала бы вдвое.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А, ну я помню твои статьи. Но тут дело в том что оно еще и перезаписывает мои переменные после меня. Бывает все нормально, а потом объявишь еще одну переменную и с какой-то другой начинает твориться вот это.
В каком это смысле - после тебя? Ты что же переменную из стека возвращаешь в другую функцию? Приведи пример.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша не смог больше воспроизвести ни специально ни случайно
похоже что у некоторых фейсов в первокваке неверные нормали. Может такое быть? На стартовой карте, сразу за спиной игрока.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
а что делать с нормалями 0 0 0? У них нет длины и из них не соберешь вектор через VectorMA.
Таких нормалей в карте быть не должно, очевидно же.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вот такая проблемка. В спауне ставлю брашу SetTouch( func ).
В самом func код примерно такой
1 | if( pOther->IsPlayer() ) |
2 | { |
3 | ALERT( at_console, "test\n" ); |
4 | Use( pOther, pOther, USE_TOGGLE, 0 ); |
5 | SetTouch( NULL ); |
6 | } |
__________________
Мой мод на Xash
Ну потому что ты назвал функцию Touch. Когда ты убираешь указатель на нее, срабатывает уже механизм виртуальных функций C++.
Такая вот в халфе заморочка. Дай ей более другое имя.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
Это в cbase.h
1 | virtual void Touch( CBaseEntity *pOther ) |
2 | { |
3 | if( m_pfnTouch ) |
4 | (this->*m_pfnTouch)( pOther ); |
5 |
6 | // forward the blocked event to our parent, if any. |
7 | if( m_hParent != NULL && !m_isChaining ) |
8 | m_hParent->Touch( pOther ); |
9 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
EXPORT по твоему нужен для наследования?
Это механизм сейв-рестора, сделанный на скорую руку - лукап имён методов в таблице экспортов. В виртуальной машине этого не требовалось, там и так все имена доступны.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
бензиновый спрайт
делал спрайт дозиметра, первый фрейм ничего, остальные как будто в бензин окунули, что за дичь? собирал параноевским spritegen
Добавлено 26-03-2022 в 00:08:
причем если собирать спрайты по отдельности бензиновых разводов нет
__________________
И главное, Артём, помни: не ешь желтый снег!
hgrunt_2020 сделай всем кадрам одинаковую палитру в фотошопе.
Параноевский spritegen немного недоделан.
Там по уму надо было все кадры поместить в один гигантский рисунок, чтобы нейросеть построила палитру для него. У меня руки так и не дошли.
Ну может форкеры сделают.
__________________
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 делаешь первый кадр в 256 цветов (если он полноцветный). Экспортируешь из него палитру, а потом импортируешь во все остальные. Должно сработать. Я так делаю с текстурами, которые прогоняю через Gigapixel. Потому что эта прога умеет работать только с полноцветными изображениями. Экспорт палитры из 256 -> 256 в полноцветное -> апскейл -> полноцветное в 256 через импорт старой палитры.
Ku2zoff Cпасибо за подсказку с палитрой, я сделал через wally и все кадры стали нормальными
__________________
И главное, Артём, помни: не ешь желтый снег!
Ku2zoff вот так спрайт выглядит после твоего совета https://youtu.be/54y41vny-gw
__________________
И главное, Артём, помни: не ешь желтый снег!
Хороший дозиметр!
__________________
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-03-2022 в 10:35:
Дядя Миша Метаморф? Над параноей? Он над прайсом работает)
__________________
И главное, Артём, помни: не ешь желтый снег!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
И главное, Артём, помни: не ешь желтый снег!
Я так понял, описательная часть параметра в fgd, идущая после значения, это расширение JACK'а?
code:
chaptertitle(string) : "Chapter Title Message" : "" : "Text displayed when entering the level."
__________________
I'm on github
I'm on opendesktop.org
__________________
__________________
I'm on github
I'm on opendesktop.org
всем привет, как исправить ошибку с новыми декалями ? вот такая вот ошибка вылазиет: Used decal #356 without a name
новый декал добавлял только в decals.h.
__________________
илья
DLL_DECALLIST gDecals |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
угу ясно буду пробовать
Добавлено 17-04-2022 в 22:05:
все спасибо сработало как надо
__________________
илья
как превысить лимит прекеша моделей с 512 на 1000 ? и возможно ли такое ?
__________________
илья
На голде - нет
__________________
Killing Floor: Horzine Outbreak
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
илья
илья2 лимит в движке. Есть два варианта: первый - уменьшить количество студиомоделей и спрайтов. Объединить p_ и w_модели оружий, все гильзы засунуть в одну модель и переключать бодями, все подбираемые итемы и патроны тоже объединить в одну модель. Все прождектайлы (гранаты, ракеты, хорнеты) тоже в одну модель. Спрайты с одинаковой палитрой объединить в один спрайт, и переключать кадры. Таким образом можно сэкономить около сотни позиций. То, что не прекэшится всегда, а грузится для отдельной карты, можно таким же образом оптимизировать: монстров с одинаковыми скелетами объединить в одну модель, спрайты с одинаковой палитрой в один спрайт. Брашевые модели объединять в редакторе: на этом тоже можно сэкономить. От последнего возможны глюки с физикой, надо тестировать.
Второй вариант: перейти на другой движок. Если мод делается на стим-голдсорс, то можно перейти на Sven Engine (это вообще очень классный ход, т.к. Свен в стиме бесплатный, игрокам даже не надо будет покупать халфу, чтобы поиграть в мод). Так же можно перейти на Xash3D FWGS, он совместим со стим-голдсорсом. Ну а если мод делается без привязки к стим версии и кроссплатформенности, можно перейти на ванильный Xash3D.
По лимитам в голдсорсе, мне вот интересно почему в голдсорсе оно так все лимитировано причем на все лимиты, вон старый Дум все с него выросло, есть на него всякие nuts.wad, с тысячами монстров, если комп не тянет оно лагать будет, в крайнем случае 1фпс будет, но не свалится игра. Я конечно понимаю что есть ограничения по памяти, но нельзя ли эту передачу между клиентом и сервером динамической сделать. А тут эти ограничения на модели из-за чего прожектайли в одну модель совать приходится, очень не удобно потом с такими спрайтами и моделями работать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Chyvachok
Я не думаю что валва в 1998 году проектировала свой движок чтобы на нём делали какие то моды. Посмотри ранние билды, там вообще жесть треш и угар. А лимиты скорее всего просто с кваки остались.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
илья
New message started when msg *23* has not been sent yet: вот такая вот ошибка вылетает когда я пытаюсь добавить такой код:
// ExplodeTouch( pOther );
//initialize a vector that finds the center of the RPG models hitbox
Vector vecSpot2 = pev->origin + (pev->mins + pev->maxs) * 0.5;
killit++;
if ( killit == 1 )
{
// blast circle "The Infamous Disc of Death"
MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );
WRITE_COORD( pev->origin.x);//center of effect on x axis
WRITE_COORD( pev->origin.y);//center of effect on y axis
WRITE_COORD( pev->origin.z);//center of effect on z axis
WRITE_COORD( pev->origin.x);//axis of effect on x axis
WRITE_COORD( pev->origin.y);//axis of effect on y axis
WRITE_COORD( pev->origin.z + 300 ); // z axis and Radius of effect
WRITE_SHORT( PRECACHE_MODEL( "sprites/white.spr" ) );//Name of the sprite to use, as defined at begining of tut
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); //framerate in 0.1's
WRITE_BYTE( 40 ); //Life in 0.1's
WRITE_BYTE( 302 ); //Line Width in .1 units
WRITE_BYTE( 0 ); //Noise Amplitude in 0.01's
WRITE_BYTE( 255 ); // Red Color Value
WRITE_BYTE( 255 ); // Green Color Value
WRITE_BYTE( 192 ); // Blue Color Value
WRITE_BYTE( 128 ); // brightness
WRITE_BYTE( 0 ); // speed
MESSAGE_END();
pev->effects |= EF_NODRAW;//stop showing the model!!
pev->velocity = g_vecZero;//set velocity to "0"
UTIL_ScreenShake( pev->origin, 500.0, 400.0, 6.0, 1800 );
entvars_t *pevOwner;
if ( pev->owner )
pevOwner = VARS( pev->owner );
else
pevOwner = NULL;
pev->owner = NULL; // can't traceline attack owner if this is set
/*Big Damage
The first parameter is the center of where the damage radiates from. The second is the inflictor
( or what caused it ). The third is the attacker (or what caused this ). The fourth parameter is the
damage to inflict, the fifth is the class to ignore ( or what entity not apply damage to ). The final
parameter is the damage type--(with multiple damage types delineated by a | ).*/
::RadiusDamage( pev->origin, pev, pevOwner, 400, 1000, CLASS_NONE, DMG_BLAST | DMG_BURN | DMG_ALWAYSGIB );
EMIT_SOUND(ENT(pev), CHAN_STATIC, "weapons/nuke1.wav", 1.0, 0.3);
MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_SPRITE );//additive sprite plays though once
WRITE_COORD( pev->origin.x );//where to make the sprite appear on x axis
WRITE_COORD( pev->origin.y );//where to make the sprite appear on y axis
WRITE_COORD( pev->origin.z + 128 );//Creates sprite 128 units above model's center
WRITE_SHORT( PRECACHE_MODEL( "sprites/fexplo.spr" ) );//Name of the sprite to use, as defined at begining of tut
WRITE_BYTE( 400 ); // scale in .1 units --by comparison the player is 72 units tall
WRITE_BYTE( 255 ); // brightness (this is as bright as it gets)
MESSAGE_END();
UTIL_Remove( this );
}
killit = 0;
в функцию взрыва гранаты CGrenade::Explode( TraceResult *pTrace, int bitsDamageType )
вопрос как исправить эту големотью ?
__________________
илья
I think you're using too many TEMPENTITY-es. Try reducing them.
btw: are you making a nuke launcher?
__________________
FlatLine Arena | Tutorials
If you don't like something, MOD it!
Перед этим идёт еще какая-то мессага, у которой ты забыл вызвать MESSAGE_END();
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ну все проблема легко решается сам справился во первых вместо
PRECACHE_MODEL( "sprites/white.spr" )
PRECACHE_MODEL( "sprites/fexplo.spr" )
надо поставить
m_iSpriteTexture
и
m_iExplode
еще надо поставить extern в grenade
extern short m_iSpriteTexture;
extern short m_iExplode;
и сам прекеш в weapons.cpp
DLL_GLOBAL short m_iSpriteTexture;
DLL_GLOBAL short m_iExplode;
m_iSpriteTexture = PRECACHE_MODEL("sprites/white.spr");
m_iExplode = PRECACHE_MODEL( "sprites/fexplo.spr" );
все все просто оказывается. Итог получилась ядерная граната
__________________
илья
__________________
FlatLine Arena | Tutorials
If you don't like something, MOD it!
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
илья2 меня впечатляет твой прогресс, на самом деле.
__________________
илья
Непонятно откуда взявшийся ACT 23
после того как я добавил SetActivity для барни у меня в консоли начала вылазить ошибка
monster_barney has no sequence for act:23
что с ней делать и как её починить?
Добавлено 02-05-2022 в 06:08:
Вот функция
1 | void CBarney :: SetActivity ( Activity NewActivity ) |
2 | { |
3 | int iSequence = ACTIVITY_NOT_AVAILABLE; |
4 | void *pmodel = GET_MODEL_PTR( ENT(pev) ); |
5 |
6 | switch ( NewActivity) |
7 | { |
8 | case ACT_RUN: |
9 | if ( pev->health <= BARNEY_LIMP_HEALTH ) |
10 | { |
11 | // limp! |
12 | iSequence = LookupActivity ( ACT_RUN_HURT ); |
13 | } |
14 | else |
15 | { |
16 | iSequence = LookupActivity ( NewActivity ); |
17 | } |
18 | break; |
19 | case ACT_WALK: |
20 | if ( pev->health <= BARNEY_LIMP_HEALTH ) |
21 | { |
22 | // limp! |
23 | iSequence = LookupActivity ( ACT_WALK_HURT ); |
24 | } |
25 | else |
26 | { |
27 | iSequence = LookupActivity ( NewActivity ); |
28 | } |
29 | break; |
30 | case ACT_IDLE: |
31 | if ( m_MonsterState == MONSTERSTATE_COMBAT ) |
32 | { |
33 | NewActivity = ACT_IDLE_ANGRY; |
34 | } |
35 | iSequence = LookupActivity ( NewActivity ); |
36 | break; |
37 | default: |
38 | iSequence = LookupActivity ( NewActivity ); |
39 | break; |
40 | } |
41 |
42 | m_Activity = NewActivity; // Go ahead and set this so it doesn't keep trying when the anim is not present |
43 |
44 | // Set to the desired anim, or default anim if the desired is not present |
45 | if ( iSequence > ACTIVITY_NOT_AVAILABLE ) |
46 | { |
47 | if ( pev->sequence != iSequence || !m_fSequenceLoops ) |
48 | { |
49 | pev->frame = 0; |
50 | } |
51 |
52 | pev->sequence = iSequence; // Set to the reset anim (if it's there) |
53 | ResetSequenceInfo( ); |
54 | SetYawSpeed(); |
55 | } |
56 | else |
57 | { |
58 | // Not available try to get default anim |
59 | ALERT ( at_console, "%s has no sequence for act:%d\n", STRING(pev->classname), NewActivity ); |
60 | pev->sequence = 0; // Set to the reset anim (if it's there) |
61 | } |
62 | } |
__________________
И главное, Артём, помни: не ешь желтый снег!
hgrunt_2020 это ACT_SIGNAL3, CTalkMonster используют эту активность во время разговора. Подразумевается кивок головой или какое-то другое движение, например жест рукой. Т.к. в моделях барника и учёного такой активности нету, сделана проверка. Видимо, планировалась целая куча анимаций во время разговора, но что-то пошло не так, и от этого отказались. Добавь проверку в CBarney::SetActivity, проблема исчезнет.
if (NewActivity == ACT_SIGNAL3 && (LookupActivity(ACT_SIGNAL3) == ACTIVITY_NOT_AVAILABLE)) |
NewActivity = ACT_IDLE; |
Ku2zoff О,спасибо. только все же остается вопрос, у меня ни в SetActivity ни в модели нет ACT_SIGNAL3, что же тогда источник ошибки
__________________
И главное, Артём, помни: не ешь желтый снег!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1 | void CTalkMonster :: SetActivity ( Activity newActivity ) |
2 | { |
3 | if (newActivity == ACT_IDLE && IsTalking() ) |
4 | newActivity = ACT_SIGNAL3; |
5 |
6 | if ( newActivity == ACT_SIGNAL3 && (LookupActivity ( ACT_SIGNAL3 ) == ACTIVITY_NOT_AVAILABLE)) |
7 | newActivity = ACT_IDLE; |
8 |
9 | CBaseMonster::SetActivity( newActivity ); |
10 | } |
Помню дядя миша писал тутор о лодах, и там была проверка на бодигруппу, можно ли повторить этот код но только на сервере?
Сама проверка на лод-бодигруппу
1 | int CStudioModelRenderer::StudioCheckLOD( void ) |
2 | { |
3 | mstudiobodyparts_t *m_pBodyPart; |
4 |
5 | for( int i = 0; i < m_pStudioHeader->numbodyparts; i++ ) |
6 | { |
7 | m_pBodyPart = (mstudiobodyparts_t *)((byte *)m_pStudioHeader + m_pStudioHeader->bodypartindex) + i; |
8 |
9 | if( !stricmp( m_pBodyPart->name, "LOD" )) |
10 | return m_pBodyPart->nummodels; |
11 | } |
12 | return 0; // no lod-levels for this model |
13 | } |
1 | int GetBodygroupByName( void *pmodel, entvars_t *pev, int iGroup ) |
2 | { |
3 | studiohdr_t *m_pStudioHeader; |
4 | mstudiobodyparts_t *m_pBodyPart; |
5 | m_pStudioHeader = (studiohdr_t *)pmodel; |
6 | if (! m_pStudioHeader) |
7 | return 0; |
8 | for( int i = 0; i < m_pStudioHeader->numbodyparts; i++ ) |
9 | { |
10 | m_pBodyPart = (mstudiobodyparts_t *)((byte *)m_pStudioHeader + m_pStudioHeader->bodypartindex) + i; |
11 |
12 | if( !stricmp( m_pBodyPart->name, "weapons" )) |
13 | return m_pBodyPart->nummodels; |
14 | } |
15 | return 0; // no weapons for this model |
16 | } |
__________________
И главное, Артём, помни: не ешь желтый снег!
hgrunt_2020 так чтож ты сделал?
Ты же ничего не сделал!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну перенес код на сервер с мелкими поправками
__________________
И главное, Артём, помни: не ешь желтый снег!
Так у тебя название функции не соответствует тому, что она делает.
У тебя функция берёт по имени, а имя ("weapons" ) внутри прописано намертво.
Так не годится.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А вроде бы есть функция GetBodyGroup, так ведь? Только она возвращает конкретный номер, а не имя. Зачем такие сложности?
Ku2zoff У меня 6 моделей для одного нпс, и у всех нпс от 4 до 11 бодигрупп, да это не удобно, но зато нпс разнообразные
Добавлено 07-05-2022 в 01:03:
Дядя Миша я знаю что не годится, я попраил
__________________
И главное, Артём, помни: не ешь желтый снег!
Люди, при попытке сохранится в консоль выдаёт вот такую ошибку
[2022:05:09|22:59:06] Can't find address: 05beb220
[22:59:06] ^1Error:^7 Invalid function pointer in entity![2022:05:09|22:59:06] Can't find address: 05beb220
[22:59:06] ^1Error:^7 Invalid function pointer in entity![2022:05:09|22:59:06] Can't find address: 05beb220
[22:59:06] ^1Error:^7 Invalid function pointer in entity![2022:05:09|22:59:06] Can't find address: 05beb220
[22:59:06] ^1Error:^7 Invalid function pointer in entity![2022:05:09|22:59:06] Can't find address: 05beb220
[22:59:06] ^1Error:^7 Invalid function pointer in entity![2022:05:09|22:59:06] Can't find address: 05beb220
[22:59:06] ^1Error:^7 Invalid function pointer in entity![2022:05:09|22:59:06] Can't find address: 05beb220
[22:59:06] ^1Error:^7 Invalid function pointer in entity![2022:05:09|22:59:06] Can't find address: 05beb220
[22:59:06] ^1Error:^7 Invalid function pointer in entity![2022:05:09|22:59:06] Can't find address: 05beb220
[22:59:06] ^1Error:^7 Invalid function pointer in entity![2022:05:09|22:59:06] Saving game to save/Новая.sav...
[2022:05:09|22:59:06] Image_Resample: from[1280 x 720] to [320 x 200]
[2022:05:09|22:59:06] Write save/Новая.bmp
я уже незнаю что и делать
При этом не сохраняются своиства некоторых энтитей
Добавлено 09-05-2022 в 16:13:
еще и адрес меняется после перезахода в игру
__________________
И главное, Артём, помни: не ешь желтый снег!
конвертация карт HL1 в HL2
Привет, можно ли конвертировать карту из HL 1 в HL 2? И как это сделать? Мне одна очень понравилась в свое время, отел бы на вторую часть перенести.. (заранее благодарен за ответ), какрту прикрепил ниже (просто может кто такую видел на 2й части если что)
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша а что ж я натворил, и как исправить?
Добавлено 10-05-2022 в 00:07:
Дядя Миша а что ж я натворил, и как исправить?
__________________
И главное, Артём, помни: не ешь желтый снег!
Да откуда я знаю?
Когда у меня такое случилось, я всё бросил и начал писать Xash3D.
Потому что так и не разобрался как это исправить. Потом конечно разобрался, но уже было поздно.
Добавлено 10-05-2022 в 00:35:
А не, это не та ошибка. Эта не страшная. Страшно, когда тебе движок напишет:
DAMN! Even the engine couldn't FindEntityByVars! |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Такой вот нубский вопрос. В общем, делаю я ландшафт треугольными брашами. Понятное дело коллизия у них состоит из 5-ти фейсов, как я понимаю? На стыках часто проскакивают непонятные невидимые стены, которые причем односторонние. Как бороться с этим? У меня тулзы от п2. Я читал в инете, что надо использовать текстуру бевел, но Дядя Миша ее удалил. Вопрос собственно как бороться с этим, а другой вопрос есть ли вообще возможность сделать браш таким, чтобы коллизия была только на одном фейсе, а все остальные проходимы? Может в этом дело?
__________________
Мой мод на Xash
Aynekko вручную делаешь-то? Используй генератор ландшафтов лучше. Я им грасс_тест генерил, никаких невидимых стыков там нет.
Ну или используй SOLIDHINT вместо BEVEL (которого нет).
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вручную, генератором пока не пользовался, не интересовался. Надеюсь тут где-то завалялся тутор.
Попробую солидхинт, сейчас пока выручает zhlt_precisionclip, у него есть какие-то странности на стыках (но терпимо, какие-то подскоки), но провалов никаких нет
__________________
Мой мод на Xash
Всем привет! Ну что, можете ржать. Накрылся мой мод медным тазом. Хотел 50 оружий в свой мод поставить, но нет, не получается. Выше 31 никак. Добавляю больше пушек. вылет какой то. Что делать дальше? Как это исправить ????????
__________________
илья
Ну что делать? Читать мой тутор, чтож еще-то:
https://hlfx.ru/forum/showthread.php?s=&threadid=5053
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
илья2 Дядя Миша писал тутор, здесь на форуме, по добавлению поддержки 64 оружий. Стим-версия голдсорса это поддерживает на уровне движка. Есть ещё мод от товарища Ghoul[BB] (кстати, где он, жив ли?), там лимит превышен по тутору БУзера, что ли... Короче, есть джва варианта. Оба предполагают много изменений на сервере и клиенте и кастомные мессаги для передачи данных о пушках на клиент.
http://www.half-life.ru/forum/showt...p?threadid=6129 делал я по тутору бузера не сработало тутор дяди миши слишком замороченный например я не могу понять как сделать это и нужно ли это вообще:Теперь нам надо исключить все обращения к pev->weapons и заменить их на вызовы наших новых функций
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
илья
илья2 научись пожалуйста цитировать. Выделяешь текст, который хочешь процитировать и нажимаешь кнопку "Цитата".
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
в общем не компилиться
BOOL HasWeapon( int weaponnum ) { return FBitSet( m_iWeapons[weaponnum >> 3], BIT( weaponnum & 7 )); }
void AddWeapon( int weaponnum ) { SetBits( m_iWeapons[weaponnum >> 3], BIT( weaponnum & 7 )); }
в Chud поставил ошибки пишет
error C2146: syntax error : missing ';' before identifier 'HasWeapon'
error C2501: 'BOOL' : missing storage-class or type specifiers
warning C4183: 'HasWeapon': member function definition looks like a ctor, but name does not match enclosing class
__________________
илья
Тутор прочитан невнимательно, вот и не компилится.
1 | // bit routines |
2 | #define BIT( n ) (1<<( n )) |
3 | #define SetBits( iBitVector, bits ) ((iBitVector) = (iBitVector) | (bits)) |
4 | #define ClearBits( iBitVector, bits ) ((iBitVector) = (iBitVector) & ~(bits)) |
5 | #define FBitSet( iBitVector, bit ) ((iBitVector) & (bit)) |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
так я же добавил в const.h
Добавлено 12-05-2022 в 17:40:
и из util.h удалил 3 функции
__________________
илья
И про BOOL там еще отдельно внизу спрашивали:
https://hlfx.ru/forum/showthread.ph...8941#post168941
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Херня твой тутор. не работает ничего. Все добавил, как надо скомпилировал, все равно вылет какой то и все. А на оригинальных исходниках попробовал, там фонарик не работает, не включается, переключения оружий не работает.
Да и костюм в самом начале дали. когда его вообще не должно быть по идее.
Ясно, понятно. Надо другой мод делать. Про 50 пушек придется забыть.
Добавлено 12-05-2022 в 19:21:
доказательство хотя бы есть что этот тутор рабочий ?
__________________
илья
Ну во первых тут тебе никто ничего не должен.
Во вторых, вот Чувачок отписался, что у него всё получилось
https://hlfx.ru/forum/showthread.ph...8943#post168943
Если для тебя подобные простейшие вещи вызывают такие затруднения, значит кодинг действительно не твоё.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
илья
__________________
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
ну а что я должен врать сказать что все хорошо что все нормально если я сказал что тутор не рабочий значит я правду говорю хоть она и выглядит лживой !
Добавлено 12-05-2022 в 21:02:
__________________
илья
__________________
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
илья
Так если ты говоришь что ты никому ничего не должен, почему тогда тебе всё должны доказывать?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
илья2
Ты не переделывай, а возьми чистый HLSDK и перенеси код из тутора на него.
Если заработает - значит, проблема не в туторе, а в несовместимости с твоим остальным кодом.
Если не заработает - по крайней мере, можно будет легко посмотреть дифф и убедиться, правильно ли ты всё перенёс или нет.
__________________
даже если у меня все получиться все равно будет вылет наверно проблема все таки с моим модом надо попробовать кастомные пушки на новый сдк добавить до 32 если вылета не будет значит проблема точно в моем моде тогда придется все переделывать чего не особо хочется
__________________
илья
Возможно ли пустить traceline, чтобы он столкнулся с несолидным брашем? Мне нужно как-то поймать func_illusionary или триггер трассой. Ну или чем-то похожим. Он ловит только солидные объекты...
Добавлено 20-05-2022 в 15:21:
Впрочем, выкрутился брашем с нестандартным skin -30 (просто взял число подальше от других contents). И проверяю конец трассы через PointContents. Работает. Главное, что браш определяется, и ничего не ломает (особенно хождение монстров через него).
Можно было бы еще определять поверхность и ее нормаль, было бы вообще здорово. Но, полагаю, такое с несолидными брашами не получится провернуть...я не нашел как. Хоть так
__________________
Мой мод на Xash
Да, кастомный контентс задаёшь и всё.
Добавлено 20-05-2022 в 15:30:
Можно еще через групповую маску. Но там браш не задашь, только энтить.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
квака стала внезапно крашиться на SND_PaintChannelFrom8 куда я никогда не лез о_О
Добавлено 21-05-2022 в 01:22:
из-за того что на len поделить забыл
if( len > chase_back.value )
{
VectorScale( camposlocal, chase_back.value/len, camposlocal );
}
Добавлено 21-05-2022 в 01:51:
но даже если там получилось какое-то огромное значение, непонятно почему оно портит другие данные
Ну да, переменная улетает в большие числа. Есть ли какие-то умные способы как такое дебажить? Или просто искать инвалидов каждый раз когда дебагер показывает на нетроганную функцию?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Есть такая проблема: при использовании func_tank_laser игрок может встать так, что заблочит движение пушки. Если в этот момент ещё и выстрелить, то лазер после выстрела не исчезнет. Танк попросту перестает вызывать свой Think. В чём тут дело?
В аттаче карта-пример.
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
I'm on github
I'm on opendesktop.org
Всем привет!
Ребят, столкнулся с проблемой: перестали собираться сорцы sdk 2.3 - вроде бы всегда все нормально было, но спустя год-полтора перерыва в "хобби" обнаружил, что теперь студия (юзаю 2005) перестала компилить и ругается на ошибки. Скачивал сорцы с этого сайта, в теме выше, но они тоже не собираются.
Я что-то не так настроил? Вроде бы всегда на дэфолтных настройках все работало
__________________
Мой сайт
Xash3D Modding Discord
Vadiman возможно где-то не закрыта фигурная скобка?
можно ли использовать нулевой слот WEAPON_NONE 0 ?
__________________
илья
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
илья2 Нельзя, т.к. он используется когда у игрока нет оружия в принцепе
__________________
И главное, Артём, помни: не ешь желтый снег!
илья2 нулевой слот означает, что у игрока вообще нет оружия.
Если ты туда повесишь какую-то пушку, она всегда будет с игроком.
__________________
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 наверное, стандартный способ - мессага TE_PLAYERATTACHMENT. ЕМНИП, так к игроку крепится флаг в TFC. Нужно, чтобы названия костей совпадали.
Добавлено 01-06-2022 в 03:45:
Стоп, нет. pev->aiment, это должен быть индекс игрока у шапки. Не знаю, сработает ли. Сорцев TFC нету, может быть там хак в клиентке написан на манер p_ моделей.
Vadiman
https://github.com/SamVanheer/halflife-updated
Попробуй это. Недавно заметил на бескрайних просторах гитхаба. Вроде как исправлено множество багов, поддержка 64 пушек и всякое такое. Но я сам не проверял
__________________
FlatLine Arena | Tutorials
If you don't like something, MOD it!
__________________
Мой сайт
Xash3D Modding Discord
1 | if (pplayer->weaponmodel) |
2 | { |
3 | cl_entity_t saveent = *m_pCurrentEntity; |
4 |
5 | model_t *pweaponmodel = IEngineStudio.GetModelByIndex( pplayer->weaponmodel ); |
6 |
7 | m_pStudioHeader = (studiohdr_t *)IEngineStudio.Mod_Extradata (pweaponmodel); |
8 | IEngineStudio.StudioSetHeader( m_pStudioHeader ); |
9 |
10 | StudioMergeBones( pweaponmodel ); |
11 |
12 | IEngineStudio.StudioSetupLighting (&lighting); |
13 |
14 | StudioRenderModel( ); |
15 |
16 | StudioCalcAttachments( ); |
17 |
18 | *m_pCurrentEntity = saveent; |
19 | } |
int idx; |
model_t *custom_model = gEngfuncs.CL_LoadModel("models/krutaya_shapka.mdl", &idx); |
m_pStudioHeader = (studiohdr_t *)IEngineStudio.Mod_Extradata (custom_model); |
IEngineStudio.StudioSetHeader( m_pStudioHeader ); |
StudioMergeBones( custom_model ); |
PRECACHE_MODEL("models/krutaya_shapka.mdl"); |
m_pPlayer->pev->iuser4 = MAKE_STRING("models/krutaya_shapka.mdl"); |
model_t *custom_model = IEngineStudio.GetModelByIndex( pplayer->iuser4 ); |
Спасибо. Я попытаюсь это сделать, выглядит не сложно.
А как найти к какой кости крепить её? Оружие же к руке крепится а шапку надо на голову чтобы
[CFR] B@N@N возьми скелет от модели игрока и прикрепи к кости головы. Функция StudioMergeBones смержит кости моделей, и шапка будет на голове.
в общем заметил я в халфе такой идиотский баг: когда урон у лома повышаешь до 100 и выше то с некоторым шансом при атаке ломом на монстров игра просто вылетает. есть ли возможность исправить это идиотство от valve ? или лучше делать свой лом с другим кодом ?
Добавлено 05-06-2022 в 15:09:
мда проверил и на 50 тоже вылет происходит как вообще лом делали ?
__________________
илья
илья2 уверен что дело в ломе, а не в твоём коде? Возьми чистый SDK и проверь там.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
илья
илья2
Проверил твои слова: на моём ломе всё в порядке. Ищи проблему у себя!
Вот да, я помню еще в 2004-м году проходил какой-то мод, у него не было своих дллок. а были оригинальные вальвовские. Такой чисто мапперский мод, набор новых карт. И автор сделал ящики с сумашедшим кол-вом здоровья.
Каждый надо было крошить по полминуты. Наверное для пущего реализма.
Это очень быстро надоело и я в skill.cfg прописал от монтировки урон в 1000 хп. И ничего никуда не вылетало.
илья2 может ты используешь не оригинальный HL SDK 2.3, а какой-то обновлённый с GitHub или вообще версию от SoloKiller?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
-Brain is dead-
Это типа бэкапа, сохраняет все переменные, а потом восстанавливает их обратно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну, я имею в виду в приведённом Кутузовом коде оно для чего?
__________________
-Brain is dead-
KiQ я точно не знаю, но предположу. p_модель - не самостоятельная энтить, а смёрженная хаком с моделькой игрока другая модель. Сначала вызывается StudioRenderModel для модельки игрока, затем для приаттаченного к нему оружия. Затем нужно вернуть m_pCurrentEntity в исходное состояние, чтобы, например m_pStudioHeader был корректный - от игрока, а не от пушки. Закомменти эти строки и у игрока сломаются анимации.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
можно ли превысить громкость звука для EMIT_SOUND с 1.0 до 1.1 хотябы
если ставлю 1.1 игра вылетает с ошибкой SV_StartSound: volume = значение
Добавлено 07-06-2022 в 23:13:
хотя я тут посмотрел этой команды SV_StartSound вобще в сдк нету значит его можно повысить только в движке а сорцев на движок нету значит нельзя по идее
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
илья
Тут где-то Дядя Миша просвящал что VTF и DDS это одно и то же. Ну компрессия наверное одинаковая, просто есть один нюанс. Когда я доставал пачку DDSок из того же Скайрима, то в них плейнтекстом был записан формат компрессии и я мог не открывая каждую, просто через FolderFindText отделить прозрачные от непрозрачных. С VTF так уже не получится.
Вообще не помешал бы способ как работать с VTF не затрагивая все его хитрые флаги и прочие альфа-каналы.
Сделал себе блюр по тутору Plut'а, блюр работает, но при этом в консоли вместо текста отрисовываются фрагменты экрана!
__________________
И главное, Артём, помни: не ешь желтый снег!
Тот тутор для Халфы был.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Заметил, что в халфе если заряжать вторичную атаку тау-пушки совсем недолго (на единицу боеприпаса), то часто выходит два луча и появляется две декали. На клиенте в WeaponIdle два раза зовется StartFire.
__________________
I'm on github
I'm on opendesktop.org
Парни, пытаюсь сделать для зомби поправку одну. Нужна помощь)
Помню в кино (классика от Ромеро) если зомби в тело выпустить очередь, им было вообще по барабану, только отшатнутся и все. А вот выстрел в голову уже смертельный. Я разделил урон по хитгруппам - в голову урон идет как есть, а вот по остальным областям я сделал деление урона на 20. Проблема в том, что при низком либо нулевом уроне не рисуется кровавый брызг, а при огромном уроне аж жирно все. Вот хотелось бы как раз жирные кровавые всплески, но при этом маленький либо нулевой урон (только у зомбака, не для всех)
Vadiman сделай для зомби собственную функцию TraceAttack. В ней и отрегулируешь количество крови в зависимости от урона.
Добавлено 17-06-2022 в 15:19:
Товарищи форумчане, можете подкинуть несколько идей по дизайну HUD'а без прозрачности? Например, как в Overturn:
__________________
I'm on github
I'm on opendesktop.org
Всем привет.
Создавая очередную карту для ксго, столкнулся с ограничением брашей 1024. Хочу сделать карту с которой много объектов с func_breakable
Возможно ли обойти это ограничение ?
Может кастомные компиляторы карт есть?
Ryudo1 замени брашевые брейкабли пропами.
Ku2zoff Разве эти лимиты не для того чтобы дисциплинировать маппера и на самом деле там можно поставить несколько тыс. после перекомпиляции? Или там какая-то битовая маска как обычно?
Crystallize я не знаю, просто предположил. В голдсорсе MAX_MAP_MODELS 256, то есть, кое-что можно делать пропами в формате MDL, чтобы этот лимит не превысить. В один MDL-проп можно засунуть много разных субмоделей, это способ уложиться в лимит MAX_MODELS 512. Думаю, что в сорсе так же, только значения выше. К тому же, делать брейкабли моделями в сорсе удобнее: на них будут оставаться декали, и коллизия должна быть. Насколько мне известно, единственная проблема - отсутствие гибсов у таких объектов, в отличие от брашевых пропов. Нужно ставить рядом env_shooter, который будет выплёвывать модели.
А как можно поставить анимацию на оружие от вида с 3го лица. Хочу сделать чтобы у минигана вращались стволы при стрельбе как в свенкоопе. И ещё как задать смену боли для таких моделей. Например, револьвер от первого лица имеет лцу в мультиплеере, как тоже самое сделать на модели от 3 лица?
[CFR] B@N@N ну посмотри в официальном HLSDK. Там есть хак для p_модели ac из tfc. По такому же принципу применишь смену бодей.
А где смотреть? В каком cpp? Или по каким ключевым словам в поиске?
#define MAX_VISIBLE_PACKET_BITS 11 // 2048 visible entities per frame (hl1 has 256) |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша дык мы про кс: ходить. В сорсе пакет должен быть больше.
В Сорсе помоему без ограничений.
Добавлено 21-06-2022 в 17:24:
Хотя нет, в 2007-м сорсе как раз те же самые 2048 эдиктов. Совпадает с максимально доступным их кол-вом.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Не знаю, там константа на сетевой пакет, максимум 2048 эдиктов.
Может быть в 2013-м это исправили. А может это часть протокола, т.к. кол-во бит в пакете, которым кодируется кол-во передаваемых эдиктов жестко определено. Это не значит, что на клиент попадут только младшие номера эдиктов. Это значит что в видимом пакете не может быть более 2048 эдиктов. А это довольно редкая ситуация на самом деле. Вон в халфе 256 и то редко вылазило. А в квейке так вообще 64 штуки.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
Ku2zoff я думаю он про оперативку просто.
Ku2zoff
Странно, но в моей версии исходников, Half-Life SDK 2.3 нет ни намёка на код, о котором ты упоминал выше
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Как сделать лазерную мину ловушку? Удалил у мины функцию контакта с монстрами и игроком. Это вот это Beambreakthink. А дальше что то не получается.
Добавлено 22-06-2022 в 11:13:
ладно не важно забудьте я все сделал сам
__________________
илья
Контроллер костей и вью модели
Вчера у меня возникла необходимость управлять стрелкой на пневматическом ружье на вью модели, инклюднул animation.h, в деплое InitBoneControllers(); прописал ну и в остальных функциях прописал SetBoneController( 0, m_iAir * 4.5 ); , и так ничего и не произошло! Все скомпилировалось без ошибок и проблем, а результата 0. Может кто подскажет, как можно управлять костями на вью модели?
__________________
И главное, Артём, помни: не ешь желтый снег!
На сервере очевидно никак. Только на клиенте можно. Заюзать какой-нибудь параметр из настроек игрока и передавать его на клиент и там проверять, если у вьюмодели есть контроллер, то присваивать переданное значение ему.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Обнаружил баг в стим-версии халфы. Если изменить шрифты в файле TrackerScheme.res, то для латинских символов они меняются. А для кириллических используется какой-то жёстко захардкоденный говношрифт, которому насрать на схему. То-то мне всегда было неприятно смотреть на русские тексты в меню игр на голдсорсе. Кто-нибудь в курсе, лечится ли это, репортили ли вальве на гитхабе об этом?
Ku2zoff у тебя часом не ломаная пиратка? Может это пираты заговнохардкодили?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша да не. Оф. стимовская версия. Похоже, какой-то косяк в коде gameui, потому что vgui2 без проблем выводит разные шрифты для кириллицы в менюшках и скоребоарде в кс. Ну, по крайней мере раньше выводил. Я проверю, а то вдруг и в кс сейчас изломано всё.
Я разобрался с масштабированием спрайтового шрифта и решил его заменить на какой-нибудь декоративный. Заодно и в главном меню тоже поменять. Добрался до меню - а тут такой сюрприз. Ну не страшно. Главное, чтобы внутриигровые надписи были на русском. Меню - дело второе, халферы его наизусть знают, даже не зная английского.
Ku2zoff
Может просто используется единый шрифт у которого не прописаны кирилические символы?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro это как "не прописаны"?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
По поводу контроллеров костей на вью модели
На клиенте в ev_common.срр добавил
1 | void EV_BoneControl( int str ) |
2 | { |
3 | cl_entity_t *ent = GetViewEntity(); |
4 | if ( !ent ) |
5 | { |
6 | return; |
7 | } |
8 |
9 | ent->curstate.controller[0] = str; |
10 | } |
__________________
И главное, Артём, помни: не ешь желтый снег!
hgrunt_2020 значит, между анимациями контроллер сбрасывается в дефолтное положение. ent->curstate.controller[0] нужно задавать значение не в функции выстрела, а каждый кадр. Или в HUD_Frame, или в StudioDrawModel/StudioSetupBones.
Добавлено 30-06-2022 в 11: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'
А чому б не сделать всё это добро скином? Мелкие детали обычно так на модели делают
[CFR] B@N@N скином не получится плавно двигать стрелку. И придётся рисовать много кадров.
Зачем в сорсе парсер LightEnvironment завернут в проверку if (!gSkyLight) который перед этим нуллится? Разве это не приведет к тому что только одно из солнц будет распарсено? Или это что-то нужное когда у тебя несколько тредов?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Можно спотлайты вытянутые использовать. В хл2 вроде так и выкручивались.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В чем отличие m_pCurrentEntity->curstate.angles от m_pCurrentEntity->angles (на клиенте)?
__________________
Мой мод на Xash
Ну очевидно тем, что первое это входные параметры, а второе - финальные, которые будет использовать рендерер для отрисовки. Первые менять бессмысленно, они каждый кадр обновляются движком, а вторые ты можешь сам задавать, как тебе потребно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Aynekko в curstate всё что прилетело с сервера сейчас, в prevstate на кадр раньше. Как сказал Дядя Миша выше, менять их бессмысленно.
Просто angles например может вычисляться интерполируя углы из prev и cur. Для игроков там конечно всё сложнее, но в общем случае понять можно.
__________________
Xash3D FWGS форк
__________________
Мой сайт
Xash3D Modding Discord
Я просто почему спросил, в голдсорсе в StudioSetUpTransform angles берутся из curstate, а в ксашмоде и движке из просто angles. Я у себя вращал модельку игрока и игрок-клиент отображался не так, как локальный игрок, до тех пор пока я не поменял на curstate. Вот не знаю почему.
__________________
Мой мод на Xash
Еще раз вопрос по клипнодам и солидности поверхностей. А то я запутался. Вот есть стандартный куб. Он генерирует клипноды. Получается, 6 клипнод?
А можно ли сделать чтобы была только 1 клипнода, то есть одна поверхность солидная, а остальные проходишь насквозь?
Не совсем понимаю, как это работает.
Хочется оптимизировать карту в плане клипнод, и на карте слишком много брашей с лишними стенками.
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
При каком условии освещение у модели берется от солнца вместо пола? Случайно обнаружил, что в замкнутой комнате если покрасить потолок null'ом, то освещение будет от солнца.
__________________
Мой мод на Xash
1. нужно наличие light_enviroment. Угол падения солнца пересылается на клиент и используется для трассировки полигонов над игроком, согласно этому углу. Поэтому, если, допустим игрок заходит в тень, то и свет от солнца пропадает кагбы. Очень реалистичный механизм для 98-го года.
2. Трасса должна упереться в полигон с флажком SURF_DRAWSKY, который в свою очередь берётся из текстуры с названием SKY.
3. Можно еще поставить для модели принудительно всегда брать свет от солнца, вы могли видеть этот флажок в моём модельвьювере. Используется для вертолётов и Нихиланса.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А почему модель может быть черной? Лайт_енв на карте нет, и я точно стою на освещенном браше. Буквально стоя на соседнем браше игрок освещен нормально. Значит освещение берется не с пола, а вообще непонятно откуда...
__________________
Мой мод на Xash
Так если light_environment на карте нету, то вектор направления на солнце нулевой, вот и получается чёрный цвет.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Одного тогда понять не могу, как так получается, если комната закрытая, ская там нет, потолок не null текстурой и не энтитя. Проходит насквозь получается. А где эта проверка находится, не подскажешь?
__________________
Мой мод на Xash
Отключи ксаш-модовский рендерер для теста. То что я описывал - справедливо для ванильного. Но в ксаш-моде наверное как-то иначе, уже не вспомню.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Да, то же самое. Пол нормально освещен, а стоя на нем, игрок и монстры черные.
__________________
Мой мод на Xash
Странности с сейвом
Создал я свою энтитю, лутбокс с патронами, но при сейве вылазит ошибка:"Can't find address: 10064860". По адресу 10064860 у меня 0001:00063860 ??_9@$BLE@AE 10064860 f i h_cycler.obj(лутбокс у меня находится в h_cycler)
И, что ещё не приятнее это то что не сейвится состояние использования
__________________
И главное, Артём, помни: не ешь желтый снег!
Забыл прописать EXPORT своим тчинкам или тачам.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
для чего предназначена функция DECLARE_CLASS и какую суть несет в себе?
__________________
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.
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша у лутбокса нет ни тчинка ни тача
Добавлено 06-08-2022 в 03:23:
Дядя Миша
1 | class CLootbox : public CBaseMonster |
2 | { |
3 | void Spawn(void); |
4 | void Use(CBaseEntity* pActivator, CBaseEntity* pCaller, USE_TYPE useType, float value); |
5 | virtual int ObjectCaps(void); |
6 | void KeyValue(KeyValueData* pkvd); |
7 | virtual BOOL IsAlive(void) { return FALSE; } |
8 | int Classify(void) { return CLASS_CYCLER; } |
9 | public: |
10 |
11 | virtual int Save(CSave& save); |
12 | virtual int Restore(CRestore& restore); |
13 | static TYPEDESCRIPTION m_SaveData[]; |
14 | int m_item; |
15 | int m_count; |
16 | }; |
__________________
И главное, Артём, помни: не ешь желтый снег!
Дядя Миша я понял в чем дело
в спавне я удалил строчку SetUse(Use); и все стало нормально
__________________
И главное, Артём, помни: не ешь желтый снег!
1 | virtual void Think( void ) { if (m_pfnThink) (this->*m_pfnThink)(); }; |
2 | virtual void Touch( CBaseEntity *pOther ) { if (m_pfnTouch) (this->*m_pfnTouch)( pOther ); }; |
3 | virtual void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ) |
4 | { |
5 | if (m_pfnUse) |
6 | (this->*m_pfnUse)( pActivator, pCaller, useType, value ); |
7 | } |
8 | virtual void Blocked( CBaseEntity *pOther ) { if (m_pfnBlocked) (this->*m_pfnBlocked)( pOther ); }; |
#define SetThink( a ) m_pfnThink = static_cast <void (CBaseEntity::*)(void)> (a) |
#define SetTouch( a ) m_pfnTouch = static_cast <void (CBaseEntity::*)(CBaseEntity *)> (a) |
#define SetUse( a ) m_pfnUse = static_cast <void (CBaseEntity::*)( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )> (a) |
#define SetBlocked( a ) m_pfnBlocked = static_cast <void (CBaseEntity::*)(CBaseEntity *)> (a) |
Ku2zoff я не знал, потому и вышла такая ошибка
Добавлено 06-08-2022 в 10:52:
Ku2zoff теперь всё прекрасно работает
https://youtu.be/QzwoF5j5LYg
__________________
И главное, Артём, помни: не ешь желтый снег!
__________________
Мой мод на Xash
Aynekko лол, проблема была всего лишь в скейле!? Удивительно.
__________________
И главное, Артём, помни: не ешь желтый снег!
Скейл текстуры или лайтмапы?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Текстуры. Была наложена на браш со скейлом 0.25.
__________________
Мой мод на Xash
Тогда может у лайтмапы наоборот уменьшить разрешение?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Через zhlt_texturestep?
__________________
Мой мод на Xash
Ну да. Во всяком случае стоит попробовать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Попробовал, фейс тупо черный, если значение step больше 16. Ставил 8, все норм, но модели все еще черные. Скейл текстуры на фейсе 0.25.
__________________
Мой мод на Xash
А какой размер текстуры? Вдруг это влияет.
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В одной из тем заговорили за худ оружия и натолкнуло меня на то, что в хл слоты нельзя переключать скролом, но можно цифрами с помощью тутора от тв.Scrama. Так вот реально это объединить чтобы не просто слоты активировались и ты подтверждал выбор, а сразу сменялось как в КС:бегать
__________________
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 в функциях CHudAmmo::UserCmd_NextWeapon и CHudAmmo::UserCmd_PrevWeapon в теле цикла for ( int loop = 0; loop <= 1; loop++ ) перед return вставь следующий код:
1 | if (CVAR_GET_FLOAT("hud_fastswitch") != 0) |
2 | { |
3 | ServerCmd(wsp->szName); // меняем пушку |
4 | g_weaponselect = wsp->iId; // сохраняем Id пушки в глобальную переменную для доступа из input.cpp, CL_CreateMove. Наверное это для пердиктинга |
5 | gpLastSel = gpActiveSel; // запоминаем последнюю пушку |
6 | gpActiveSel = NULL; // зануляем активную пушку, чтобы скрыть слоты |
7 | } |
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.
Luciferchik чтобы засвечивать слоты, надо занулять gpActiveSel через некоторое время, а не сразу. Но пока он не занулён - стрелять нельзя, первый клик подтверждает выбор оружия, скрывая слоты. Надо написать новое поведение для слотов при hud_fastswitch: чтобы при переключении они высвечивались, и постепенно угасали, и левый клик не перехватывался. Сейчас попробую. Обычно я таким не морочусь, но раз уж залез в эту тему, то надо привести fastswitch в нормальное состояние, каким он должен быть. Чтобы оружия переключались скроллом, а нажатие на клавишу слота циклично прокручивало оружия в этом слоте, а не выбирало только первую пушку.
__________________
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.
WEAPON *gpLastSel; // Last weapon menu selection |
WEAPON *gpCurWeapon; // код Скрамы |
1 | // if fast weapon switch is on, then weapons can be selected in a single keypress |
2 | // but only if there is only one item in the bucket |
3 | WEAPON *p2 = GetNextActivePos( p->iSlot, p->iSlotPos ); |
4 | if ( !p2 ) |
5 | { // only one active item in bucket, so change directly to weapon |
6 | ServerCmd( p->szName ); |
7 | g_weaponselect = p->iId; |
8 | return; |
9 | } |
10 | else // код Скрамы |
11 | { |
12 | if (gpCurWeapon->iSlot == iSlot) |
13 | { |
14 | p = GetNextActivePos(gpCurWeapon->iSlot, gpCurWeapon->iSlotPos); |
15 | if (!p) p = GetFirstPos(gpCurWeapon->iSlot); |
16 | ServerCmd(p->szName); |
17 | g_weaponselect = p->iId; |
18 | } |
19 | else |
20 | { |
21 | ServerCmd(p->szName); |
22 | g_weaponselect = p->iId; |
23 | } |
24 | return; |
25 | } |
if ( iState == 0 ) // we're not the current weapon, so update no more |
return 1; |
m_pWeapon = pWeapon; |
gpCurWeapon = pWeapon; // код Скрамы |
WEAPON *gpLastSel; // Last weapon menu selection |
WEAPON *gpCurWeapon; // код Скрамы |
float flFadeTime; // время видимости слотов |
1 | if (!gpActiveSel) |
2 | return; |
3 |
4 | // начало говнокода |
5 | if (CVAR_GET_FLOAT("hud_fastswitch")) |
6 | { |
7 | if (gpActiveSel) |
8 | { |
9 | if (gpActiveSel != (WEAPON*)1) |
10 | { |
11 | ServerCmd(gpActiveSel->szName); |
12 | g_weaponselect = gpActiveSel->iId; |
13 | } |
14 |
15 | if (flFadeTime <= gEngfuncs.GetClientTime()) |
16 | { |
17 | gpLastSel = gpActiveSel; |
18 | gpActiveSel = NULL; |
19 | } |
20 | } |
21 | return; |
22 | } |
23 | // конец говнокода |
24 |
25 | // has the player selected one? |
26 | if (gHUD.m_iKeyBits & IN_ATTACK) |
1 | else // код Скрамы |
2 | { |
3 | if (gpCurWeapon->iSlot == iSlot) |
4 | { |
5 | p = GetNextActivePos(gpCurWeapon->iSlot, gpCurWeapon->iSlotPos); |
6 | if (!p) p = GetFirstPos(gpCurWeapon->iSlot); |
7 | ServerCmd(p->szName); |
8 | g_weaponselect = p->iId; |
9 | } |
10 | else |
11 | { |
12 | ServerCmd(p->szName); |
13 | g_weaponselect = p->iId; |
14 | } |
15 | gpActiveSel = p; // говнокод |
16 | flFadeTime = gEngfuncs.GetClientTime() + 0.5; // снова говнокод |
17 | return; |
18 | } |
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 подсказал что можно под глянуть ограничение пушек в кс 1.6, я ограничение сделал, но как теперь сделать так что бы при юзе пушки которая лежит на полу она попадала в инвентарь, а та что занимала этот же слот легла на её же место
__________________
И главное, Артём, помни: не ешь желтый снег!
hgrunt_2020 у тебя команда Drop работает? Ну то есть, если выкинуть пушку, то подбирается другая? Поищи в player.cpp вот этот комментарий:
// if we land here with a valid pWeapon pointer, that's because we found the |
// item we want to drop and hit a BREAK; pWeapon is the item. |
1 | switch (pWeapon->m_iId) |
2 | { |
3 | case WEAPON_CROWBAR: |
4 | SET_MODEL(ENT(pWeaponBox->pev), "models/w_crowbar.mdl"); |
5 | break; |
6 | } |
pPlayer->DropPlayerItem("weapon_crowbar"); |
Ku2zoff она работает но криво, некоторые пушки не подбирает а подбирает только их патроны
__________________
И главное, Артём, помни: не ешь желтый снег!
У меня работает. Хоть и жуткий говнокод, написанный на коленке.
Ku2zoff вот дроп что у мен
1 | void CBasePlayer::DropPlayerItem ( char *pszItemName ) |
2 | { |
3 | if ( !strlen( pszItemName ) ) |
4 | { |
5 | // if this string has no length, the client didn't type a name! |
6 | // assume player wants to drop the active item. |
7 | // make the string null to make future operations in this function easier |
8 | pszItemName = NULL; |
9 | } |
10 |
11 | CBasePlayerItem *pWeapon; |
12 | int i; |
13 |
14 | for ( i = 0 ; i < MAX_ITEM_TYPES ; i++ ) |
15 | { |
16 | pWeapon = m_rgpPlayerItems[ i ]; |
17 |
18 | while ( pWeapon ) |
19 | { |
20 | if ( pszItemName ) |
21 | { |
22 | // try to match by name. |
23 | if ( !strcmp( pszItemName, STRING( pWeapon->pev->classname ) ) ) |
24 | { |
25 | // match! |
26 | break; |
27 | } |
28 | } |
29 | else |
30 | { |
31 | // trying to drop active item |
32 | if ( pWeapon == m_pActiveItem ) |
33 | { |
34 | // active item! |
35 | break; |
36 | } |
37 | } |
38 |
39 | pWeapon = pWeapon->m_pNext; |
40 | } |
41 |
42 |
43 | // if we land here with a valid pWeapon pointer, that's because we found the |
44 | // item we want to drop and hit a BREAK; pWeapon is the item. |
45 | if ( pWeapon ) |
46 | { |
47 | g_pGameRules->GetNextBestWeapon( this, pWeapon ); |
48 | if (pWeapon->iSlot() <= 2) |
49 | Slots[pWeapon->iSlot()] = false; |
50 |
51 | UTIL_MakeVectors ( pev->angles ); |
52 |
53 | pev->weapons &= ~(1 << pWeapon->m_iId);// take item off hud |
54 |
55 | CWeaponBox *pWeaponBox = (CWeaponBox *)CBaseEntity::Create( "weaponbox", pev->origin + gpGlobals->v_forward * 10, pev->angles, edict() ); |
56 | pWeaponBox->pev->angles.x = 0; |
57 | pWeaponBox->pev->angles.z = 0; |
58 | pWeaponBox-><img src="images/smilies/pp2.gif" border="0" alt="">ackWeapon( pWeapon ); |
59 | pWeaponBox->pev->velocity = gpGlobals->v_forward * 300 + gpGlobals->v_forward * 100; |
60 |
61 | // drop half of the ammo for this weapon. |
62 | int iAmmoIndex; |
63 |
64 | iAmmoIndex = GetAmmoIndex ( pWeapon->pszAmmo1() ); // ??? |
65 |
66 | if ( iAmmoIndex != -1 ) |
67 | { |
68 | // this weapon weapon uses ammo, so pack an appropriate amount. |
69 | if ( pWeapon->iFlags() & ITEM_FLAG_EXHAUSTIBLE ) |
70 | { |
71 | // pack up all the ammo, this weapon is its own ammo type |
72 | pWeaponBox-><img src="images/smilies/pp2.gif" border="0" alt="">ackAmmo( MAKE_STRING(pWeapon->pszAmmo1()), m_rgAmmo[ iAmmoIndex ] ); |
73 | m_rgAmmo[ iAmmoIndex ] = 0; |
74 |
75 | } |
76 | else |
77 | { |
78 | // pack half of the ammo |
79 | pWeaponBox-><img src="images/smilies/pp2.gif" border="0" alt="">ackAmmo( MAKE_STRING(pWeapon->pszAmmo1()), m_rgAmmo[ iAmmoIndex ] / 2 ); |
80 | m_rgAmmo[ iAmmoIndex ] /= 2; |
81 | } |
82 |
83 | } |
84 |
85 | return;// we're done, so stop searching with the FOR loop. |
86 | } |
87 | } |
88 | } |
if (pItem->iSlot() > 1 && pItem->iSlot() <= 4) |
if (pWeapon->iSlot() <= 2) |
__________________
И главное, Артём, помни: не ешь желтый снег!
Ku2zoff а что по поводу того что не отображаются иконки вентиля и сайги?
__________________
И главное, Артём, помни: не ешь желтый снег!
Ku2zoff Я наконец то починил ограничение и дроп)
https://youtu.be/3wHnsDy9W-g
__________________
И главное, Артём, помни: не ешь желтый снег!
Как правильно перемещать спрайты по экрану, чтобы при смене расширения они оставались на задуманном месте?
__________________
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 перемещать их относительно screenheight и screenwidth, глянь расположение спрайтов в хл 1, именно их x и y в коде
__________________
И главное, Артём, помни: не ешь желтый снег!
Почему не на весь экран?
Почему текстура не отрисовывается на весь экран, при чем не важно спрайт это или тга(скрин https://yapx.ru/v/TUrMT ), вот код отрисовки
1 | void DrawNV() |
2 | { |
3 | if (g_iNvg == 0) return; |
4 | if (ScopeTex < 0) |
5 | ScopeTex = glLoadTgaFromPak("/gfx/ui_nv.tga"); |
6 | glColor4f(0.0f, 0.0f, 0.0f, 1.0f); |
7 | glBindTexture(GL_TEXTURE_2D, ScopeTex); |
8 | glEnable(GL_BLEND); |
9 | glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
10 | glBegin(GL_QUADS); |
11 | //top left |
12 | glTexCoord2f(0.0f, 1.0f); |
13 | glVertex3f(0, 0, 0); |
14 |
15 | //bottom left |
16 | glTexCoord2f(0.0f, 0.0f); |
17 | glVertex3f(0, ScreenHeight, 0); |
18 |
19 | //bottom right |
20 | glTexCoord2f(1.0f, 0.0f); |
21 | glVertex3f(ScreenWidth, ScreenHeight, 0); |
22 |
23 | //top right |
24 | glTexCoord2f(1.0f, 1.0f); |
25 | glVertex3f(ScreenWidth, 0, 0); |
26 |
27 |
28 | glEnd(); |
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.
А вы как определяете где говнокод, а где нет?
Вот как раз таинственный множитель на 1.5525 это и есть говнокод.
Как вы это число получили? Ни деление 16/9 ни 16/10 его не даёт.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Почему из-за большого браша func_water ксаш вылетает? Размер браша 6000х7500 юнитов, высота 300 юнитов. 6000х7000, как ни странно, работает. Скейл текстуры воды сверху - 14.0, остальные фейсы покрыты NULL. Что это за лимит опять, можно ли его расширить?
Создавать несколько func_water не предлагайте - видны швы
__________________
Мой мод на Xash
Потому что SubdividePolygon_r рекурсивная функция, а стек не бесконечен.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А что тогда можно сделать в этом случае? "Расширить лимиты" так сказать. Надо бы браш большого размера.
Добавлено 19-08-2022 в 11:16:
Поднял SUBDIVIDE_SIZE с 64 до 128, это помогло О.о
__________________
Мой мод на Xash
Ну естественно помогло, размер шага уменьшился, значит и рекурсия стала короче. Еще можно в настройках проекта увеличить размер стека, но то такое...
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Cделал я себе ограничение пушек в инвентаре, всё хорошо, до сейв рестора, после сейв рестора вновь можно подобрать пушку в слот, и в слоту уже не 1 пушка а 2, чего быть не должно.
Для ограничения я завёл себе
BOOL Slots[5]; |
1 | if (pItem->iSlot() > 1 && pItem->iSlot() <= 4) |
2 | { |
3 | if (Slots[pItem->iSlot()]) |
4 | return FALSE; |
5 | Slots[pItem->iSlot()] = true; |
6 | } |
if (pWeapon->iSlot() > 0 && pWeapon->iSlot() <= 4) |
Slots[pWeapon->iSlot()] = false; |
__________________
И главное, Артём, помни: не ешь желтый снег!
привет кто из кодеров может понять рендеры текстур
kRenderNormal, // src
kRenderTransColor, // c*a+dest*(1-a)
kRenderTransTexture, // src*a+dest*(1-a)
kRenderGlow, // src*a+dest -- No Z buffer checks
kRenderTransAlpha, // src*srca+dest*(1-srca)
kRenderTransAdd, // src*a+dest
особенно интересуют эти значения
// src
// c*a+dest*(1-a)
// src*a+dest*(1-a)
// src*a+dest -- No Z buffer checks
// src*srca+dest*(1-srca)
// src*a+dest
__________________
илья
илья2 https://twhl.info/wiki/page/Tutoria...nder_Properties
Значения тебе без надобности, формулы, вычисляющие итоговую прозрачность и цвет всё равно внутри движка.
Добавлено 23-08-2022 в 04:18:
Если совсем интересно, то src - исходная текстура, a - альфа, c - цвет, dest - скорее всего результат первого перемножения.
src - исходный цвет
dst - цвет экрана (то что уже успели нарисовать)
a - alpha (renderamt)
c - color (rendercolor)
srca - альфаканал текстуры
Добавлено 23-08-2022 в 08:44:
На десктопах есть большая проблема к сожалению. Там невозможно прочитать цвет экранного пикселя из шейдера - ошибка совмещённого доступа.
Но на мобилках другая архитектура и там можно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ясно полезная инфа пригодиться
__________________
илья
__________________
Мой сайт
Xash3D Modding Discord
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
возможно ли поставить оружие на нулевой слот ? пробовал ставить вылет и все.
__________________
илья
ну раз вылет - значит нельзя
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
илья2 слотов можно сделать сколь угодно много, были бы клавиши. Просто подвинь всё оружие на один слот, чтобы первый выполнял функции нулевого.
я перепутал не слоты а на нулевое количество WEAPON_NONE сорян.
__________________
илья
илья2 ну вот нафига? pev->weapons передаёт битовую маску, а не десятичное число с номером оружия. WEAPON_NONE и так по-умолчанию имеется у игрока. Вылет происходит на этапе какой-то проверки на нулёвость, которых тонна на сервере и на клиенте. А зачем вообще занимать нулевой Id? Их же 29 или 30 штук доступно.
WEAPON_NONE - это 0. Сам подумай, можно ли на ноль что-то вешать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
илья
Если оружие невозможно убрать - ему не нужен никакой идентификатор.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
илья2 номер Id не влияет на слот, занимаемый оружием. Вот так у монтировки:
p->iSlot = 0; |
p->iPosition = 0; |
p->iId = WEAPON_CROWBAR; // 1 |
__________________
илья
как убрать оружие с инвентаря игрока ? есть ли код для этого ?
__________________
илья
Энтитя player_weaponstrip. Только она убирает ВСЕ оружия и опционально костюм. Но можно дописать ей функционал выборочного убирания оружия.
__________________
илья
1 | int i; |
2 | CBasePlayerItem *pPendingItem; |
3 | for (i = 0; i < MAX_ITEM_TYPES; i++) |
4 | { |
5 | m_pActiveItem = m_rgpPlayerItems[i]; |
6 | while (m_pActiveItem) |
7 | { |
8 | pPendingItem = m_pActiveItem->m_pNext; |
9 | m_pActiveItem->Drop( ); |
10 | m_pActiveItem = pPendingItem; |
11 | } |
12 | m_rgpPlayerItems[i] = NULL; |
13 | } |
14 | m_pActiveItem = NULL; |
CBasePlayer *pPlayer; |
pPlayer->RemoveAllItems("weapon_crowbar"); |
Помнится для корректного выбрасывания пушки в P2 я довольно много кода дописывал. Там по нормальному не сделаешь.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша для выбрасывания да. А для удаления уже всё есть в RemovePlayerItem.
а если поставить несуществующую позицию и слот. оружие удалиться из худа ?
например так:
p->iSlot = -1;
p->iPosition = -1;
или так
p->iSlot = NULL;
p->iPosition = NULL;
Добавлено 06-09-2022 в 13:43:
проверил работает. Надо было самого начала так сделать не догадался малек.
Добавлено 06-09-2022 в 13:47:
все оказывается просто было и не надо было изобретать велосипед
Добавлено 06-09-2022 в 14:11:
вот так это в принципе и работает кулаки которые без костюма находятся на -1 слоте и позиции а когда достаем и одеваем костюм то кулаки уже в костюме ну в общем как в brutal half-life
https://youtu.be/yP448eB-0eY
__________________
илья
а зачем переключаться если лучше на ствол переключится без костюма а потом с костюмом кулаки будут
Добавлено 06-09-2022 в 15:01:
да и еще. Кулаки с костюмом они намного лучше чем без него. Там урон по мощнее. Эти кулаки они так чтобы хоть какое нибуть оружие при старте было это лучше чем ничего
__________________
илья
__________________
илья
Проблема - env_model не крутится через local avelocity. Либо я что-то не так делаю.
1 | if( pModel ) |
2 | { |
3 | pModel->SetLocalAvelocity( pModel->pev->movedir * Speed ); |
4 | Vector v = pModel->GetLocalAvelocity(); |
5 | ALERT( at_console, "%f %f %f\n", v.x, v.y, v.z ); |
6 | } |
__________________
Мой мод на Xash
Ну а как она будет крутиться, если по дефолту ей задан MOVETYPE_NONE?
1 | void SV_Physics_None( CBaseEntity *pEntity ) |
2 | { |
3 | if( !SV_RunThink( pEntity )) |
4 | return; |
5 |
6 | if( pEntity->m_hParent ) |
7 | pEntity->RelinkEntity( TRUE ); |
8 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В общем смена мувтайпа на ходу тоже не помогла. В итоге я поставил func_rotating с галкой start on (галка обязательна). И только тогда мой код нормально работает и я могу управлять скоростью вращения через SetLocalAvelocity.
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
как менять боди на оружии в реальном времени, например есть у меня моделька оружия с двумя видами рук, но руки меняются только по консольной команде и при смени оружия туда назад
__________________
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 обычная халфа или ксашмод? В обычной халфе налету не сменишь ни боди, ни скин. Только при воспроизведении очередной анимации либо через SendWeaponAnim, либо через PLAYBACK_EVENT. Не знаю, как там в актуальном ксашмоде, по-моему в нём Xash Weapon System отсутствует, надо тащить из Spirit 1.9 две мессаги: на бодю и на скин. И в идеале отключать пердиктинг, чтобы не мешал.
Добавлено 24-09-2022 в 00:29:
Вообще, вот, применяй этот тутор.
Ku2zoff ксашмод, Xash Weapon System стащен из Spirit 1.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.
__________________
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.
На что влияет предиктинг оружия в халфе? Это только визуальное отображение на клиенте (анимация без задержек) или же оказывается влияние на сервер (клиент сообщает о уже сделанном выстреле, попадании и т.д.)?
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вот еще такой вопрос. На сервере мы можем делать тряску экрана
1 | MESSAGE_BEGIN( MSG_ONE, gmsgShake, NULL, pPlayer->edict() ); // use the magic #1 for "one client" |
2 |
3 | WRITE_SHORT( shake.amplitude ); // shake amount |
4 | WRITE_SHORT( shake.duration ); // shake lasts this long |
5 | WRITE_SHORT( shake.frequency ); // shake noise frequency |
6 |
7 | MESSAGE_END(); |
__________________
Мой мод на Xash
Aynekko дёрни клиентскую часть мессаги из движка в дллку и вызывай её сразу на клиенте. Сорцы ксаша открыты. pfnCalcShake, pfnApplyShake, и саму мессагу CL_ParseScreenShake. Делов минут на 10. Ну, точнее, вызывать надо не мессагу, а заполнять структурку screen_shake_t.
1 | void CL_ParseScreenShake( sizebuf_t *msg ) |
2 | { |
3 | clgame.shake.amplitude = (float)(word)MSG_ReadShort( msg ) * (1.0f / (float)(1<<12)); |
4 | clgame.shake.duration = (float)(word)MSG_ReadShort( msg ) * (1.0f / (float)(1<<12)); |
5 | clgame.shake.frequency = (float)(word)MSG_ReadShort( msg ) * (1.0f / (float)(1<<8)); |
6 | clgame.shake.time = cl.time + max( clgame.shake.duration, 0.01f ); |
7 | clgame.shake.next_shake = 0.0f; // apply immediately |
8 | } |
Понял, уже сделал
Добавлено 02-10-2022 в 21:50:
Столкнулся с такой штукой касаемо baseline. В общем создаю я спрайт на сервере через SpriteCreate. После его создания я задаю ему свойства, рендермод и прозрачность.
И вот незадача - на клиенте мне рапортует, что у него baseline.rendermode и baseline.renderamt равны нулю. И только после сейврестора уже показывает нужные числа.
Вот и собственно вопрос, а как мне обновить baseline после того, как я задал свойства?
__________________
Мой мод на Xash
Вазелин сохраняется только для объектов, которые спавнятся с уровня, для объектов, создаваемых во время игры он неактуален и не нужен.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Aynekko а зачем ты на клиенте берёшь свойства из вазелина? Надо брать из курстейта.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну я тестирую, экспериментирую. Конечно в случае чего переделаю. Я тестил на пинге 100 (фейковом), никаких проблем не обнаружил пока что.
__________________
Мой мод на Xash
1 | state->rendermode = ent->v.rendermode; |
2 | if (!FBitSet(ent->v.flags, FL_MYFLAG)) state->renderamt = ent->v.renderamt; |
3 | state->renderfx = ent->v.renderfx; |
4 | state->rendercolor.r = ent->v.rendercolor.x; |
5 | state->rendercolor.g = ent->v.rendercolor.y; |
6 | state->rendercolor.b = ent->v.rendercolor.z; |
1 | case kRenderFxFadeFast: |
2 | if( RP_NORMALPASS( )) |
3 | { |
4 | if( e->curstate.renderamt > 3 ) |
5 | e->curstate.renderamt -= 4; |
6 | else e->curstate.renderamt = 0; |
7 | } |
8 | blend = e->curstate.renderamt; |
9 | break; |
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вернёмся к моему старому вопросу!
1 | extern int iWpnId; |
2 |
3 | void DLLEXPORT HUD_Frame( double time ) |
4 | { |
5 | ServersThink( time ); |
6 | if (iWpnId == WEAPON_TIHAR || iWpnId == WEAPON_GAUSS) |
7 | { |
8 | gEngfuncs.GetViewModel()->curstate.controller[0] = gHUD.m_iBone1; |
9 | } |
10 | GetClientVoiceMgr()->Frame(time); |
11 | } |
__________________
И главное, Артём, помни: не ешь желтый снег!
На вьюмодельках, я вообще не припоминаю, чтобы контроллеры костей использовались.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну я первый кто их использует)
__________________
И главное, Артём, помни: не ешь желтый снег!
всем привет: Spawned a NULL entity! к чему относиться данная ошибка ?
__________________
илья
Дословный перевод: Заспавнена Нуллевая энтитя
__________________
И главное, Артём, помни: не ешь желтый снег!
да вы представьте что я придумал->XVCORE97 или в другом названии СУПЕР ПРОТОТИП-что это ?--->:прототип синтезированной сверх новой колотронной дыры
закупоренном в особом контейнере высокого назначения опасность!!!:--->особо опасное супер сверх оружие !!!.
Да писателям фантастам такое бы понравилось
__________________
илья
илья2
1. Это надо было писать в фулде
2. Рекомендую немного поизучать русский язык и грамматику в целом
__________________
И главное, Артём, помни: не ешь желтый снег!
Это надо было писать в фулде:да точно надо было
Добавлено 24-10-2022 в 13:44:
кому интересно сейчас я создаю новое оружие XVL989
__________________
илья
Появился у меня жоский баг в игре. Не знаю, как его исправить. Баг таков, что когда мы берем оружие вместе с костюмом, то при выборе оружия есть другое оружие, которое мы не брали. У этого оружия пустая обойма. То есть это оружие красное. Во общем, будет более понятно, если выложу скриншот этой хрени.
https://imgur.com/a/OR6i8TQ
Добавлено 31-10-2022 в 16:21:
Может, есть способ изначально удалить это оружие ? с пустой обоймой ?
Добавлено 31-10-2022 в 20:08:
ну все я исправил баг
__________________
илья
__________________
И главное, Артём, помни: не ешь желтый снег!
Как правильно посчитать кол-во активных игроков на сервере?
Я взял код из multiplayer rules:
1 | int CountPlayers( void ) |
2 | { |
3 | int num = 0; |
4 |
5 | for ( int i = 1; i <= gpGlobals->maxClients; i++ ) |
6 | { |
7 | CBaseEntity *pEnt = UTIL_PlayerByIndex( i ); |
8 |
9 | if ( pEnt ) |
10 | num = num + 1; |
11 | } |
12 |
13 | return num; |
14 | } |
1 | int playercount = 0;// CountPlayers(); |
2 | for( int i = 1; i <= gpGlobals->maxClients; i++ ) |
3 | { |
4 | CBasePlayer *pPlayer = (CBasePlayer*)UTIL_PlayerByIndex( i ); |
5 |
6 | // skip invalid players |
7 | if( !pPlayer ) |
8 | continue; |
9 |
10 | const char *model = g_engfuncs.pfnInfoKeyValue( g_engfuncs.pfnGetInfoKeyBuffer( pPlayer->edict() ), "model" ); |
11 | if( model[0] <= 0 ) |
12 | continue; |
13 |
14 | playercount++; |
15 | } |
__________________
Мой мод на Xash
извините что поднимаю старую тему опять на теже грабли:а точно ли 512 лимит прекешей зарыт в движок не в карты ли ? я пробовал сломаные исходники на картах half-life там все нормально работает захожу в карты opossing force все глючит.
Добавлено 07-11-2022 в 09:30:
особенно меня удивляет вот эта ошибка Host_Error: PF_precache_model_I: Model 'models/houndeye.mdl' failed to precache because the item count is over the 512 limit.
houndeye этот объект был в картах халф лайфа захожу в карты opossing force пожалуйста ошибка прекеша
Добавлено 07-11-2022 в 09:32:
кажется это не оптимизированные карты или не совсем правильно скомпилированные где в half-life картах лимит превышен а в opossing force картах лимит занижен
Добавлено 07-11-2022 в 09:36:
плохо что это так значит мне придется в исходниках что то удалять чтобы лимит не жаловался по другому никак
Добавлено 07-11-2022 в 09:39:
а есть ли оптимизированные карты opossing force где лимит завышен ?
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Поэтому уровни действительно влияют на этот лимит:о все таки прав
Добавлено 08-11-2022 в 10:31:
но я до сих пор не знаю как этот лимит одолеть удаляю монстров оружия из исходников ничего не помогает как же так ?
Добавлено 08-11-2022 в 10:34:
оружие гильзы спрайты отдельными бодями в одну модель делать очень сложно
Добавлено 08-11-2022 в 10:35:
а прошлое мое исправление все таки не совсем помогло
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Так, а сам лимит увеличить никак нельзя?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
я в тупиковой ситуации что делать ?
Добавлено 08-11-2022 в 12:54:
лимит все портит
__________________
илья
На ксаш перейди и забудь о лимитах.
__________________
Мой мод на Xash
Все таки это все из за оружий ! Удалил я больше оружия с не охотой . Все заработало как надо. Мда. плохо, что в Half-life есть такая штука, как лимит.
Добавлено 08-11-2022 в 13:25:
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
да теперь понял это в player.cpp
Добавлено 08-11-2022 в 14:49:
можно попробовать
Добавлено 08-11-2022 в 14:51:
Попробовал я монстров По удалять. Не, не работает такой вариант. Только с оружий лимит убирается. Бред, конечно, но это так.
Добавлено 08-11-2022 в 14:52:
Это значит, что монстров можно делать сколько угодно, а вот оружия уже нет. Так не получиться.
Добавлено 08-11-2022 в 14:59:
impulse 101 а толку ну удалю там оружия все равно проблема прекеша
Добавлено 08-11-2022 в 15:01:
проблема то появляется с перехода с карты на карту а не при impulse 101
__________________
илья
Ну с модом-солянкой по любому рано или поздно придётся переезжать, или извращаться и как Гуль все запихивать в одну модель.
А вообще не пойму откуда вообще такие анальные лимиты, почему в Думе к примеру можно делать карты на тысячи монстров что даже современный комп тормозит дико от такого кол-ва, на ГЗДум полно всяких оружейных солянок где сотни оружий, или взять тот же Russian Overkill где того оружия мало того что кучи, так еще оно все дикое и убойное что с одного выстрела половину уровня выносит не тянет комп, будешь играть в пошаговую игру, а в Халве запили Flak Cannon из Анрила и какой-то дезматч на 32 игрока уже сломается от него.
А вообще не пойму откуда вообще такие анальные лимиты:да вот и мне хотелось бы понять это
Добавлено 08-11-2022 в 15:16:
ведь в халфу еще можно много всего добавлять почему тогда такие лимиты ставят ?
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
перешел я на ксаш да баг с прекешом исчез но есть другие баги со звуками с glowshell с shockrifle
Добавлено 08-11-2022 в 15:56:
мда это уже баги самого движка
Добавлено 08-11-2022 в 18:06:
А что нибудь кроме ксаш есть ? Что похоже на Халфу. Но снимет лимит, а то он весь мод мне сломал, Все придется переделывать.
__________________
илья
Да, ксаш хорошо выявляет баганый код. Исправляй теперь ошибки в своём коде.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ксаш хорошо выявляет баганый код:но у меня в халфе все нормально работает значит он не баганый хотя вам виднее
Добавлено 08-11-2022 в 18:52:
Исправляй теперь ошибки в своём коде:да у меня просто выбора нету придется исправлять
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
вот этот https://www.moddb.com/engines/xash3...4-extras-stable
Добавлено 08-11-2022 в 19:10:
прбовал старые версии там еще хуже больше багов
Добавлено 08-11-2022 в 19:11:
__________________
илья
еще нож тоже повторяет
Добавлено 08-11-2022 в 20:24:
ну все я исправил баг в функции PrimaryAttack есть двойной повтор Swing
SetThink(&CFists2::SwingAgain); который перенаправляется на
void CFists2::SwingAgain(void)
{
Swing(0);<----вот здесь как раз и есть повтор
}
было
void CFists2::PrimaryAttack()
{
if (!Swing(1))
{
#ifndef CLIENT_DLL
SetThink(&CFists2::SwingAgain);
pev->nextthink = gpGlobals->time + 0.1;
switch (RANDOM_LONG(0, 1))
{
case 0:
m_pPlayer->pev->punchangle.x = -10; // pitch
m_pPlayer->pev->punchangle.y = -10; // yaw
m_pPlayer->pev->punchangle.z = 10; // roll
break;
case 1:
m_pPlayer->pev->punchangle.x = 10; // pitch
m_pPlayer->pev->punchangle.y = 10; // yaw
m_pPlayer->pev->punchangle.z = -10; // roll
break;
}
//UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
Vector vecDir;
float flZVel = m_pPlayer->pev->velocity.z;
m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * -100;
m_pPlayer->pev->velocity.z = flZVel;
#endif
}
}
стало
void CFists2::PrimaryAttack()
{
if (!Swing(1))
{
#ifndef CLIENT_DLL
pev->nextthink = gpGlobals->time + 0.1;
switch (RANDOM_LONG(0, 1))
{
case 0:
m_pPlayer->pev->punchangle.x = -10; // pitch
m_pPlayer->pev->punchangle.y = -10; // yaw
m_pPlayer->pev->punchangle.z = 10; // roll
break;
case 1:
m_pPlayer->pev->punchangle.x = 10; // pitch
m_pPlayer->pev->punchangle.y = 10; // yaw
m_pPlayer->pev->punchangle.z = -10; // roll
break;
}
//UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
Vector vecDir;
float flZVel = m_pPlayer->pev->velocity.z;
m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * -100;
m_pPlayer->pev->velocity.z = flZVel;
#endif
}
}
Добавлено 08-11-2022 в 20:24:
надо и в остальных исходниках это исправить
Добавлено 08-11-2022 в 20:40:
правда после таких махинаций идет двойное повторение декаля после удара о стену
Добавлено 08-11-2022 в 21:04:
все исправил if (!Swing(1))->if (Swing(1))
было
void CFists2::PrimaryAttack()
{
if (Swing(1))
{
#ifndef CLIENT_DLL
pev->nextthink = gpGlobals->time + 0.1;
switch (RANDOM_LONG(0, 1))
{
case 0:
m_pPlayer->pev->punchangle.x = -10; // pitch
m_pPlayer->pev->punchangle.y = -10; // yaw
m_pPlayer->pev->punchangle.z = 10; // roll
break;
case 1:
m_pPlayer->pev->punchangle.x = 10; // pitch
m_pPlayer->pev->punchangle.y = 10; // yaw
m_pPlayer->pev->punchangle.z = -10; // roll
break;
}
//UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
Vector vecDir;
float flZVel = m_pPlayer->pev->velocity.z;
m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * -100;
m_pPlayer->pev->velocity.z = flZVel;
#endif
}
}
стало
void CFists2::PrimaryAttack()
{
switch (RANDOM_LONG(0, 1))
{
case 0:
m_pPlayer->pev->punchangle.x = -10; // pitch
m_pPlayer->pev->punchangle.y = -10; // yaw
m_pPlayer->pev->punchangle.z = 10; // roll
break;
case 1:
m_pPlayer->pev->punchangle.x = 10; // pitch
m_pPlayer->pev->punchangle.y = 10; // yaw
m_pPlayer->pev->punchangle.z = -10; // roll
break;
}
//UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
Vector vecDir;
float flZVel = m_pPlayer->pev->velocity.z;
m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * -100;
m_pPlayer->pev->velocity.z = flZVel;
if (Swing(1))
{
pev->nextthink = gpGlobals->time + 0.1;
}
}
__________________
илья
Ты клиентские оружия делал или нет?
Добавлено 08-11-2022 в 21:20:
Я не могу твои архивы открыть, сохраняй в zip.
Добавлено 08-11-2022 в 21:21:
Не знаю, что ты там такое сделал, но cl_lw 0 должно было помочь в данном случае.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
илья
Ок, тогда попробуй наоборот cl_lw 1
И кстати после установки этого значения, надо движок полностью перезапускать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
илья
Ну что ж, продолжаем исправлять баги В этом коде я создаю молнию через пушку. Работала функция нормально. Теперь эта функция направляется на оригин карты, а не на позицию forward-а. как исправить?
void CShockrifle::CreateChargeEffect2( void )
{
#ifndef CLIENT_DLL
if( g_pGameRules->IsMultiplayer())
return;
int iBeam = 0;
for( int i = 2; i < 5; i++)
{
if( !m_pBeam[iBeam] )
m_pBeam[iBeam] = CBeam::BeamCreate("sprites/lgtning.spr", 1000);
m_pBeam[iBeam]-> PointEntInit( m_pPlayer->GetGunPosition() + gpGlobals->v_forward * 500, m_pPlayer->entindex() );
m_pBeam[iBeam]->SetStartAttachment(1);
m_pBeam[iBeam]->SetEndAttachment(i);
m_pBeam[iBeam]->SetNoise( 75 );
m_pBeam[iBeam]->pev->scale= 10;
m_pBeam[iBeam]->SetColor( 0, 253, 253 );
m_pBeam[iBeam]->SetScrollRate( 30 );
m_pBeam[iBeam]->SetBrightness( 190 );
iBeam++;
}
#endif
}
Добавлено 09-11-2022 в 12:43:
у меня появляется подозрение что он не считает функцию GetGunPosition
__________________
илья
Прежде, чем использовать forward вектор, нужно сначала сделать векторы через MakeVectors. Не вижу этого у тебя.
__________________
Мой мод на Xash
не не получилось прописывал это
Vector v_forward;
UTIL_MakeVectors( m_pPlayer->pev->v_angle + gpGlobals->v_forward );
__________________
илья
__________________
Мой мод на Xash
да все я другой код поставил даже лучше прежнего теперь моя пушка настоящими молниями бьет
Добавлено 09-11-2022 в 16:30:
поставил эвент от гауски и изменил под молнии
Добавлено 09-11-2022 в 16:32:
этот код он создаёт такие слабенькие молнии не массивные
Добавлено 09-11-2022 в 17:00:
Что ж, хотелось бы выдохнуть с облегчением, сказать, что я все баги в своем моде исправил. Но нет, еще один остался.
эти TE_SPRITETRAIL почему то разучились летать нормально как это исправить ?
__________________
илья
2 файл
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну в гауссе они же нормально летают?:не в гаусе в плазменной винтовке
Добавлено 09-11-2022 в 17:36:
в гауссе если ты про это балы то да норм летают но они в эвентах прописаны
Добавлено 09-11-2022 в 17:37:
как их из евентах вызывать я не совсем понимаю
Добавлено 09-11-2022 в 17:39:
хотя если покопаться подольше в гауссе может что то и нарою из этого
Добавлено 09-11-2022 в 18:16:
PLAYBACK_EVENT_FULL( FEV_NOTHOST, edict(), m_usPlasma, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0.0, 0, 0.0 );
как этот эвент заставить вызывать через оригин гранаты ? у меня он вызывается на оригин карты
Добавлено 09-11-2022 в 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'
__________________
илья
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
не FEV_GLOBAL ставил не работает
Попробуй назад открутить тоже не работает
Добавлено 09-11-2022 в 18:52:
мда с TE_SPRITETRAIL здесь конкретные проблемы
Добавлено 09-11-2022 в 19:59:
ееее пошло дело пошло исправляю баг да
Добавлено 09-11-2022 в 20:04:
мда правда есть один минус в этом способе размер спрайтов маленький
Добавлено 09-11-2022 в 20:05:
хотя ладно пойдет что есть то есть
Добавлено 09-11-2022 в 20:28:
класс исправил работает как надо
Добавлено 09-11-2022 в 22:22:
мдаа не думал что столкнусь с такой проблемой звук не воспроизводиться !
EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/fatrongrenade/hl2ep1citadelexplosion.wav", 1, ATTN_NORM);
функция вроде нормальная точно такие же там стоят нормально воспроизводятся наверное проблема со звуком или нет ?
Добавлено 09-11-2022 в 22:32:
дядя миша а ты уверен что ксаш баги видит может он сам баганутый это как минимум странно такое видеть что все звуки норм воспроизводятся а этот нет
Добавлено 09-11-2022 в 22:40:
я конечно не знаю поможет ли это или нет но вот сам звук может там есть ошибка хотя вряд тли
https://disk.yandex.ru/d/UiDA_iCUOpLxyw
__________________
илья
Частота дискретизации - 48 килогерц. Переконвертируй в 44100 хотя бы.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
илья
Ну вот, за полдня всё исправил, а говорил - сто тысяч миллионов багов.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ну теперь то да все ксашовские баги я исправил
Добавлено 10-11-2022 в 00:39:
Но все таки давай признаемся, что он все таки глюканутый. У меня он иногда вылетает, ошибки выдает. Не постоянно конечно, иногда кнопки на клавиатуре не всегда работают. это уже баги. Ксаша. Не моего мода.
Добавлено 10-11-2022 в 01:08:
ксаш еще и проигрывает сам атаку выстрела без разрешения мыши ну и как это понять ?
__________________
илья
Ну значит не все баги ты исправил.
Можешь еще попробовать Xash FWGS, там предиктинг должен лучше работать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
в принципе эти баги в игре особо сильно не мешают можно и забыть про них
Добавлено 10-11-2022 в 12:22:
как сделать не убиваемого монстра ? ничего не получается ставил 100000 хп бестолку
Добавлено 10-11-2022 в 12:29:
а здоровье монстров обязательно надо через gSkillData делать ?
__________________
илья
Посмотри код Gman
да кое что есть в TakeDamage
Добавлено 10-11-2022 в 12:43:
найс сработало спасибо
Добавлено 10-11-2022 в 12:47:
да как хорошо что в халф лайф есть такой не убиваемый монстр под названием gman
__________________
илья
кто знает можно ли в исходниках ставить вот такие числа>1000000000000 ?
Добавлено 11-11-2022 в 01:10:
это у нас триллион
Добавлено 11-11-2022 в 01:21:
я вот знаю что в java кодинге можно ставить и трилион и квантилион квадриллион а здесь все таки к сожалению есть кое какие ограничения по цифрам миллиард и все а дальше компилятор выдает ошибку. Но можно ли это ограничение снять ?
__________________
илья
Я вот никогда не делал моды, но не понимаю, как можно делать моды, не зная основ с++
https://metanit.com/cpp/tutorial/2.3.php
Хотя бы эту ссылку открой и читай до просветления.
__________________
Углеродные звезды с древними спутниками, которые колонизируют разумные грибы...
Газовые гиганты, на которых обитает метеорологический разум...
Миры, растянутые на мембранах, где измерения пересекаются...
Это невозможно описать нашим ограниченным языком...
а вот так оказываться можно если хочется сильно
Добавлено 11-11-2022 в 16:34:
честно прочитал ничего не понял
Добавлено 11-11-2022 в 16:35:
есть про байты биты наверно надо сначала это понять
Добавлено 11-11-2022 в 16:38:
мдаа и как это понять ? https://ru.wikipedia.org/wiki/%D0%9...%BA%D0%BE%D0%B4
Добавлено 11-11-2022 в 16:38:
вообще не в тему
__________________
илья
илья2 а зачем тебе сто тысяч миллионов? Ты хочешь записать госдолг США?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ну это да я по приколу такие большие цифры пишу
Добавлено 11-11-2022 в 16:48:
вооот смотрите какое больше число 1000000000000000000000000000
Добавлено 11-11-2022 в 16:49:
было бы прикольно такие цифры большие ставить
Добавлено 11-11-2022 в 16:52:
а компилятор мне ошибку выдает что такое число ставить нельзя вот и обидно стало
Добавлено 11-11-2022 в 17:22:
ага вот как прописывается long
long b = 1000000000;
b это уже само число
Добавлено 11-11-2022 в 17:22:
начинаю понимать немного
Добавлено 11-11-2022 в 17:26:
мда печально "длинный", за которым следует "длинный", является незаконным
Добавлено 11-11-2022 в 17:31:
error C2177: constant too big
Добавлено 11-11-2022 в 17:34:
даааааа сработало круто прописал вот эту функцию:
float num3 = 1000000000000000000000000000000.0f;
Добавлено 11-11-2022 в 17:43:
ай ладно забуду ничего у меня не получиться куча ошибок компилятор выдает
__________________
илья
__________________
__________________
илья
почему под TakeDamage нельзя делать radiusdamage ставлю radiusdamage монстр просто зависает и все
__________________
илья
Доброго времени суток!
Несколько вопросов:
1) Хочу доработать зомбаков - чтобы при смерти игрока они шли его жрать (технически проигрывая victory_dance ивент). По идее это сложно реализовать, ведь нужно определять радиус в котором все monster_zombie почуят хрючево и начнут сбегаться к игроку. Я пробовал стащить аналогичную тему у буллсквида, но ничего не вышло.
2) Как сделать у оружия анимацию "первого подбирания"? Ну то есть находит игрок новое оружие и проигрывается единожды анимация, как он его осматривает или там пафосно затвор взводит, итд.
3) Как реализовать смену сабмодели рук у оружия? Слишком ли это заморочное дело? Вроде в спирите такое есть но мне весь функционал этого мода не нужен
1 | BOOL CMP5::Deploy( ) |
2 | { |
3 | if ( <ПЕРЕМЕННАЯ> == FALSE ) { |
4 | <ПЕРЕМЕННАЯ> == TRUE; |
5 | return DefaultDeploy( "models/v_9mmAR.mdl", "models/p_9mmAR.mdl", MP5_DEPLOY_FIRST, "mp5" ); |
6 | } |
7 | return DefaultDeploy( "models/v_9mmAR.mdl", "models/p_9mmAR.mdl", MP5_DEPLOY, "mp5" ); |
8 | } |
__________________
Fight for Peace, Fight for Love
Подскажите где можно почитать тутор по вгуи, помню были на хл.ру, а сайт уже давно лёг на покой
__________________
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.
__________________
Fight for Peace, Fight for Love
__________________
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.
1 | BOOL CMP5::Deploy( ) |
2 | { |
3 | if ( <ПЕРЕМЕННАЯ> == FALSE ) { |
4 | <ПЕРЕМЕННАЯ> == TRUE; |
5 | return DefaultDeploy( "models/v_9mmAR.mdl", "models/p_9mmAR.mdl", MP5_DEPLOY_FIRST, "mp5" ); |
6 | } |
7 | return DefaultDeploy( "models/v_9mmAR.mdl", "models/p_9mmAR.mdl", MP5_DEPLOY, "mp5" ); |
8 | } |
1 | TYPEDESCRIPTION CShotgun::m_SaveData[] = |
2 | { |
3 | DEFINE_FIELD(CShotgun, m_flNextReload, FIELD_TIME), |
4 | DEFINE_FIELD(CShotgun, m_fInSpecialReload, FIELD_INTEGER), |
5 | DEFINE_FIELD(CShotgun, m_flNextReload, FIELD_TIME), |
6 | DEFINE_FIELD(CShotgun, m_flPumpTime, FIELD_TIME), |
7 | }; |
8 | IMPLEMENT_SAVERESTORE(CShotgun, CBasePlayerWeapon); |
__________________
Fight for Peace, Fight for Love
1 | TYPEDESCRIPTION CShotgun::m_SaveData[] = |
2 | { |
3 | DEFINE_FIELD(CShotgun, m_flNextReload, FIELD_TIME), |
4 | DEFINE_FIELD(CShotgun, m_fInSpecialReload, FIELD_INTEGER), |
5 | DEFINE_FIELD(CShotgun, m_flNextReload, FIELD_TIME), |
6 | DEFINE_FIELD(CShotgun, m_flPumpTime, FIELD_TIME), |
7 | }; |
8 | IMPLEMENT_SAVERESTORE(CShotgun, CBasePlayerWeapon); |
Легко же ты сдался...
TRACE_TEXTURE в TEXTURETYPE_PlaySound возвращает нулевой указатель при ударе монтировкой по скайбоксу. Это нормально?
Хотел проверить на удар по скаю, но вот не вышло. Или возвращение нулевого указателя и есть сигнал о том, что попали в скай?
Ради интереса даже заглянул в код XDM и нашёл там коммент
code:
pTextureName = TRACE_TEXTURE(pEntity->edict(), vecSrc, vecEnd);// BUGBUG: at some strange angles this shit fails and returns "sky"!!
__________________
I'm on github
I'm on opendesktop.org
FreeSlave помнится, в стародавние времена, когда я пользовался 2003-й студией и SDK 2.3, компиляция и в дебаге, и в релизе давала такой результат, что TRACE_TEXTURE возвращала что-то такое, из-за чего тип материала не определялся. Будто бы текстура не прописана в materials.txt.
https://hlfx.ru/forum/showthread.ph...4491#post144491
Там сама система материалов немного бажная, вот и глючит.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Так материалы ни при чем. Вопрос о движковой функции pfnTraceTexture и определение ская.
__________________
I'm on github
I'm on opendesktop.org
как сделан основной crosshair из dmc ?
пробовал найти любые ресурсы по этому ничего не нашел
__________________
илья
1 | /******************* DRAW CROSSHAIR *********************/ |
2 | iCrossLength = gHUD.m_scrinfo.charWidths[ *chCrossHair ]; |
3 | iCrossY = ScreenHeight / 2 - gHUD.m_scrinfo.iCharHeight / 2; |
4 | iCrossX = ScreenWidth / 2 - iCrossLength / 2; |
5 |
6 | gHUD.DrawHudString( iCrossX, iCrossY, iCrossX + 50, chCrossHair, 170, 170, 170 ); |
7 | /******************* DRAW CROSSHAIR *********************/ |
__________________
I'm on github
I'm on opendesktop.org
а ну теперь понятно он вырисовываться как отдельный худ
Добавлено 06-02-2023 в 09:04:
все спасибо теперь этот код можно в свои исходники ставить
__________________
илья
Здарова всем, играл как-то с друзьями в л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.
точечные энтити, выполняющие роль брашей будут нагружать карту( по сравнению с обычными брашами)? и кста , есть источник света, чтоб его не надо было компилить(энтитя источника света, свет этот не компилится а накарте отображается)?
Какие то попытки создать вечный двигатель.
И чтоб ресурсы не ело, и чтоб мильён полигонов. Бесплатно.
Не, это так не работает.
Это вроде как плагинами делают, AmxMod и всякое такое.
Ну или ремейк карты с нуля делай. Либо по декомпилу, либо ищи исправленный декомпил, если карта популярная.
как скомпилировать исходники decay ? может я неправильный visual studio использую ?
ссылки на исходники:
сорцы:https://github.com/FWGS/hlsdk-portable/tree/decay-pc
сорцы2:https://github.com/hoaxer/Half-Life-Decay
Добавлено 04-03-2023 в 10:39:
выполнял еще такую функцию
mkdir build && cd build
cmake ../
но безрезультатно выдает ошибки
__________________
илья
илья2 ветка Decay в hlsdk-portable недоделанная (и пока вообще заброшенная). Не пытайся её использовать.
Сорцы, выложенные самим разработчиком, содержат проект под старые версии Visual Studio. Мб в студии конвертация проекта сработает.
__________________
I'm on github
I'm on opendesktop.org
В последнее время я стал часто сталкиваться с некорректным воспроизведением анимации у вставленной на карту модели. Анимация воспроизводится рывками, кадры проскакивают. Но дело в том, что сама анимация зациклена и не имеет швов. Изменение значения framerate у cycler_sprite или fps в qc файле модели изменяет характер бага.
https://youtu.be/SSbUEfq-1ps
Опытным путем пришел к тому, что скорость воспроизведения анимации следует задавать в qc файле модели, а при размещении модели с анимацией на карте значение framerate должно быть равно количеству кадров анимации модели. В таком случае анимация воспроизводится практически корректно, но прыгающие кадры все еще имеют место.
Менее наглядное видео (таймкод)
https://youtu.be/5jD2j4DxZbs?t=92
Что можно предпринять, чтобы анимация всегда воспроизводилась корректно?
А 200 фепсов не многовато для голдовой модельки? Попробуй поднимать фреймрейт от 30 и смотреть, когда начинает проявляться. Как бы там от тикрейта сервера и клиентского фпс не было зависимости еще.
Пробовал множество значений framerate от 0.01 до нескольких тысяч. Также и с fps в qc. Больше всего тестов с framerate провел со значениями 1, 10, 30 и 60.
Количество кадров в самой анимации также менял. В основном 30, 60 240 кадров. Но на полное решение проблемы это не влияло.
А у тебя точно кейфрейм верно в анимации стоит? Частая ошибка такая, что последний кадр анимации равен первому, а от этого естественно получится как-будто анимация подергивается. Ну условно, у тебя шарик должен повернуться на 360 градусов за 360 секунд, стало быть за последнюю секунду шарик должен стремиться к начальному положению, но не достигать его.
Добавлено 19-04-2023 в 23:59:
Во вьюере-то оно как себя ведет?
В анимациях некоторых моделей передвигаю последний кадр за пределы таймлайна на один кадр. В этой модели я так не делал, мне было достаточно убрать интерполяцию между последним и первым кадром для плавной цикличности анимации. Во вьювере анимация отображается нормально, если значение фпс выставлено не мизерное(в противном случае вращения не будет). В Blender анимация отображается корректно.
Этот рывок происходит в 100% случаев? Если просто стоять и смотреть на модель.
__________________
Мой мод на Xash
Да, но он не слишком критичен, поскольку всего один за несколько минут.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну его не стоит ставить менее 0.01 или более 10.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Если скорость воспроизведения выше общего фреймрейта, то кадры и будут перескакивать, естественно.
У одинарного вещественного точность не бесконечная, а в голдсорсе фреймрейт не квантизирован, в отличие, от сорса, например.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
кстати, что там с анимироваными текстурами? лимиты повышены или как голдсорсе? а можно туда вообще видева запихнуть?
erfty
Видева без звука - как водка без пива!
__________________
а если гифка??
Вопрос - как определить энтитю локального игрока так, чтобы быть уверенным, что это энтитя именно мы, а не кто-то другой?
Поясню: у меня есть боты на сервере. Есть визуальный эффект на экране, который зависит от значения gEngfuncs.GetLocalPlayer()->curstate.vuser1.z. Пока я в игре - все хорошо. Но если я зайду в спектаторы (становлюсь невидимым, несолидным и т.д.) я иногда вижу этот эффект на экране, когда у какого-то бота, по всей видимости, изменилось это значение (ведь он тоже игрок).
В моем понимании выходит, что GetLocalPlayer возвращает мне локального игрока, а т.к. я в спеках и как бы "не совсем игрок", он подсовывает данные бота, ведь он локальный.
__________________
Мой мод на Xash
Aynekko режим спектатора - это когда подключаешься к HLTV Proxy. Прокси, по сути, такой же клиент, подключенный к серверу. А вот подключенные к прокси - уже не клиенты, а зрители-спектаторы. А "зайти в спектаторы" - перейти в режим обсервера. Игрок остаётся таким же подключенным клиентом, так же занимает слот на сервере, и к нему применяются все те же правила, что и к другим клиентам. Единственное, работает фильтр по pev->iuser1, отсекая всё ненужное и добавляя нужное. Чтобы у тебя не вылезал эффект, когда ты обсервер, добавь проверку на g_iUser1. Можно пойти дальше, и рисовать чужой эффект при наблюдении от первого лица. Через g_iUser2 можно получить индекс наблюдаемого игрока, а после его vuser1.z.
Добавлено 27-04-2023 в 18:17:
__________________
Мой мод на Xash
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Можно ли в хлсдк прямо в коде создать обычный куб вместо использования модельки?Хитбокс то можно создать а я вот иемнно про визуальную часть.
erfty вопрос: зачем? Чисто теоретически можно, да, теоретически можно что угодно, а на практике чорт его знает.
__________________
И главное, Артём, помни: не ешь желтый снег!
erfty ну посмотри как рисовать командами типа GL_QUAD, GL_TRIANGLE (точно не помню) главное координаты вершин и ювишки текстур корректно задать.
Стало интересно могут ли кнопки в хл иметь две функции, то есть на примере перезарядки если просто нажать R то играет анимация перезарядки, а если зажать то отображается менюшка или что-то другое
erfty так д3д же автоматом транслирует, нет? Я не разбирался.
Добавлено 06-06-2023 в 07:48:
__________________
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 на клиенте input.cpp, там KeyUp, KeyDown, CL_KeyState.
__________________
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.
HUD
Как сделать "изогнутый" HUD, как в Crysis 2/Cyberpunk 2077/ULTRAKILL?
Deadlocked1337 Скорее всего он рендерится в отдельный буфер и искажается шейдером.
Он там наверное в 3D рендерится, но с отключённым тестом на глубину.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Visual Studio
Есть ли какая-то особая версия Visual Studio, которая умеет компилировать код Paranoia 2?
Шестерка Corporate c процессор-паком.
Всем привет! Сделал свою карту c расширением *.bsp в hammer, теперь появился вопрос - как в неё поиграть?
Nitrw ну допустим сделал ты карту в формате BSP. Теперь вопрос: для какого движка?
__________________
И главное, Артём, помни: не ешь желтый снег!
А почему при спрыгивании с каната игроку дают инерцию через AbsVelocity, а не через BaseVelocity?
Кто его знает. Может так в опфоре было.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
code:
void CRopeSegment :: Touch( CBaseEntity* pOther ) { if( pOther->IsPlayer() ) { CBasePlayer *pPlayer = (CBasePlayer *)pOther; // Electrified wires deal damage. - Solokiller if( m_bCauseDamage ) { if( gpGlobals->time >= pev->dmgtime ) { if( pev->dmg < 0 ) pOther->TakeHealth( -pev->dmg, DMG_GENERIC ); else pOther->TakeDamage( pev, pev, pev->dmg, DMG_SHOCK ); pev->dmgtime = gpGlobals->time + 0.5f; } } if( GetMasterRope()->IsAcceptingAttachment() && !pPlayer->IsOnRope( )) { if( m_bCanBeGrabbed ) { pOther->SetAbsOrigin( m_Data.mPosition ); pPlayer->SetOnRopeState( true ); pPlayer->SetRope( GetMasterRope() ); GetMasterRope()->AttachObjectToSegment( this );
Хм, ну если вызвана функция Touch, значит игрок уже дотронулся до веровки.
В противном случае, как бы она вызвалась?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша Я посмотрел, по-моему её никто не вызывает. Ну то есть изначально, так-то она сама может вызвать себя.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша А можно как-то сделать чтоб такие вещи в поиске Студии показывались?
Разумеется нет. Про такие вещи даже компилятор не знает. Только в рантайме.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
У меня сразу несколько вопросов.
1. Как скомпилировать исходники п2? Компилятор упорно останавливается на 59%.
2. Как выдернуть код худа из п2? Думаю вместо него поставить худ из хл1.
__________________
Leaving this world isn't as scary as it sounds.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, батник, что был в комплекте с кодом.
Прерывается на
__________________
Leaving this world isn't as scary as it sounds.
Я никакого батника в комплекте с кодом не прикладывал.
Это вопросы к тому, кто приложил.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Наконец-то раздуплил физический смысл брать текущий момент времени, прибавлять к нему и сравнивать. То есть мы как бы отмечаем момент в будущем, ок.
По какому принципу код игрока делится на пре-тчинк и пост-тчинк? Например почему канат именно в претчинке? У меня сложилось впечатление что в претчинке мы ставим какие-то флаги в основном, а в пост-тчинке по ним уже действуем.
PreThink - до запуска физической симуляции игрока. PostThink - соответственно после.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну а с точки зрения этой симуляции в чем разница перед или после что-то делать? Это сделано потому что одни процессы физичные, а другие - нет?
Ну допустим ты делаешь что-то такое и хочешь чтобы симулятор физики это учёл уже прямо на этом кадре. Значит надо делать в PreThink. А в PostThink ты уже собираешь результаты симуляции - куда там игрок уткнулся, сколько ящиков задел, нуитд.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Здравствуйте. Хотелось бы получить информацию по следующему вопросу.
После уменьшения размера хулла игрока в 4 раза view модель полностью входит в геометрию, если подойти вплотную к стене.
Это происходит с такими размерами хуллов:
( 0 0 0 ) ( 0 0 0 )
( -4 -4 -8 ) ( 4 4 8 )
( -16 -16 -16 ) ( 16 16 16 )
( -4 -4 -4 ) ( 4 4 4 )
Но если увеличить размер хулла в длину/ширину, то уже такое не происходит:
( 0 0 0 ) ( 0 0 0 )
( -6 -6 -8 ) ( 6 6 8 )
( -16 -16 -16 ) ( 16 16 16 )
( -6 -6 -4 ) ( 6 6 4 )
Можно ли решить это на стороне сервера?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Как сделать printf в матчлибе? Там ниче не работает.
Бывает ли что перпендикуляр к прямой косячит? У меня персонаж движется по прямой, и постоянно ищет перпендикуляр к ней. До точки пересечения с прямой разрешено некое расстояние, так что это как бы цилиндр. Скорость небольшая, что-то вроде 5-10 юнитов за кадр. И вот хотя по длине ему остается 20-25 юнитов, персонаж внезапно выпадает из этого объема.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша матчлиба в ксашмоде.
А зачем тебе выводить сообщения непременно внутри самой матчлибы?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой сайт
Xash3D Modding Discord
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Разобрался, там оставалось магическое число 999 а сегмент рельсы был 1024
code:
for ( int k = 1; k<gpGlobals->maxEntities; k++, pStartEdict++ ) { if ( pStartEdict->free ) // Not in use continue; if ( !FStrEq ( STRING(pStartEdict->v.classname), "path_track" ) ) // if not match continue; // maps won't be super large, spam segments if 999 units is not long enough if ( (pStartEdict->v.origin - pev->origin).Length() > 1024.0f ) continue; pEndTmp = UTIL_FindEntityByTargetname ( NULL, STRING ( pStartEdict->v.target ) ); if (!pEndTmp ) continue; // test plpos against infinite and finite cylinder TempPos = NearestOnLine ( pStartEdict->v.origin, pEndTmp->pev->origin, pev->origin ); if( !VectorCompareEpsilon( TempPos, g_vecZero, ON_EPSILON ) && ((TempPos - pev->origin ).Length() < 64) ) { NewNearest = TempPos; // good one idStart = ENTINDEX( pStartEdict ); idEnd = ENTINDEX( pEndTmp->edict() ); break; } }
1024 вижу, 64 вижу. 999 не вижу.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша 999 было на месте 1024, там вон коммент есть.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Накапливается. В коде игрока (player.cpp) у меня каждый кадр что-то прибавляется к скорости. И если открыть консоль то видно что значение продолжает отбиваться и за пару секунд доходит до 2000, т.е. игра замерла но код игрока все ещё продолжает выполняться.
На клиенте это решали проверкой pparams->frametime потому что он обнуляется при паузе. Но на сервере оно не доступно, а gpGlobals->frametime на паузе не обнуляется.
Но если консоль открыта, игрок же всё равно не двигается. А когда консоль закроется, это будет сброшено.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша Любопытно какие механизмы могут существовать которые будут сбрасывать. Потому что на сервере вообще нет ничего связанного с паузами и консолями. Если я неправильно написал код мне бы понять как правильно, может быть надо его в playermove вместо этого пихать?
Добавлено 20-08-2023 в 22:01:
а pmove->frametime или чёт такое?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша О, обнуляется, спасибо. Интересно почему у него точность только три знака, а потом идут нули.
Почему игрок на которого применили SetAbsVelocity при движении как-то покачивается по синусоиде вверх-вниз как на волнах? Как будто всего на несколько юнитов.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Может это какой-нибудь CalcBob чудит?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Никак не могу понять, как можно передать строчку текста на клиент. А точнее, прописать в keyvalue энтити текст и потом, зная индекс энтити, получить его на клиенте. Я хотел попробовать ALLOC_STRING и получить id строчки на клиенте, но у меня в клиенте нет такой функции.
__________________
Мой мод на Xash
ALLOC_STRING только на сервере.
Только через MESSAGE_BEGIN и WRITE_STRING.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вопросец, а можно-ли в MP при смене карты сохранить весь инвентарь игрока как это происходит в сингле? Бегло покопал форум и гуголь, ничего не нашёл, подозреваю просто где-то кусок из сингла в мультиплеер перенести, направьте по верному пути плз.
В принципе можно, но халфа на такое не рассчитана, поэтому парой строк кода тут не отделаешься, придётся заморочиться. В том же квейке подобное было сделать куда как проще. Да оно там и работало - в кооперативе.
Вообщем надо выделить некоторое место и сохранить туда информацию о броне, здоровье, патронах и пушках для каждого игрока. А при заходе на новый уровень - дать всё это игроку. Какая-то глобальная структурка нужна где всё это держать во время смены уровня.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1 | //game.h |
2 |
3 | extern struct PlayerChangeLevelSave |
4 | { |
5 | int health = 100; |
6 | int hev_charge = 0; |
7 | int ammo_count[15] = {15}; |
8 | int have_weapons[23]; |
9 | }; |
1 | //multiplay_gamerules.cpp |
2 |
3 | #include ...... |
4 |
5 | PlayerChangeLevelSave player1, player2; |
6 | std::vector<PlayerChangeLevelSave> players = {player1, player2}; |
7 |
8 | ... |
9 |
10 | void CHalfLifeMultiplay::Think() |
11 |
12 | ... |
13 |
14 | for (int i = 0; i <= 1; i++) |
15 | { |
16 | CBaseEntity* pPlayer = UTIL_PlayerByIndex(i); |
17 | players[i].health = pPlayer->pev->health; |
18 | ALERT(at_console, "1Health:%i", pPlayer->pev->health); |
19 | players[i].hev_charge = pPlayer->pev->armorvalue; |
20 | ALERT(at_console, "1HEV:%i", pPlayer->pev->armorvalue); |
21 | players[i].ammo_count[1] = pPlayer->ammo_9mm; |
22 | } |
23 |
24 | ChangeLevel(); //intermission is over |
25 |
26 | ... |
27 |
28 | void CHalfLifeMultiplay::ChangeLevel() |
29 | ... |
30 |
31 | CHANGE_LEVEL(szNextMap, NULL); |
32 |
33 | for (int i = 0; i <= 1; i++) |
34 | { |
35 | CBaseEntity* pPlayer = UTIL_PlayerByIndex(i); |
36 | pPlayer->pev->health = players[i].health; |
37 | ALERT(at_console, "Health: %i", players[i].health); |
38 | pPlayer->pev->armorvalue = players[i].hev_charge; |
39 | ALERT(at_console, "HEV: %i", players[i].hev_charge); |
40 | pPlayer->ammo_9mm = players[i].ammo_count[1]; |
41 | } |
Сохранять надо перед вызовом ChangeLevel, тут всё правильно.
А восстанавливать в PutClientInServer чёт такое вообщем.
Ну и завести ещё переменную, что игрока ожидает инвентарь с прошлого уровня, сделать проверку на мультиплеер.
Там кажется есть PlayerSpawn или подобная функция. Вот в ней попробуй.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Перенёс в PlayerSpawn загрузку параметров, ох и долго-же я себе голову ломал...
По какой-то причине игре немного насрать на тот ChangeLevel что в multiplay_gamerules.cpp, перенёс сохранение в trigger.cpp и всё заработало , спасибо за помощь, пошёл допиливать код в адекватное состояние.
__________________
Мой сайт
Xash3D Modding Discord
1 | /* |
2 | go to the next level for deathmatch |
3 | only called if a time or frag limit has expired |
4 | */ |
5 | void NextLevel( void ) |
6 | { |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Как временно отключить гравитацию конкретно игроку? Чтобы он не дрейфовал вниз когда его передвигает SetAbsVelocity. Просто выставить мувтип fly не срабатывает.
pev->gravity = 0.0f;
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Решил ради тестов попробовать портануть модельку солдата из Q2 под ХЛ, столкнулся конечно-же с проблемой вертексной анимации и перегоне её в скелетную, чёт вспомнил о QR и QW, покопал их подфорум, ничё по этому поводу внятного не нашёл, ну неужели ничего внятного за все эти годы никто не придумал и нужно по классике ручками костылять модель в Т-позу и потом клеить на неё скелет из ХЛ или и того хуже - запиливать код вертексной анимации?
А что тут можно придумать внятного? Вертексная анимация получается путём запекания скелетной, т.е. это конвертация с потерями.
А то что утеряно уже никаким алгоритмом обратно не восстановишь, разве что нейросетью, которая лепит отсебятину, похожую на правду.
Добавлено 08-10-2023 в 16:11:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
В дикее был индикатор состояния перса (в т.ч. и на пк), типа прыгаешь, стоишь, сидишь, решил добавить его к себе, полез в исходники пк-порта и таки нашёл нужный файл ( https://github.com/hoaxer/Half-Life...l_dlls/mode.cpp ), перетащил весь связанный код к себе, запускаю и что вижу? Лишь фонарик, прикол в том что если убрать спрайты для него из hud.txt - появляется новый индикатор, фонарика естесна нет, что это такое и как быть не понимаю.
UPD. подкинул hud.txt из дикея - всё заработало, потом добавил строчки индикатора ровно туда где и в дикее - тоже заработало, максимально странная шняга.
if (игрок->pev->weapons & (1<<WEAPON_ОРУЖИЕ); |
Смог реализовать, но чуть иначе, переменная где-то вообще оказалась не нужна, в класс обычной пушки добавляю AddDuplicate в котором через pOriginal->m_pPlayer получаю игрока и уже проворачиваю всё что мне нужно, только вот теперь единственно нужно вот это:
code:
if (игрок->pev->weapons & (1<WEAPON_ОРУЖИЕ);
Из флагов блокирующих гравитацию игрока, ONROPE и ONTRAIN бесполезны, а ONBARNACLE ломает код из SetAbsVelocity и SetAbsOrigin.
Гравитация почему-то пересиливается только юзанием обоих этих команд, иначе будет медленное сползание по нескольку юнитов за кадр. Раньше я думал что это гравитация просто применяется после SetAbsVelocity чтобы программисту не нужно было думать про неё лишний раз, но теперь я хз.
Не пойму, почему у тебя pev->gravity = 0 не работает.
Она обязана работать, иначе бы игрок соскальжевал с лестниц.
Ну засунь в pmove сообщение, посмотри чему равен pmove>gravity.
Добавлено 15-10-2023 в 22:19:
Ты под халфой-то делаешь или под ксашем?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Под ксашем
Я еще не пробовал делать ответвления в PM_ функции и там подменять.
Я сувал туда дебаг, он писал что вычитает 6.4 из pmove->velocity[2]
Гравитация была обычная 800, за один кадр 13, ну и там она по половинкам получается 6
вообщем зануляй гравити у игрока и всё должно работать.
Прямо в классе игрока pev->gravity = 0.0f;
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Обнаружил что в переиздании второй кваки (вот внезапно) все модельки пересадили на кости в формате md5, сгенерил одной утилитой из этой модели smd для компиляции, а вот как для неё написать qc не знаю, дайте какие-нибудь статьи о компиляции моделей для монстров, ничего похожего не нашёл.
Тут статьей не обойтись. Тут целое дело. Я даже studiomdl дорабатывал, чтобы собрать эти модельки в формат халфы.
Может как-нибудь попозже напишу об этом. Но те модельки которые вы видели в сентябрьской демке - это тоже скелетка из ремастера, но уже первой кваки.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
На тебе примерчег QC.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Скомпилил модельку, пришлось немного с qc-шкой пошаманить (некоторых костей не было в том, что выплюнул Noesis), а также текстуру отзеркалить по вертикали т.к. uv-мапа не сходилась, моделька даже под FWGS завелась, единственно солдатик больно уж карликовый получился, но не страшно, со скейлом пошаманить и нормалёк.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Попробовал перенести супершотган, вышло неплохо и быстро (модель за 5 минут буквально перекомпилил), с монстрами беда т.к. попробовал налепить солдата на грунтов и они кроме как очень криво стрелять и дохнуть ничего не могут, даже ходить, а так хоть щас садись и делай Q2Remake.
С ходьбой беда - эти анимации не содержат motion vector.
Добавлено 17-10-2023 в 21:46:
А для первой кваки нельзя даже задать линейный равноускоренный вектор, там монстры за каждый шаг преодолевают разное расстояние. Исключением является разве что прыгучий демон.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
code:
if (pmove->gravity) ent_gravity = pmove->gravity; else ent_gravity = 1.0;
Не на шесть, а на девять. Там не приключения. Есть вью-англес, они следуют за мышкой и есть просто англес, у которых питч поделён на 3, эти ориентируют тушку игрока. Пришло из кваки, понятное дело. В халфе это в принципе было уже не нужно, там тушку можно было ориентировать анимациями, но всё равно оставили. А вот в хл2 по идее этого уже нет.
Добавлено 19-10-2023 в 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'
Делаю наклоны из за углов как в Сталкере, сделал прототип чисто наклоняющий взгляд на 30 градусов в input.cpp, как оказалось одного наклона камеры недостаточно, как можно сместить камеру? В view.cpp это сделано через изменение vieworg в pparams, может как-то можно его получить? Также думаю как можно интерполировать значение наклона камеры чтобы наклон был плавный.
Временная зона GMT. Текущее время 10:18. | Страницы (2): [1] 2 » Показать все 3950 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024