Hello, everyone!
It is required for me that NehQuake should display more that 255 of ammo, like in DarkPlaces. Only the original NehQuake is meant to play Nehahra, as Seven said sometime.
I already modified some source files: sv_main.c and cl_parse.c and compiled the engine.
in cl_parse.c in CL_ParseClientData:
if (bits & SU_ARMOR)
// i = MSG_ReadByte ();
i = MSG_ReadShort ();//Alex
else
i = 0;
if (cl.stats[STAT_ARMOR] != i)
{
cl.stats[STAT_ARMOR] = i;
Sbar_Changed ();
}
if (bits & SU_WEAPON)
i = CL_ReadByteShort ();
else
i = 0;
if (cl.stats[STAT_WEAPON] != i)
{
cl.stats[STAT_WEAPON] = i;
Sbar_Changed ();
}
i = MSG_ReadShort ();
if (cl.stats[STAT_HEALTH] != i)
{
cl.stats[STAT_HEALTH] = i;
Sbar_Changed ();
}
// i = MSG_ReadByte ();
i = MSG_ReadShort ();//Alex
if (cl.stats[STAT_AMMO] != i)
{
cl.stats[STAT_AMMO] = i;
Sbar_Changed ();
}
for (i=0 ; i<4 ; i++)
{
// j = MSG_ReadByte ();//Alex
j = MSG_ReadShort ();
if (cl.stats[STAT_SHELLS+i] != j)
{
cl.stats[STAT_SHELLS+i] = j;
Sbar_Changed ();
}
}
in sv_main.c in SV_WriteClientdataToMessage:
if (bits & SU_ARMOR)
// MSG_WriteByte (msg, ent->v.armorvalue);//Alex
MSG_WriteShort (msg, ent->v.armorvalue);
if (bits & SU_WEAPON)
SV_WriteByteShort (msg, SV_ModelIndex(pr_String("SV_WriteClientdataToMessa ge", ent->v.weaponmodel)));
MSG_WriteShort (msg, ent->v.health);
//MSG_WriteByte (msg, ent->v.currentammo);
//MSG_WriteByte (msg, ent->v.ammo_shells);
//MSG_WriteByte (msg, ent->v.ammo_nails);
//MSG_WriteByte (msg, ent->v.ammo_rockets);
//MSG_WriteByte (msg, ent->v.ammo_cells);//commented by Alex
MSG_WriteShort (msg, ent->v.currentammo);
MSG_WriteShort (msg, ent->v.ammo_shells);
MSG_WriteShort (msg, ent->v.ammo_nails);
MSG_WriteShort (msg, ent->v.ammo_rockets);
MSG_WriteShort (msg, ent->v.ammo_cells);
But when I started the game and selected skill, it throws Host_Error:
Host_Error: CL_ParseServerMessage: illegible server message (service 99, last service 'svc_clientdata')
When i comment out this line:
default:
// Host_Error ("CL_ParseServerMessage: illegible server message (service %d, last service '%s')", cmd, Svc_Name(lastcmd));
, it throws next error:
Host_Error: CL_ParseServerMessage: Server is protocol 1999066616 instead of 15 or 10000-10002
Commented out that line, and received one more error:
Host_Error: CL_ParseUpdate: invalid model (2401, max = 1024)
Update: the problem is no longer actual : I used the code from FitzQuake and problem have been solved.