This is a multi-part message in MIME format.
--
The following text applies to the H-L 1 engine!
If s.o. by accident can forward this mail to Martin O. (since I guess he
coded the DemoPlayer plugin), that would be great.


There are several bugs with the demoplayer and I understand what "Back
Catalog" means (ok may be I don't), but may be there is s.o. that care's a
bit 'bout H-L 1 in his or her (probably non existent) spare time:

1. dem_forcehltv doesn't set the player that recorded the demo to be visible
That is not a problem, this can be fixed with "DrawMe" or the "Mirv Demo
Tool"

2. The viewdemo plugin's build in demo fix for bogeous Demo Headers (i.e.
when the game crashed during recording) doesn't work anymore, probably
because the network protocol version is hard-coded and it got incremented
one or two years ago.
This is not a problem, this can be fixed with "Half-Life Demo Fix" (included
in the MDT X-Mas 07 edition).
If you want to program your own fix for rebuilding demo headers please stick
to
http://web.archive.org/web/20050308173439/http://www.planetquake.com/demospecs/dem
or I can give you the code of the "Half-Life Demo Fix" (which is pretty
ugly, so you probably don't want it).
With the information from this link and a _lot_ of spare time you should
also be able to program a tool that converts in-eye demos to HLTV demos,
with the hints given bellow (also use the HLSDK-p3 from metamod.org and the
Q1 Id-Software source for hints).


3. dem_forcehtlv fake spectator slot bug:

There is no 3rd party fix for it yet (although possible) and due to the
nature of the problem a fix in the viewdemo source would be the most
efficient solution form my point of view.

Of course we'll try to work on a fix, but currently most of the MDT team's
resources (if present) are dedicated towards the GUI.

But may be the author of the DemoPlayer plugin can fix it with acceptable
effort earlier or s.o. else has a good idea.

Therefor I'll try to give a short description of the problem and it's cause
bellow:


DemoPlayer Bug with dem_forcehtlv 1

I am not sure if it will happen always when the demo has more than 10
players, however this is why it happens for several of those:

For HLTV Demos there is a Hidden entity (Index 1) used as the "local player"
which allows you to move the camera around etc..

When dem_forcehltv is 1, then Valve's DemoEditor will add such an entity too
(index varies).
However all demo events marked as local will be skippend in that case since
the local player index does not match. This is why you won't hear any sounds
when dem_focehltv is enabled (this can be theoretically fixed, however the
efforts needed might be too much at the moment compared to the benefits),

While it seems to work fine with many demos containing less than 10 players,
for some reason the entity gets overwritten by a player entity in some demos
(>10 players?).
This causes that the event's recorded for that player can conflict with your
inputs (depends on the mod code), in our case the spec_mode setting is one
of the problems it causes (will happen in most mods, since the HL-SDK
probably picks those up in HUD_ProcessPlayerState).


Annways here are some images showing some debug data to explain the
problem:
(the local player is determined by GetLocalPlayer() from the cl_enginefunc_t
struct)

HLTV Demo: http://img297.imageshack.us/my.php?image=0hltvwf4.gif

A in-eye demo with 10 players listed that doesn't have the problem:
dem_focehltv 0:
http://img442.imageshack.us/my.php?image=1eyeoknoforcetg9.gif
dem_forcehltv 1: http://img248.imageshack.us/my.php?image=2eyeokforceqv4.gif

A in-eye demo that has more than 10 players listed that has the problem
(also the original local player index is not 1, which might be a problem
too, but I don't know):
dem_forcehltv 0:
http://img180.imageshack.us/my.php?image=3eyebugnoforcenr4.gif
dem_forcehltv 1:
http://img101.imageshack.us/my.php?image=4eyebugforcequ5.gif
demo download: http://www.badongo.com/file/7822066


If for whatever reason you need that __mirv_listplayers command, you can
either add s.th. similiar to your mod with the stub code bellow (that is
neither efficient nor safe) or you can use the 1.1.3.160 mdt dev edition:
http://hhg-clan.de/hlae/files/mdt_1_1_3_160_dev.cab
The MIRV Demo Tool is technically a hack, therefore you should use it for
making movies / watching demos only.
Epilepsy warning: This software will cause fast changing images and colors
on your screen.


With kind regards
Dominik
PS: I bet the mail distribution server breaks digitally signed mails : P
PPS: I hope I didn't forget anything, heh.

Stub code:

void PrintDebugPlayerInfo(cl_entity_s *pl)

{

static hud_player_info_t m_hpinfo;

memset(&m_hpinfo,0,sizeof(hud_player_info_t));

pEngfuncs->pfnGetPlayerInfo(pl->index,&m_hpinfo);

pEngfuncs->Con_Printf("%i (%s): %s, %s, %i, %i, %i, %i, %i,
%i\n",pl->index,(pl->curstate.effects & EF_NODRAW) ? "y" :
"n",m_hpinfo.name,m_hpinfo.model,m_hpinfo.ping,m_hpinfo.packetloss,m_hpinfo.topcolor,m_hpinfo.bottomcolor,m_hpinfo.spectator,m_hpinfo.thisplayer);

}

REGISTER_DEBUGCMD_FUNC(listplayers)

{

bool bLocalListed=false;

int iLocalIndex;

cl_entity_s *plocal = pEngfuncs->GetLocalPlayer();

pEngfuncs->Con_Printf("Listing Players:\nindex (EF_NODRAW): name, model,
ping, packetloss, topcolor, bottomcolor, spectator, thisplayer\n");

for (int i = 0; i <= pEngfuncs->GetMaxClients(); i++)

{

cl_entity_t *e = pEngfuncs->GetEntityByIndex(i);

if (e && e->player)

{

PrintDebugPlayerInfo(e);

if (e->index==plocal->index)

{

bLocalListed=true;

iLocalIndex=e->index;

}

}

}

if (bLocalListed)

{

pEngfuncs->Con_Printf("The local player is index %i.\n",iLocalIndex);

} else {

pEngfuncs->Con_Printf("The local player is hidden (not flagged as
player):\n");

PrintDebugPlayerInfo(plocal);

}

}
--
[ smime.p7s of type application/x-pkcs7-signature deleted ]
--


_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to