X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Futil.qc;h=7fa2f576a64649cce85982cf908b5b4b0ae2a229;hb=e6bc209c0d1918c8f36ffa4c09daf4d969fa2b06;hp=bb2fcba0abacc5ecef45730709add23a735e5468;hpb=8453b937f5516bc70a813794e9c78b6c43e63587;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/util.qc b/qcsrc/common/util.qc index bb2fcba0a..7fa2f576a 100644 --- a/qcsrc/common/util.qc +++ b/qcsrc/common/util.qc @@ -2001,7 +2001,7 @@ string get_model_datafilename(string m, float sk, string fil) float get_model_parameters(string m, float sk) { string fn, s, c; - float fh; + float fh, i; get_model_parameters_modelname = string_null; get_model_parameters_modelskin = -1; @@ -2013,6 +2013,11 @@ float get_model_parameters(string m, float sk) get_model_parameters_desc = string_null; get_model_parameters_bone_upperbody = string_null; get_model_parameters_bone_weapon = string_null; + for(i = 0; i < MAX_AIM_BONES; ++i) + { + get_model_parameters_bone_aim[i] = string_null; + get_model_parameters_bone_aimweight[i] = 0; + } get_model_parameters_fixbone = 0; if not(m) @@ -2073,6 +2078,12 @@ float get_model_parameters(string m, float sk) get_model_parameters_bone_upperbody = s; if(c == "bone_weapon") get_model_parameters_bone_weapon = s; + for(i = 0; i < MAX_AIM_BONES; ++i) + if(c == strcat("bone_aim", ftos(i))) + { + get_model_parameters_bone_aimweight[i] = stof(car(s)); + get_model_parameters_bone_aim[i] = cdr(s); + } if(c == "fixbone") get_model_parameters_fixbone = stof(s); } @@ -2493,6 +2504,53 @@ void FindConnectedComponent(entity e, .entity fld, findNextEntityNearFunction_t queue_start.FindConnectedComponent_processing = 0; } +// todo: this sucks, lets find a better way to do backtraces? +#ifndef MENUQC +void backtrace(string msg) +{ + float dev, war; + #ifdef SVQC + dev = autocvar_developer; + war = autocvar_prvm_backtraceforwarnings; + #else + dev = cvar("developer"); + war = cvar("prvm_backtraceforwarnings"); + #endif + cvar_set("developer", "1"); + cvar_set("prvm_backtraceforwarnings", "1"); + print("\n"); + print("--- CUT HERE ---\nWARNING: "); + print(msg); + print("\n"); + remove(world); // isn't there any better way to cause a backtrace? + print("\n--- CUT UNTIL HERE ---\n"); + cvar_set("developer", ftos(dev)); + cvar_set("prvm_backtraceforwarnings", ftos(war)); +} +#endif + +// color code replace, place inside of sprintf and parse the string +string CCR(string input) +{ + // See the autocvar declarations in util.qh for default values + + // foreground/normal colors + input = strreplace("^F1", strcat("^", autocvar_hud_colorset_foreground_1), input); + input = strreplace("^F2", strcat("^", autocvar_hud_colorset_foreground_2), input); + input = strreplace("^F3", strcat("^", autocvar_hud_colorset_foreground_3), input); + input = strreplace("^F4", strcat("^", autocvar_hud_colorset_foreground_4), input); + + // "kill" colors + input = strreplace("^K1", strcat("^", autocvar_hud_colorset_kill_1), input); + input = strreplace("^K2", strcat("^", autocvar_hud_colorset_kill_2), input); + input = strreplace("^K3", strcat("^", autocvar_hud_colorset_kill_3), input); + + // background colors + input = strreplace("^BG", strcat("^", autocvar_hud_colorset_background), input); + input = strreplace("^N", "^7", input); // "none"-- reset to white... + return input; +} + vector vec3(float x, float y, float z) { vector v; @@ -2521,3 +2579,30 @@ vector animfixfps(entity e, vector a, vector b) return a; } #endif + +#ifdef SVQC +void dedicated_print(string input) // print(), but only print if the server is not local +{ + if(server_is_dedicated) { print(input); } +} +#endif + +#ifndef MENUQC +float Announcer_PickNumber(float num) +{ + switch(num) + { + case 10: num = ANNCE_NUM_10; break; + case 9: num = ANNCE_NUM_9; break; + case 8: num = ANNCE_NUM_8; break; + case 7: num = ANNCE_NUM_7; break; + case 6: num = ANNCE_NUM_6; break; + case 5: num = ANNCE_NUM_5; break; + case 4: num = ANNCE_NUM_4; break; + case 3: num = ANNCE_NUM_3; break; + case 2: num = ANNCE_NUM_2; break; + case 1: num = ANNCE_NUM_1; break; + } + return num; +} +#endif