X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fclient%2FMain.qc;h=835d2855ed78a866c8e0e15a806b63b6ff6b9766;hp=076b255a358f206d76a9b4d5b58f7a7a6daa332e;hb=fcbf9538330960b989dbe84e7188349d7e8b109f;hpb=7b772862f8e35704bd91da01be941ec25eb10e22;ds=sidebyside diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 076b255a3..835d2855e 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -152,8 +152,8 @@ void CSQC_Init(void) GetTeam(COLOR_SPECTATOR, true); // add specs first // needs to be done so early because of the constants they create - RegisterWeapons(); - RegisterGametypes(); + CALL_ACCUMULATED_FUNCTION(RegisterWeapons); + CALL_ACCUMULATED_FUNCTION(RegisterGametypes); WaypointSprite_Load(); @@ -383,9 +383,10 @@ float button_zoom; // CSQC_InputEvent : Used to perform actions based on any key pressed, key released and mouse on the client. // Return value should be 1 if CSQC handled the input, otherwise return 0 to have the input passed to the engine. // All keys are in ascii. -// bInputType = 0 is key pressed, 1 is key released, 2 is mouse input. +// bInputType = 0 is key pressed, 1 is key released, 2 and 3 are mouse input. // In the case of keyboard input, nPrimary is the ascii code, and nSecondary is 0. // In the case of mouse input, nPrimary is xdelta, nSecondary is ydelta. +// In the case of mouse input after a setcursormode(1) call, nPrimary is xpos, nSecondary is ypos. float CSQC_InputEvent(float bInputType, float nPrimary, float nSecondary) { float bSkipKey; @@ -671,7 +672,7 @@ void Ent_ReadAccuracy(void) return; } - for(w = 0, f = 1; w <= WEP_LAST - WEP_FIRST; ++w, f *= 2) + for(w = 0, f = 1; w <= WEP_LAST - WEP_FIRST; ++w) { if(sf & f) { @@ -683,6 +684,10 @@ void Ent_ReadAccuracy(void) else weapon_accuracy[w] = (b - 1.0) / 100.0; } + if(f == 0x800000) + f = 1; + else + f *= 2; } } @@ -697,6 +702,9 @@ void CSQC_Ent_Update(float bIsNewEntity) float savetime; t = ReadByte(); + if(autocvar_developer_csqcentities) + print(sprintf("CSQC_Ent_Update(%d) with self=%i self.entnum=%d self.enttype=%d t=%d\n", bIsNewEntity, self, self.entnum, self.enttype, t)); + // set up the "time" global for received entities to be correct for interpolation purposes savetime = time; if(servertime) @@ -793,6 +801,9 @@ void Ent_Remove() // CSQC_Ent_Remove : Called when the server requests a SSQC / CSQC entity to be removed. Essentially call remove(self) as well. void CSQC_Ent_Remove() { + if(autocvar_developer_csqcentities) + print(sprintf("CSQC_Ent_Remove() with self=%i self.entnum=%d self.enttype=%d\n", self, self.entnum, self.enttype)); + if(wasfreed(self)) { print("WARNING: CSQC_Ent_Remove called for already removed entity. Packet loss?\n"); @@ -815,17 +826,26 @@ void Gamemode_Init() // CSQC_Parse_StuffCmd : Provides the stuffcmd string in the first parameter that the server provided. To execute standard behavior, simply execute localcmd with the string. void CSQC_Parse_StuffCmd(string strMessage) { + if(autocvar_developer_csqcentities) + print(sprintf("CSQC_Parse_StuffCmd(\"%s\")\n", strMessage)); + localcmd(strMessage); } // CSQC_Parse_Print : Provides the print string in the first parameter that the server provided. To execute standard behavior, simply execute print with the string. void CSQC_Parse_Print(string strMessage) { + if(autocvar_developer_csqcentities) + print(sprintf("CSQC_Parse_Print(\"%s\")\n", strMessage)); + print(ColorTranslateRGB(strMessage)); } // CSQC_Parse_CenterPrint : Provides the centerprint_hud string in the first parameter that the server provided. void CSQC_Parse_CenterPrint(string strMessage) { + if(autocvar_developer_csqcentities) + print(sprintf("CSQC_Parse_CenterPrint(\"%s\")\n", strMessage)); + centerprint_hud(strMessage); } @@ -1112,6 +1132,9 @@ float CSQC_Parse_TempEntity() float nTEID; nTEID = ReadByte(); + if(autocvar_developer_csqcentities) + print(sprintf("CSQC_Parse_TempEntity() with nTEID=%d\n", nTEID)); + // NOTE: Could just do return instead of break... switch(nTEID) {