]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
Fix compatibility with DP's own server with NEHAHRABJP2 and 3 protocols.
authorCloudwalk <cloudwalk009@gmail.com>
Tue, 22 Sep 2020 04:13:12 +0000 (00:13 -0400)
committerCloudwalk <cloudwalk009@gmail.com>
Tue, 22 Sep 2020 04:13:12 +0000 (00:13 -0400)
Actually adhere to the protocols with regards to modelindex and
soundindex widths.

cl_parse.c
cl_protocol_basenq.h
sv_main.c
svvm_cmds.c

index c70a3391eb98fefceba8962690d6bd8b94e6d6e3..b89027eed17a1140af7253afbfff6d548b6e0f0c 100644 (file)
@@ -2170,7 +2170,7 @@ void CL_ParseStaticSound (int large)
        int                     sound_num, vol, atten;
 
        cls.protocol->ReadVector(&cl_message, org);
-       if (large || cls.protocol == &protocol_nehahrabjp2)
+       if (large)
                sound_num = (unsigned short) MSG_ReadShort(&cl_message);
        else
                sound_num = MSG_ReadByte(&cl_message);
index f969245b4880ad7070966d126c6bbedc987aa45d..7d2b473f6e3ad554285e7e4be3ef5f9dabed22e4 100644 (file)
@@ -59,7 +59,7 @@ static void Netmsg_svc_setview (protocol_t *protocol)         // [short] entity number
 
 static void Netmsg_svc_sound (protocol_t *protocol)                    // <see code>
 {
-       CL_ParseStartSoundPacket(false);
+       CL_ParseStartSoundPacket(protocol == &protocol_nehahrabjp2 || protocol == &protocol_nehahrabjp3 ? true : false);
 }
 
 static void Netmsg_svc_time (protocol_t *protocol)                     // [float] server time
@@ -255,7 +255,7 @@ static void Netmsg_svc_foundsecret (protocol_t *protocol)
 
 static void Netmsg_svc_spawnstaticsound (protocol_t *protocol)
 {
-       CL_ParseStaticSound (false);
+       CL_ParseStaticSound (protocol == &protocol_nehahrabjp2 || protocol == &protocol_nehahrabjp3 ? true : false);
 }
 
 static void Netmsg_svc_intermission (protocol_t *protocol)
index 75b2f1b4e001731cf04489bd8c2ebcd85b10a326..34a72b24bd9e544c3601053aa5423fb8362b180a 100644 (file)
--- a/sv_main.c
+++ b/sv_main.c
@@ -794,7 +794,7 @@ void SV_StartSound (prvm_edict_t *entity, int channel, const char *sample, int n
        }
        else
                MSG_WriteShort (dest, (ent<<3) | channel);
-       if ((field_mask & SND_LARGESOUND) || sv.protocol == &protocol_nehahrabjp2)
+       if ((field_mask & SND_LARGESOUND) || sv.protocol == &protocol_nehahrabjp2 || sv.protocol == &protocol_nehahrabjp3)
                MSG_WriteShort (dest, sound_num);
        else
                MSG_WriteByte (dest, sound_num);
@@ -3015,7 +3015,7 @@ SV_ModelIndex
 */
 int SV_ModelIndex(const char *s, int precachemode)
 {
-       int i, limit = ((sv.protocol == &protocol_netquake || sv.protocol == &protocol_quakedp || sv.protocol == &protocol_nehahramovie || sv.protocol == &protocol_nehahrabjp || sv.protocol == &protocol_nehahrabjp2 || sv.protocol == &protocol_nehahrabjp3) ? 256 : MAX_MODELS);
+       int i, limit = ((sv.protocol == &protocol_netquake || sv.protocol == &protocol_quakedp || sv.protocol == &protocol_nehahramovie) ? 256 : MAX_MODELS);
        char filename[MAX_QPATH];
        if (!s || !*s)
                return 0;
@@ -3078,7 +3078,7 @@ SV_SoundIndex
 */
 int SV_SoundIndex(const char *s, int precachemode)
 {
-       int i, limit = ((sv.protocol == &protocol_netquake || sv.protocol == &protocol_quakedp || sv.protocol == &protocol_nehahramovie || sv.protocol == &protocol_nehahrabjp || sv.protocol == &protocol_nehahrabjp2 || sv.protocol == &protocol_nehahrabjp3) ? 256 : MAX_SOUNDS);
+       int i, limit = ((sv.protocol == &protocol_netquake || sv.protocol == &protocol_quakedp || sv.protocol == &protocol_nehahramovie || sv.protocol == &protocol_nehahrabjp) ? 256 : MAX_SOUNDS);
        char filename[MAX_QPATH];
        if (!s || !*s)
                return 0;
index ffb9af8e93f6deb32059003b6c58ba992a9c052b..57c1c802b33fa11f334118105660d8a105c68100 100644 (file)
@@ -488,6 +488,9 @@ static void VM_SV_ambientsound(prvm_prog_t *prog)
        if (soundnum >= 256)
                large = true;
 
+       if(sv.protocol == &protocol_nehahrabjp)
+               large = false;
+
        // add an svc_spawnambient command to the level signon packet
 
        if (large)
@@ -497,7 +500,7 @@ static void VM_SV_ambientsound(prvm_prog_t *prog)
 
        sv.protocol->WriteVector(&sv.signon, pos);
 
-       if (large || sv.protocol == &protocol_nehahrabjp || sv.protocol == &protocol_nehahrabjp2 || sv.protocol == &protocol_nehahrabjp3)
+       if (large || sv.protocol == &protocol_nehahrabjp2 || sv.protocol == &protocol_nehahrabjp3)
                MSG_WriteShort (&sv.signon, soundnum);
        else
                MSG_WriteByte (&sv.signon, soundnum);
@@ -1542,17 +1545,17 @@ static void VM_SV_makestatic(prvm_prog_t *prog)
        if (PRVM_serveredictfloat(ent, modelindex) >= 256 || PRVM_serveredictfloat(ent, frame) >= 256)
                large = true;
 
-       if (large)
+       if (sv.protocol == &protocol_nehahrabjp || sv.protocol == &protocol_nehahrabjp2 || sv.protocol == &protocol_nehahrabjp3)
        {
-               MSG_WriteByte (&sv.signon,svc_spawnstatic2);
+               MSG_WriteByte (&sv.signon,svc_spawnstatic);
                MSG_WriteShort (&sv.signon, (int)PRVM_serveredictfloat(ent, modelindex));
-               MSG_WriteShort (&sv.signon, (int)PRVM_serveredictfloat(ent, frame));
+               MSG_WriteByte (&sv.signon, (int)PRVM_serveredictfloat(ent, frame));
        }
-       else if (sv.protocol == &protocol_nehahrabjp || sv.protocol == &protocol_nehahrabjp2 || sv.protocol == &protocol_nehahrabjp3)
+       else if (large)
        {
-               MSG_WriteByte (&sv.signon,svc_spawnstatic);
+               MSG_WriteByte (&sv.signon,svc_spawnstatic2);
                MSG_WriteShort (&sv.signon, (int)PRVM_serveredictfloat(ent, modelindex));
-               MSG_WriteByte (&sv.signon, (int)PRVM_serveredictfloat(ent, frame));
+               MSG_WriteShort (&sv.signon, (int)PRVM_serveredictfloat(ent, frame));
        }
        else
        {