\r
precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/lastsecond.wav"));\r
precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/narrowly.wav"));\r
+\r
+ precache_sound (strcat("helper/", cvar_string("cl_helper_voice"), "/health.wav"));\r
+ precache_sound (strcat("helper/", cvar_string("cl_helper_voice"), "/armor.wav"));\r
+ precache_sound (strcat("helper/", cvar_string("cl_helper_voice"), "/ammo.wav"));\r
+ precache_sound (strcat("helper/", cvar_string("cl_helper_voice"), "/speed.wav"));\r
+ precache_sound (strcat("helper/", cvar_string("cl_helper_voice"), "/stomachload.wav"));\r
}\r
\r
void AuditLists()\r
return s;\r
}\r
\r
+string Team_ColorCode(float teamid)\r
+{\r
+ if (teamid == COLOR_TEAM1)\r
+ return "^1";\r
+ else if (teamid == COLOR_TEAM2)\r
+ return "^4";\r
+ else if (teamid == COLOR_TEAM3)\r
+ return "^3";\r
+ else if (teamid == COLOR_TEAM4)\r
+ return "^6";\r
+ else\r
+ return "^7";\r
+}\r
+\r
+// decolorizes and team colors the player name when needed\r
+string playername(string thename, float teamid)\r
+{\r
+ string t;\r
+ if (teamplay)\r
+ {\r
+ t = Team_ColorCode(teamid);\r
+ return strcat(t, strdecolorize(thename));\r
+ }\r
+ else\r
+ return strdecolorize(thename);\r
+}\r
+\r
float cvar_or(string cv, float v)\r
{\r
string s;\r
}\r
}\r
}\r
+\r
+void DrawCircleClippedPic(vector centre, float radius, string pic, float f, vector rgb, float a, float drawflag)\r
+{\r
+ float x, y, q, d;\r
+ vector ringsize, v, t;\r
+ ringsize = radius * '1 1 0';\r
+\r
+ x = cos(f * 2 * M_PI);\r
+ y = sin(f * 2 * M_PI);\r
+ q = fabs(x) + fabs(y);\r
+ x /= q;\r
+ y /= q;\r
+\r
+ if(f >= 1)\r
+ {\r
+ // draw full rectangle\r
+ R_BeginPolygon(pic, drawflag);\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x += 0.5 * ringsize_x; t += '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_y += 0.5 * ringsize_y; t += '0.5 -0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x -= 0.5 * ringsize_x; t -= '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_y -= 0.5 * ringsize_y; t -= '0.5 -0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+ R_EndPolygon();\r
+\r
+ d = q - 1;\r
+ if(d > 0)\r
+ {\r
+ R_BeginPolygon(pic, drawflag);\r
+ v = centre; t = '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x += 0.5 * ringsize_x; t += '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+ }\r
+ }\r
+ else if(f > 0.75)\r
+ {\r
+ // draw upper and first triangle\r
+ R_BeginPolygon(pic, drawflag);\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x += 0.5 * ringsize_x; t += '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_y += 0.5 * ringsize_y; t += '0.5 -0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x -= 0.5 * ringsize_x; t -= '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+ R_EndPolygon();\r
+ R_BeginPolygon(pic, drawflag);\r
+ v = centre; t = '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x -= 0.5 * ringsize_x; t -= '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_y -= 0.5 * ringsize_y; t -= '0.5 -0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ d = q - 0.75;\r
+ if(d <= 0)\r
+ R_EndPolygon();\r
+ }\r
+ else if(f > 0.5)\r
+ {\r
+ // draw upper triangle\r
+ R_BeginPolygon(pic, drawflag);\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x += 0.5 * ringsize_x; t += '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_y += 0.5 * ringsize_y; t += '0.5 -0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x -= 0.5 * ringsize_x; t -= '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+ R_EndPolygon();\r
+\r
+ d = q - 0.5;\r
+ if(d > 0)\r
+ {\r
+ R_BeginPolygon(pic, drawflag);\r
+ v = centre; t = '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x -= 0.5 * ringsize_x; t -= '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+ }\r
+ }\r
+ else if(f > 0.25)\r
+ {\r
+ // draw first triangle\r
+ R_BeginPolygon(pic, drawflag);\r
+ v = centre; t = '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x += 0.5 * ringsize_x; t += '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_y += 0.5 * ringsize_y; t += '0.5 -0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ d = q - 0.25;\r
+ if(d <= 0)\r
+ R_EndPolygon();\r
+ }\r
+ else\r
+ {\r
+ d = q;\r
+ if(d > 0)\r
+ {\r
+ R_BeginPolygon(pic, drawflag);\r
+ v = centre; t = '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x += 0.5 * ringsize_x; t += '0.5 0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+ }\r
+ }\r
+\r
+ if(d > 0)\r
+ {\r
+ v = centre; t = '0.5 0.5 0';\r
+ v_x += x * 0.5 * ringsize_x; t += x * '0.5 0.5 0';\r
+ v_y += y * 0.5 * ringsize_y; t += y * '0.5 -0.5 0';\r
+ R_PolygonVertex(v, t, rgb, a);\r
+ R_EndPolygon();\r
+ }\r
+}\r
+\r
+const vector GETPLAYERORIGIN_ERROR = '1123581321 2357111317 3141592653'; // way out of bounds for anything on the map\r
+vector getplayerorigin(float pl)\r
+{\r
+ string s;\r
+ entity e;\r
+\r
+ s = getplayerkey(pl, "TEMPHACK_origin");\r
+ if(s != "")\r
+ return stov(s);\r
+\r
+ e = entcs_receiver[pl];\r
+ if(e)\r
+ return e.origin;\r
+\r
+ return GETPLAYERORIGIN_ERROR;\r
+}\r