]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
Add resendcsqcents command to ask server to resend all csqc entities, used in demo...
authorDes <xon@damianv.com.ar>
Mon, 5 Aug 2024 11:59:10 +0000 (08:59 -0300)
committerDes <xon@damianv.com.ar>
Mon, 5 Aug 2024 11:59:10 +0000 (08:59 -0300)
protocol.h
sv_ccmds.c
sv_ents_csqc.c

index 92b98dba248374ee33ee479a07bae0f8a663e69b..a85193a70dba0d8f3304a714aec1ab59c194738a 100644 (file)
@@ -1077,6 +1077,7 @@ void EntityStateQW_ReadPlayerUpdate(void);
 void EntityFrameQW_CL_ReadFrame(qbool delta);
 
 struct client_s;
+void EntityFrameCSQC_LostAllFrames(struct client_s *client);
 void EntityFrameCSQC_LostFrame(struct client_s *client, int framenum);
 qbool EntityFrameCSQC_WriteFrame (struct sizebuf_s *msg, int maxsize, int numnumbers, const unsigned short *numbers, int framenum);
 
index aa6790e5a552d9b9a2db75ec3b772a01a292cfbe..ca713b58f5462e91f248d09e3496c644271fa65e 100644 (file)
@@ -734,6 +734,20 @@ static void SV_Pings_f(cmd_state_t *cmd)
                MSG_WriteString(&host_client->netconnection->message, "\n");
 }
 
+/*
+====================
+SV_Resend_All_Csqc_Ents_f
+
+send all csqc ents from scratch to this player
+====================
+*/
+static void SV_Resend_All_Csqc_Ents_f(cmd_state_t *cmd)
+{
+       if (!host_client->netconnection)
+               return;
+       EntityFrameCSQC_LostAllFrames(host_client); //resend all entities
+}
+
 /*
 ==================
 SV_Status_f
@@ -1669,6 +1683,7 @@ void SV_InitOperatorCommands(void)
        Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "spawn", SV_Spawn_f, "internal use - signon 2 (client has sent player information, and is asking server to send scoreboard rankings)");
        Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "begin", SV_Begin_f, "internal use - signon 3 (client asks server to start sending entities, and will go to signon 4 (playing) when the first entity update is received)");
        Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "pings", SV_Pings_f, "internal use - command sent by clients to request updated ping and packetloss of players on scoreboard (originally from QW, but also used on NQ servers)");
+       Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "resendcsqcents", SV_Resend_All_Csqc_Ents_f, "internal use - command sent by clients to request updated ping and packetloss of players on scoreboard (originally from QW, but also used on NQ servers)");
 
        Cmd_AddCommand(CF_CHEAT | CF_SERVER_FROM_CLIENT, "god", SV_God_f, "god mode (invulnerability)");
        Cmd_AddCommand(CF_CHEAT | CF_SERVER_FROM_CLIENT, "notarget", SV_Notarget_f, "notarget mode (monsters do not see you)");
index 3e09b3caba5d34ba9f117147c17a2b92a090e9f1..6c78868c5dfef8e4f23b4b738228bd5a7ddacadd 100644 (file)
@@ -5,7 +5,7 @@
 // (including QUAKE), no packet loss handling for CSQC is done, which makes
 // CSQC basically useless.
 // Always use the DP5 protocol, or a higher one, when using CSQC entities.
-static void EntityFrameCSQC_LostAllFrames(client_t *client)
+void EntityFrameCSQC_LostAllFrames(client_t *client)
 {
        prvm_prog_t *prog = SVVM_prog;
        // mark ALL csqc entities as requiring a FULL resend!