X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fclient%2Fcsqcmodel_hooks.qc;h=d2b28e9b08f2a9b4cacd3a49bc0f45076a52de8e;hp=4a04eb5e0fe2342de9d9e9d1ed337db1a4b12d4a;hb=6792b5c14ddf90b92ae8f5d15318322a5d4733b7;hpb=068324d293df795dbc41de75f38256b8c6c35607 diff --git a/qcsrc/client/csqcmodel_hooks.qc b/qcsrc/client/csqcmodel_hooks.qc index 4a04eb5e0..d2b28e9b0 100644 --- a/qcsrc/client/csqcmodel_hooks.qc +++ b/qcsrc/client/csqcmodel_hooks.qc @@ -1,7 +1,9 @@ +#include "csqcmodel_hooks.qh" #include "mutators/events.qh" #include "player_skeleton.qh" #include "weapons/projectile.qh" #include +#include #include #include #include @@ -141,7 +143,7 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer) _setmodel(e, cvar_defstring("_cl_playermodel")); forceplayermodels_goodmodel = e.model; forceplayermodels_goodmodelindex = e.modelindex; - remove(e); + delete(e); } // first, try finding it from the server @@ -174,7 +176,7 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer) forceplayermodels_model = e.model; forceplayermodels_modelindex = e.modelindex; forceplayermodels_skin = autocvar__cl_playerskin; - remove(e); + delete(e); } if(autocvar_cl_forcemyplayermodel != "" && autocvar_cl_forcemyplayermodel != forceplayermodels_mymodel) @@ -184,14 +186,14 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer) forceplayermodels_myisgoodmodel = fexists(e.model); forceplayermodels_mymodel = e.model; forceplayermodels_mymodelindex = e.modelindex; - remove(e); + delete(e); } // apply it bool isfriend; int cm; cm = this.forceplayermodels_savecolormap; - cm = (cm >= 1024) ? cm : (stof(getplayerkeyvalue(cm - 1, "colors")) + 1024); + cm = (cm >= 1024) ? cm : (entcs_GetClientColors(cm - 1) + 1024); if(teamplay) isfriend = (cm == 1024 + 17 * myteam); @@ -278,7 +280,7 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer) // GLOWMOD AND DEATH FADING if(this.colormap > 0) - this.glowmod = colormapPaletteColor(((this.colormap >= 1024) ? this.colormap : stof(getplayerkeyvalue(this.colormap - 1, "colors"))) & 0x0F, true) * 2; + this.glowmod = colormapPaletteColor(((this.colormap >= 1024) ? this.colormap : entcs_GetClientColors(this.colormap - 1)) & 0x0F, true) * 2; else this.glowmod = '1 1 1'; @@ -352,6 +354,7 @@ void CSQCPlayer_AnimDecide_PostUpdate(entity this, bool isnew) } int CSQCPlayer_FallbackFrame(entity this, int f) { + TC(int, f); if(frameduration(this.modelindex, f) > 0) return f; // goooooood if(frameduration(this.modelindex, 1) <= 0) @@ -367,7 +370,7 @@ int CSQCPlayer_FallbackFrame(entity this, int f) case 29: return 4; // anim_duckwalkbackright -> anim_duckwalk case 30: return 4; // anim_duckwalkbackleft -> anim_duckwalk } - LOG_INFOF("Frame %d missing in model %s, and we have no fallback - FAIL!\n", f, this.model); + LOG_DEBUGF("Frame %d missing in model %s, and we have no fallback - FAIL!", f, this.model); return f; } void CSQCPlayer_FallbackFrame_Apply(entity this) @@ -387,9 +390,7 @@ void CSQCPlayer_FallbackFrame_Apply(entity this) void CSQCModel_AutoTagIndex_Apply(entity this) { if(this.tag_entity && wasfreed(this.tag_entity)) - this.tag_entity = world; - - viewloc_SetTags(this); + this.tag_entity = NULL; MUTATOR_CALLHOOK(TagIndex_Update, this); @@ -399,14 +400,14 @@ void CSQCModel_AutoTagIndex_Apply(entity this) bool changed = 0; if(this.tag_entity.entnum != this.tag_networkentity) { - this.tag_entity = findfloat(world, entnum, this.tag_networkentity); + this.tag_entity = findfloat(NULL, entnum, this.tag_networkentity); changed = 1; } // recursive predraw call to fix issues with forcemodels and LOD if bone indexes mismatch if(this.tag_entity.classname == "csqcmodel") { - CSQCModel_Hook_PreDraw(this.tag_entity, (this.entnum >= 1 && this.entnum <= maxclients)); + CSQCModel_Hook_PreDraw(this.tag_entity, (this.tag_entity.entnum >= 1 && this.tag_entity.entnum <= maxclients)); } if(this.tag_entity.modelindex != this.tag_entity_lastmodelindex) @@ -429,9 +430,9 @@ void CSQCModel_AutoTagIndex_Apply(entity this) if(!this.tag_index) { // we need to prevent this from 'appening - this.tag_entity = world; + this.tag_entity = NULL; this.drawmask = 0; - LOG_TRACE("h_ model lacks weapon attachment, but v_ model is attached to it\n"); + LOG_TRACE("h_ model lacks weapon attachment, but v_ model is attached to it"); } } else if(this.tag_entity.isplayermodel) @@ -459,26 +460,6 @@ void CSQCModel_AutoTagIndex_Apply(entity this) } } -// FEATURE: EF_NODRAW workalike -const int EF_BRIGHTFIELD = BIT(0); -const int EF_BRIGHTLIGHT = BIT(2); -const int EF_DIMLIGHT = BIT(3); -const int EF_DOUBLESIDED = BIT(15); -const int EF_NOSELFSHADOW = BIT(16); -const int EF_DYNAMICMODELLIGHT = BIT(17); -const int EF_RESTARTANIM_BIT = BIT(20); -const int EF_TELEPORT_BIT = BIT(21); -const int MF_ROCKET = BIT(0); // leave a trail -const int MF_GRENADE = BIT(1); // leave a trail -const int MF_GIB = BIT(2); // leave a trail -const int MF_ROTATE = BIT(3); // rotate (bonus items) -const int MF_TRACER = BIT(4); // green split trail -const int MF_ZOMGIB = BIT(5); // small blood trail -const int MF_TRACER2 = BIT(6); // orange split trail -const int MF_TRACER3 = BIT(7); // purple trail -.int csqcmodel_effects; -.int csqcmodel_modelflags; -.int csqcmodel_traileffect; void CSQCModel_Effects_PreUpdate(entity this) { this.effects = this.csqcmodel_effects; @@ -580,7 +561,7 @@ void CSQCModel_Effects_Apply(entity this) { if(!this.snd_looping) { - sound(this, CH_TRIGGER_SINGLE, SND_JETPACK_FLY, VOL_BASE, autocvar_g_jetpack_attenuation); + sound(this, CH_TRIGGER_SINGLE, SND_JETPACK_FLY, VOL_BASE, autocvar_cl_jetpack_attenuation); this.snd_looping = CH_TRIGGER_SINGLE; } } @@ -588,7 +569,7 @@ void CSQCModel_Effects_Apply(entity this) { if(this.snd_looping) { - sound(this, this.snd_looping, SND_Null, VOL_BASE, autocvar_g_jetpack_attenuation); + sound(this, this.snd_looping, SND_Null, VOL_BASE, autocvar_cl_jetpack_attenuation); this.snd_looping = 0; } }