а в opengl.cfg нолики проставлять, взаместо еденичек. Ну и конечно вчитываться в названия переменных. Так например, gl_extensions отключает разом все, а gl_ignorehwgamma или скажем texgamma никакого отношения не имеют к расширениям.
Дядя Миша интересно было бы почитать статьи навроде цикла про внутреннее устройство Quake движков, только про ксаш - то есть в чем отличия, какие возможности дает кодинг под ксаш и ксаш-мод, и т.д. Или это тоже только за донейт, потому что это прихоть и кому действительно надо, тот сам разберется? Просто для мапперов документация как-бы вышла, а вот по кодингу - нет. Ну в принципе, если что я донейт давно хотел внести, просто суммы-то у меня смехотворные - что там 500 рублей, да даже 1000?
Дядя Миша ну вот например алгоритм работы рендерера в ксаш-моде, или особенности имплементации ньютона, то есть как и в документации для мапперов - какие возможности появились, и какие старые обновились. Вот опять же - какие функции из vgui требует движок. Там что-то с мышкой связано, выходит, если повырезать vgui, то придется писать свой код управления мышкой? Или имеется в виду чисто игровой курсор?
VGUI отрезается за 20 минут от движка. После отрезания мышка начинает работать некорректно, но это легко исправляется заменой функции IN_ToggleClientMouse на ниже приведенную:
C++ Source Code:
1
void IN_ToggleClientMouse( int newstate, int oldstate )
//rope starts above me! I am not the start
if( hRope[rope_id].myPoints[END].z > hRope[rope_id].myPoints[START].z )
hRope[rope_id].myPoints[MID_POINT].z = hRope[rope_id].myPoints[START].z;
else//I am the start, it ends belows me
hRope[rope_id].myPoints[MID_POINT].z = hRope[rope_id].myPoints[END].z;
//tweaks rope lenght a bit, 100 must be changed
if( hRope[rope_id].bRandomCheck )
hRope[rope_id].myLenght += gEngfuncs.pfnRandomLong( -100, 100 );
hRope[rope_id].myPoints[MID_POINT].z -= hRope[rope_id].myLenght;//this is because rope lenght
int vs_id = 0;
//create lot of vectors which creates a curve
do
{
vBezier.x = hRope[rope_id].myPoints[START].x*B1(count) + hRope[rope_id].myPoints[MID_POINT].x*B2(count) + hRope[rope_id].myPoints[END].x*B3(count);
vBezier.y = hRope[rope_id].myPoints[START].y*B1(count) + hRope[rope_id].myPoints[MID_POINT].y*B2(count) + hRope[rope_id].myPoints[END].y*B3(count);
vBezier.z = hRope[rope_id].myPoints[START].z*B1(count) + hRope[rope_id].myPoints[MID_POINT].z*B2(count) + hRope[rope_id].myPoints[END].z*B3(count);
hRope[rope_id].mySpline[vs_id] = vBezier;
// if( hRope[rope_id].bCheckLight )
// {
// create temporary entity to get illumination from it
alight_t lighting;
cl_entity_t *LightEntity;
vec3_t light_dir;
// bogus data as valve calls it
LightEntity = gEngfuncs.GetLocalPlayer();
if ( !LightEntity )
return;
// move it in the particles location
LightEntity->origin = hRope[rope_id].mySpline[vs_id];
// I have no idea what this does but if you don't do it -> crash
lighting.plightvec = light_dir;
vs_id++;//this will executed detailBias=value times!
count += detailBias;
}while( count <= 1.0 );
//if everything was okay, sum a rope and check draw it
hRope[rope_id].bDraw = TRUE;
rope_id++;
}
//draw ALL segments for ALL splines
void GLRopeRender::DrawRopes( float fltime )
{
for( int p = 0; p < MAX_ROPES; p++ )//iterate through all rope IDs
{
if( hRope[p].bDraw == TRUE )
for( int i = 0; i < hRope[p].mySegments; i++ )
{
if( i == hRope[p].mySegments-1 )//no info on the next vector, tie up with the end
DrawBeam( hRope[p].mySpline[i], hRope[p].myPoints[START],hRope[p].myScale, hRope[p].mySpriteFile, NULL, hRope[p].r,hRope[p].g,hRope[p].b, hRope[p].vSplineColor[i]);
else
DrawBeam( hRope[p].mySpline[i], hRope[p].mySpline[i+1],hRope[p].myScale, hRope[p].mySpriteFile, NULL, hRope[p].r,hRope[p].g,hRope[p].b, hRope[p].vSplineColor[i] );
}
}
}
The reset ropes called in the hud_msg.cpp
and here CHud :: MsgFunc_InitHUD
The Draw ropes called in the r_misc.cpp
and here : DLLEXPORT HUD_AddEntity
The rope is drawed just not follow the parent i think there is some client side code need do this job.
Can help me what need to do the rope follow his parent ?
Подскажите пожалуйста, как сделать рот_доор, и две кнопки. Так, чтобы каждая кнопка поворачивала рот_доор в свою сторону? Через префиксы может как нибудь. Заранее спасибо!))
Решил попробовать сделать. Преальфа. Пока только одна клавиша рабочая - газ. Ну и садиться можно только если перед этим стоишь на ворлдбраше. Из воды запрыгнуть нельзя.
Вот так. Может быть доведу до ума. Впринцпе мне кажется реальным сделать полную копию как в hl2. Даже с кулемётом и шлюхами)