HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Лажа со стрейфами (https://hlfx.ru/forum/showthread.php?threadid=3495)
Отправлено marikcool 25-06-2012 в 12:34:
Цитата:
Дядя Миша писал:
Это автор Half-Life: Enchanced?
ага, тут http://homepage.ntlworld.com/pr.searle/testns/
кстати hlmv с отображение рэгдола которые грузит rag файлы) так побаловаться посмотреть)
Отправлено Ku2zoff 25-06-2012 в 12:42:
Вот ещё кое-что по теме серверной настройки костей:
http://forums.bots-united.com/showthread.php?t=8090
Отправлено marikcool 25-06-2012 в 12:54:
кто бы запилил, готов проспонсировать на пиво)
Отправлено Дядя Миша 25-06-2012 в 12:56:
Судя по картинке автор до сих пор не слез с Win 3.11
Это печально.

Добавлено 25-06-2012 в 16:56:
Цитата:
marikcool писал:
кто бы запилил, готов проспонсировать на пиво)
Ой-ей-ей! И это говорит проффесионал, у которого в сигнатуре на AMX-форуме написано "пишу плагины, дорого" ? 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено marikcool 25-06-2012 в 12:59:
Цитата:
Дядя Миша писал:
Судя по картинке автор до сих пор не слез с Win 3.11
Это печально.
забавно, но судя по иконке это скин win3.11 для XP )
Добавлено 25-06-2012 в 16:59:
Цитата:
Дядя Миша писал:
Ой-ей-ей! И это говорит проффесионал, у которого в сигнатуре на AMX-форуме написано "пишу плагины, дорого" ?
просто времени будет затрачено больше на написание состовляющией, я его лучше потрачу на гемплей.
так то я и карты и графику и сайт могу запилить, но занимаются этим другие люди.
Отправлено Дядя Миша 25-06-2012 в 13:08:
Вот штука хорошая: http://homepage.ntlworld.com/pr.sea...tns/studio_v9.h
космобайкеров-гномов грузить. Больше там нет ничего интересного.
__________________
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-06-2012 в 15:21:
Цитата:
Дядя Миша писал:
космобайкеров-гномов грузить.
Это модельку doctor.mdl? Там версия студиомодели старая, ведь так? HLMV вылетает при попытке открыть.
Отправлено Дядя Миша 25-06-2012 в 16:40:
Цитата:
Ku2zoff писал:
Там версия студиомодели старая, ведь так?
девятая версия. Вот жеж хидер подправленный, с учётом изменений.
ну как подправлен - фичи десятой версии закоменчены.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 25-06-2012 в 17:04:
Сейчас поглядел внимательно код 9ти-направленного блендинга, что на форуме Арранжевого Мента выложен. По-моему, там лишнего кода много, навроде функций, работающих с локальными анимациями. Это что-то типа предиктинга для модели локального игрока? Как я понял, для реализации этого блендинга нужны следующие функции:
C++ Source Code:
StudioSetupBones - настраивает по-новомодному косточки игрока |
StudioProcessGait - проигрывает гэйт-анимации, почти не отличается от оригинала, из неё вызываются следующие две |
CalculateYawBlend - считает бленд по горизонтали |
CalculatePitchBlend - считает бленд по вертикали |
LookupAnimation - вызывается из StudioSetupBones, как я понял, находит нужный из 9ти блендов в каждой анимации |
Поправьте, если ошибаюсь, может быть какую-нибудь важную функцию упустил.
Отправлено Дядя Миша 25-06-2012 в 17:21:
Цитата:
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 25-06-2012 в 17:35:
Цитата:
Дядя Миша писал:
слава богу, хоть кто-то заметил.
Может быть не я один
Но, похоже, только я написал об этом. Сдаётся мне, что какие-нибудь товарищи умудрились подменить в своих исходникак все файлы теми, что любезно даны в архиве
Хотя, для того, чтобы блендинг зафурычил, достаточно подменить GameStudioModelRenderer.cpp и GameStudioModelRenderer.h. Ну а по-хорошему, надо только лишь заменить StudioSetupBones, StudioProcessGait и добавить расчёты и поиск блендов.
З.Ы. Мне интересно, почему в коде настройки костей есть место, где анимация ходьбы хаком поворачивается на 26 градусов? Неужели и в КС так же?
Отправлено marikcool 25-06-2012 в 18:50:
Ku2zoff если занимаешься по данному вопросу стукни в аську 344388533
Добавлено 25-06-2012 в 22:50:
может ли cs 1.6 блендинг дергать что либо из DLL_FUNCTIONS, т.к он не активируется, работает старый.?
Отправлено pRoxxx 25-06-2012 в 19:23:
Цитата:
Дядя Миша писал:
Ой-ей-ей! И это говорит проффесионал, у которого в сигнатуре на AMX-форуме написано "пишу плагины, дорого" ?
Ну дык пиво это и есть дорого. (=
Отправлено marikcool 25-06-2012 в 22:01:
приложил код, работает но увы тоже 2way.
h_export.cpp :
C++ Source Code:
3 | * Copyright © 1996-2002, Valve LLC. All rights reserved. |
5 | * This product contains software technology licensed from Id |
6 | * Software, Inc. ("Id Technology"). Id Technology © 1996 Id Software, Inc. |
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. |
17 | ===== h_export.cpp ======================================================== |
19 | Entity classes exported by Halflife. |
28 | // Holds engine functionality callbacks |
29 | enginefuncs_t g_engfuncs; |
30 | globalvars_t *gpGlobals; |
34 | //extern void Mod_InitStudioAPI( void ); |
35 | // Required DLL entry point |
41 | if (fdwReason == DLL_PROCESS_ATTACH) |
45 | mpDLL = LoadLibrary("mp.dll"); |
48 | MessageBox( 0, "mp.DLL Not Found", "Error", MB_OK ); |
51 | //Mod_InitStudioAPI( ); //mcc cs 16 hook |
53 | else if (fdwReason == DLL_PROCESS_DETACH) |
62 | #include "r_studioint.h" |
65 | typedef int (*GETBLENDINGAPI)( int, void**, void*, float (*transform)[3][4], float (*bones)[MAXSTUDIOBONES][3][4] ); |
66 | typedef int (FAR *GETENTITYAPI)(DLL_FUNCTIONS *, int); |
67 | typedef int (FAR *GETNEWDLLFUNCTIONS)(NEW_DLL_FUNCTIONS *, int *); |
68 | typedef void (DLLEXPORT *GIVEFNPTRSTODLL)(enginefuncs_t *, globalvars_t *); |
69 | GIVEFNPTRSTODLL g_pfnGiveFnptrsToDll; |
70 | GETENTITYAPI g_pfnGetEntityAPI; |
71 | GETNEWDLLFUNCTIONS g_pfnGetNewEntityAPI; |
72 | GETBLENDINGAPI g_pfnServerBlendingAPI; |
73 | HMODULE g_hGameLib=NULL; |
74 | void DLLEXPORT GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) |
76 | memcpy(&g_engfuncs, pengfuncsFromEngine, sizeof(enginefuncs_t)); |
79 | g_hGameLib = LoadLibrary("mp.dll"); |
82 | MessageBox( 0, "mp.dll load error", "[!]", MB_OK ); |
85 | g_pfnGetEntityAPI = (GETENTITYAPI)GetProcAddress (g_hGameLib, "GetEntityAPI"); |
86 | g_pfnGiveFnptrsToDll = (GIVEFNPTRSTODLL)GetProcAddress (g_hGameLib, "GiveFnptrsToDll"); |
87 | g_pfnServerBlendingAPI = (GETBLENDINGAPI)GetProcAddress (g_hGameLib, "Server_GetBlendingInterface"); |
88 | g_pfnGetNewEntityAPI = (GETNEWDLLFUNCTIONS)GetProcAddress (g_hGameLib, "GetNewDLLFunctions"); |
89 | if (!g_pfnGetEntityAPI) {MessageBox( 0, "pfnGetEntityAPI load error", "[!]", MB_OK ); return;} |
90 | if (!g_pfnGiveFnptrsToDll) {MessageBox( 0, "pfnGiveFnptrsToDll load error", "[!]", MB_OK ); return;} |
91 | if (!g_pfnServerBlendingAPI) {MessageBox( 0, "pfnServerBlendingAPI load error", "[!]", MB_OK ); return;} |
92 | if (!g_pfnGetNewEntityAPI) {MessageBox( 0, "GetNewDLLFunctions load error", "[!]", MB_OK ); return;} |
94 | (*g_pfnGiveFnptrsToDll)(pengfuncsFromEngine, pGlobals); |
95 | g_engfuncs.pfnServerPrint("g_pfnGiveFnptrsToDll -> mp.dll READY\n"); |
98 | extern "C" int __declspec( dllexport ) Server_GetBlendingInterface (int version, void **ppinterface, void *pstudio, float (*rotationmatrix)[3][4], float (*bonetransform)[128][3][4]) |
100 | // this function synchronizes the studio model animation blending interface (i.e, what parts |
101 | // of the body move, which bones, which hitboxes and how) between the server and the game DLL. |
102 | // some MODs can be using a different hitbox scheme than the standard one. |
103 | if (g_pfnServerBlendingAPI == NULL) return false; |
105 | if (!(*g_pfnServerBlendingAPI) (version, ppinterface, pstudio, rotationmatrix, bonetransform)) |
107 | MessageBox( 0, "ServerBlendingAPI ERROR FROM mp.dll!", "[!]", MB_OK ); |
110 | g_engfuncs.pfnServerPrint("ServerBlendingAPI -> mp.dll READY\n"); |
114 | extern "C" int __declspec( dllexport ) GetNewDLLFunctions(NEW_DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion) |
116 | // it appears that an extra function table has been added in the engine to gamedll interface |
117 | // since the date where the first enginefuncs table standard was frozen. These ones are |
118 | // facultative and we don't hook them, but since some MODs might be featuring it, we have to |
119 | // pass them too, else the DLL interfacing wouldn't be complete and the game possibly wouldn't |
121 | if (g_pfnGetNewEntityAPI == NULL) return false; |
123 | if (!(*g_pfnGetNewEntityAPI) (pFunctionTable, interfaceVersion)) |
125 | //LogToFile (true, LOG_CRITICAL, "GetNewDLLFunctions: ERROR - Not Initialized."); |
126 | MessageBox( 0, "GetNewDLLFunctions ERROR FROM mp.dll!", "[!]", MB_OK ); |
129 | g_engfuncs.pfnServerPrint("GetNewDLLFunctions -> mp.dll READY\n"); |
137 | void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) |
139 | memcpy(&g_engfuncs, pengfuncsFromEngine, sizeof(enginefuncs_t)); |
140 | gpGlobals = pGlobals; |
Добавлено 26-06-2012 в 01:30:
что интересно, раз в контровском ServerBlendingAPI тоже самое что и в движке, надыбал через гугл оффсеты с серверной дллки.
C++ Source Code:
CBasePlayer::CalculatePitchBlend(void) 000EF720 |
CBasePlayer::CalculateYawBlend(void) 000EB5D0 |
CBasePlayer::StudioPlayerBlend(int *,float *) |
получается гдето в тхинке CBasePlayer и стоит переключатель бленда.
Добавлено 26-06-2012 в 02:01:
C++ Source Code:
1 | 500(505) : m_iGaitSequence CBasePlayer::Spawn(), CBasePlayer::PostThink(), GetPlayerGaitsequence() |
3 | 501(506) : m_flGaitFrame CBasePlayer::Spawn(), CBasePlayer::StudioProcessGait() |
5 | 502(507) : m_flGaitYaw CBasePlayer::Spawn(), CBasePlayer::StudioEstimateGait(), CBasePlayer::CalculateYawBlend(), UTIL_GetPlayerGaitYaw() |
7 | 503(508) : m_flPrevGaitOrigin_x CBasePlayer::Spawn(), CBasePlayer::StudioEstimateGait() |
9 | 504(509) : m_flPrevGaitOrigin_y CBasePlayer::Spawn(), CBasePlayer::StudioEstimateGait() |
11 | 505(510) : m_flPrevGaitOrigin_z CBasePlayer::Spawn(), CBasePlayer::StudioEstimateGait() |
13 | 506(511) : m_flPitch CBasePlayer::StudioProcessGait(), CBasePlayer::CalculatePitchBlend(), GetPlayerPitch() |
15 | 507(512) : m_flYaw CBasePlayer::CalculateYawBlend(), GetPlayerYaw() |
17 | 508(513) : m_flGaitMovement CBasePlayer::Spawn(), CBasePlayer::StudioEstimateGait(), CBasePlayer::CalculateYawBlend(), CBasePlayer::StudioProcessGait() |
19 | 509(514) : m_fAutoWeaponSwitch CBasePlayer::SetPrefsFromUserinfo(), CHalfLifeMultiplay::FShouldSwitchWeapon() |
21 | 510(515) : m_iUserPrefs CBasePlayer::SetPrefsFromUserinfo(), CHalfLifeTraining::PlayerThink(), CHalfLifeTraining::PlayerSpawn(), ClientCommand(), ShowVGUIMenu() |
23 | 510 m_iUserPrefs - setinfo _vgui_menus (1<<0), _ah (1<<8), uses_shield (1<<16), has_shield (1<<24) |
25 | 511(516) : m_bObserverHasTarget CBasePlayer::Observer_CheckTarget(), CBasePlayer::Observer_SetMode() |
27 | 512(517) : m_flFindNextPlayerTime CBasePlayer::Observer_FindNextPlayer() |
29 | 513(518) : m_flDtMultiplier CBasePlayer::StudioEstimateGait() ( 3.5 or 0.05 ) |
33 | 500 - 505 -> CBasePlayer:: StudioEstimateGait() |
список используемых функций:
C++ Source Code:
1 | CBasePlayer::CalculatePitchBlend(void) |
2 | CBasePlayer::CalculateYawBlend(void) |
3 | CBasePlayer::StudioEstimateGait(void) |
4 | CBasePlayer::StudioPlayerBlend(int *,float *) |
5 | CBasePlayer::StudioProcessGait(void) |
Отправлено Ku2zoff 26-06-2012 в 04:28:
Дядя Миша на сервере нужна только новая функция SetupBones или что-то ещё?
marikcool ой-ой-ёй, ещё и в код игрока лезть придётся... Но там слишком много функций, мне кажется, будет достаточно тех, которые необходимы на клиенте, то есть
C++ Source Code:
StudioSetupBones - отдельная |
StudioProcessGait - в коде игрока |
CalculateYawBlend - в коде игрока |
CalculatePitchBlend - в коде игрока |
У меня мозгов не хватает как это вместе связать... Не может быть, чтобы в SV_SetupBones было тоже, что и в движке.