HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- XashXT (https://hlfx.ru/forum/forumdisplay.php?forumid=30)
-- Используете ли вы ксаш-мод в 2019-м году (https://hlfx.ru/forum/showthread.php?threadid=5194)
Отправлено Crystallize 30-04-2019 в 04:56:
Там пушабля, на неё парентом танк, на танк парентом триггер-пуш вниз до самой пушабли, и танку ещё файртаргет какой-то. Всё просто.
Я так понимаю, из-за того что серверный кадр тоже имеет ненулевую длительность, любое вращение происходит не по кругу а по многоугольнику со множеством сторон. Может быть дело в том что середина и конец каждой из сторон находятся на чуть разном расстоянии от оси вращения. Каждый раз угол поворота вычисляется заново, для новой позиции, может быть накапливается ошибка? Хотя с другой стороны, если вращаемый оъект начинает и заканчивает движение на вершинах многоугольника, то ничего накапливаться не должно.
Я ещё когда кодом это делал, пытался всякие компенсации высчитывать, безрезультатно. Возможно потому что там было вдобавок клиент-серверное отставание.
Отправлено Дядя Миша 30-04-2019 в 08:12:
Да вроде нормально выглядит
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 10-05-2019 в 12:56:
Где в коде вообще вычисленное направление танка копируется в вектор gpGlobals->v_forward?
Отправлено Дядя Миша 10-05-2019 в 13:05:
Crystallize нигде.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 10-05-2019 в 13:53:
Дядя Миша а как, оно после этого ещё проходит через всю твою систему парентов? Но в конце-концов где-то же оно назначается, даже если не на вектор v_forward а совершенно иначе?
Отправлено Дядя Миша 10-05-2019 в 14:00:
Crystallize ты вопросы по существу задавай. Почему что-то там должно вообще назначаться в gpGlobals->v_forward?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 30-05-2019 в 01:33:
Зачем овербрайты убрали? Во времена Ксаша 3887 смотрелось симпатично, потому что яркие хл-ские баунсы с ними гармонируют.
Отправлено Дядя Миша 30-05-2019 в 05:31:
Crystallize а ты в шейдерах поумножай освещение на два - вот тебе и будут овербрайты и канпилировать ничо не надо 
Открываешь допустим StudioSolid_fp.glsl, а там
C++ Source Code:
diffuse.rgb *= var_VertexLight; // apply lighting |
ну и умножаешь вот так
C++ Source Code:
diffuse.rgb *= var_VertexLight * 2.0; // apply lighting |
А для брашей открываешь BmodelSoldi_fp.glsl находишь вот эту строчку
C++ Source Code:
и тожы на два её умножаешь. Или сделай константу в const.h и оттуда накручивай.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 30-05-2019 в 10:48:
А у тебя именно так овербрайты и были сделаны, чтоли? Удвоением контрастности?
Отправлено Дядя Миша 30-05-2019 в 14:16:
Crystallize а как надо делать овербрайты по твоему? Ну сделай иначе.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 30-05-2019 в 16:13:
Дядя Миша ну компилятор просто считает в увеличенном диапазоне, а мы рисуем полученную лайтмапу.
Добавлено 30-05-2019 в 23:13:
в диапазоне 0-255 всм
Отправлено Crystallize 27-10-2019 в 09:20:
Там на клиенте ещё попадаются места где pitch инвертирован. 
А ещё я поболтал с аффтаром Zion WarCry, он думал что у тебя клиент и сервер теперь в одной дллке. Что-то он такое год назад там увидел, ну я его разубедил.
Добавлено 27-10-2019 в 16:20:
Кстати перенесите мой голос во второй пункт пожалуйста.
Отправлено Дядя Миша 27-10-2019 в 15:04:
Цитата:
Crystallize писал:
перенесите мой голос
Люди, живущие в России видимо с пелёнок уверены, что власть имущие всегда имеют право тасовать их голоса как вздумается. Увы, нет. Единственный способ это сделать - вручную поправить базу.
Цитата:
Crystallize писал:
Там на клиенте ещё попадаются места где pitch инвертирован.
для игрока да.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 17-01-2020 в 10:16:
В Half-Payne есть реализация субтитров. Но чтобы их рисовать поверх картинки там какой-то хак. Ксаш может сломаться от такого?
C++ Source Code:
4 | #include <<img src="images/smilies/pp2.gif" border="0" alt="">sapi.h> |
5 | #include "FontAwesome.h" |
6 | #include "gamemode_gui.h" |
8 | #include "model_indexes.h" |
10 | #include "player_info_window.h" |
14 | extern cl_enginefunc_t gEngfuncs; |
16 | extern bool inMainMenu; |
17 | SDL_Window *window = NULL; |
19 | // To draw imgui on top of Half-Life, we take a detour from certain engine's function into HL_ImGUI_Draw function |
22 | // One of the final steps before drawing a frame is calling SDL_GL_SwapWindow function |
23 | // It must be prevented, so imgui could be drawn before calling SDL_GL_SwapWindow |
25 | // This will hold the constant address of x86 CALL command, which looks like this |
27 | // Last 4 bytes specify an offset from this address + 5 bytes of command itself |
28 | unsigned int origin = NULL; |
30 | // We're scanning 1 MB at the beginning of hw.dll for a certain sequence of bytes |
31 | // Based on location of that sequnce, the location of CALL command is calculated |
32 | MODULEINFO module_info; |
33 | if ( GetModuleInformation( GetCurrentProcess(), GetModuleHandle( "hw.dll" ), &module_info, sizeof( module_info ) ) ) { |
34 | origin = ( unsigned int ) module_info.lpBaseOfDll; |
36 | const int MEGABYTE = 1024 * 1024; |
37 | char *slice = new char[MEGABYTE]; |
38 | ReadProcessMemory( GetCurrentProcess(), ( const void * ) origin, slice, MEGABYTE, NULL ); |
40 | unsigned char magic[] = { 0x8B, 0x4D, 0x08, 0x83, 0xC4, 0x08, 0x89, 0x01, 0x5D, 0xC3, 0x90, 0x90, 0x90, 0x90, 0x90, 0xA1 }; |
42 | for ( unsigned int i = 0 ; i < MEGABYTE - 16; i++ ) { |
43 | bool sequenceIsMatching = memcmp( slice + i, magic, 16 ) == 0; |
44 | if ( sequenceIsMatching ) { |
53 | ReadProcessMemory( GetCurrentProcess(), ( const void * ) origin, opCode, 1, NULL ); |
54 | if ( opCode[0] != 0xFFFFFFE8 ) { |
55 | gEngfuncs.Con_DPrintf( "Failed to embed ImGUI: expected CALL OP CODE, but it wasn't there\n" ); |
59 | gEngfuncs.Con_DPrintf( "Failed to embed ImGUI: failed to get hw.dll memory base address\n" ); |
63 | window = SDL_GetWindowFromID( 1 ); |
64 | ImGui_ImplSdl_Init( window ); |
66 | // To make a detour, an offset to dedicated function must be calculated and then correctly replaced |
67 | unsigned int detourFunctionAddress = ( unsigned int ) &HL_ImGUI_Draw; |
68 | unsigned int offset = ( detourFunctionAddress ) - origin - 5; |
70 | // The resulting offset must be little endian, so |
71 | // 0x0A852BA1 => A1 2B 85 0A |
73 | for ( int i = 0; i < 4; i++ ) { |
74 | offsetBytes[i] = ( offset >> ( i * 8 ) ); |
77 | // This is WinAPI call, blatantly overwriting the memory with raw pointer would crash the program |
78 | // Notice the 1 byte offset from the origin |
79 | WriteProcessMemory( GetCurrentProcess(), ( void * ) ( origin + 1 ), offsetBytes, 4, NULL ); |
81 | SDL_AddEventWatch( HL_ImGUI_ProcessEvent, NULL ); |
83 | ImGuiStyle *style = &ImGui::GetStyle(); |
84 | style->AntiAliasedShapes = false; |
85 | style->WindowRounding = 0.0f; |
86 | style->ScrollbarRounding = 0.0f; |
Отправлено Ku2zoff 17-01-2020 в 10:44:
Crystallize оно в ксаше вообще не заработает. Там дергается что-то из hw.dll по определенному адресу. В ксаше мало того, что дллка по-другому называется, так и адрес тем более другой. Разве что ДМ завел в движке хак для этого.