X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fall.qc;h=c236bb47c4d3ef361bc5ac9705e88a78483d1933;hp=897e2caef2f5975e3627458dd0d6894d7da9a3d8;hb=468b023e4b41cbd40bae363aa136b102a63fc811;hpb=edf01df130d0d1877461561178b8833a9ab6051c diff --git a/qcsrc/common/weapons/all.qc b/qcsrc/common/weapons/all.qc index 897e2caef..c236bb47c 100644 --- a/qcsrc/common/weapons/all.qc +++ b/qcsrc/common/weapons/all.qc @@ -1,8 +1,7 @@ +#include "all.qh" #ifndef WEAPONS_ALL_C #define WEAPONS_ALL_C -#include "all.qh" - #if defined(CSQC) #include #include "../constants.qh" @@ -19,6 +18,7 @@ #include #elif defined(MENUQC) #elif defined(SVQC) + #include #include #include #include @@ -27,7 +27,7 @@ #include "../stats.qh" #include "../teams.qh" #include "../util.qh" - #include "../monsters/all.qh" + #include "../monsters/_mod.qh" #include "config.qh" #include #include @@ -37,14 +37,14 @@ #include #include "../notifications/all.qh" #include "../deathtypes/all.qh" - #include + #include #include "../mapinfo.qh" - #include + #include #include #include #include #endif -#ifndef MENUQC +#ifdef GAMEQC #include "calculations.qc" #endif #ifdef SVQC @@ -204,7 +204,7 @@ void W_RandomWeapons(entity e, float n) RandomSelection_Init(); FOREACH(Weapons, it != WEP_Null, { if (remaining & (it.m_wepset)) - RandomSelection_Add(it, 0, string_null, 1, 1); + RandomSelection_AddEnt(it, 1, 1); }); Weapon w = RandomSelection_chosen_ent; result |= WepSet_FromWeapon(w); @@ -275,7 +275,7 @@ string W_Model(string w_mdl) return M_ARGV(1, string); } -#ifndef MENUQC +#ifdef GAMEQC vector shotorg_adjustfromclient(vector vecs, float y_is_right, float algn) { switch (algn) @@ -391,8 +391,10 @@ void CL_WeaponEntity_SetModel(entity this, string name, bool _anim) { if (name == "") { - this.model = ""; - if (this.weaponchild) remove(this.weaponchild); + vector oldmin = this.mins, oldmax = this.maxs; + setmodel(this, MDL_Null); + setsize(this, oldmin, oldmax); + if (this.weaponchild) delete(this.weaponchild); this.weaponchild = NULL; this.movedir = '0 0 0'; this.spawnorigin = '0 0 0'; @@ -436,7 +438,7 @@ void CL_WeaponEntity_SetModel(entity this, string name, bool _anim) } else { - if (this.weaponchild) remove(this.weaponchild); + if (this.weaponchild) delete(this.weaponchild); this.weaponchild = NULL; } @@ -462,7 +464,7 @@ void CL_WeaponEntity_SetModel(entity this, string name, bool _anim) } else { - LOG_WARNINGF("weapon model %s does not support the 'shot' tag, will display shots TOTALLY wrong\n", + LOG_WARNF("weapon model %s does not support the 'shot' tag, will display shots TOTALLY wrong", this.model); this.movedir = '0 0 0'; } @@ -481,7 +483,7 @@ void CL_WeaponEntity_SetModel(entity this, string name, bool _anim) } else { - LOG_WARNINGF("weapon model %s does not support the 'shell' tag, will display casings wrong\n", + LOG_WARNF("weapon model %s does not support the 'shell' tag, will display casings wrong", this.model); this.spawnorigin = this.movedir; } @@ -503,7 +505,7 @@ void CL_WeaponEntity_SetModel(entity this, string name, bool _anim) } else { - LOG_WARNINGF( + LOG_WARNF( "weapon model %s does not support the 'handle' tag " "and neither does the v_ model support the 'shot' tag, " "will display muzzle flashes TOTALLY wrong\n", @@ -523,7 +525,11 @@ void CL_WeaponEntity_SetModel(entity this, string name, bool _anim) if (this.movedir.x >= 0) { - int algn = STAT(GUNALIGN, this.owner); + //int algn = STAT(GUNALIGN, this.owner); + int algn = W_GunAlign(this, STAT(GUNALIGN, this.owner)); + #ifdef SVQC + this.m_gunalign = algn; + #endif vector v = this.movedir; this.movedir = shotorg_adjust(v, false, false, algn); this.view_ofs = shotorg_adjust(v, false, true, algn) - v; @@ -547,7 +553,7 @@ void CL_WeaponEntity_SetModel(entity this, string name, bool _anim) } #endif -#ifndef MENUQC +#ifdef GAMEQC REGISTER_NET_TEMP(wframe) #ifdef CSQC @@ -557,21 +563,22 @@ NET_HANDLE(wframe, bool isNew) a.x = ReadCoord(); a.y = ReadCoord(); a.z = ReadCoord(); + int slot = ReadByte(); bool restartanim = ReadByte(); - anim_set(viewmodel, a, !restartanim, restartanim, restartanim); - viewmodel.state = ReadByte(); - viewmodel.weapon_nextthink = ReadFloat(); - viewmodel.alpha = ReadByte() / 255; - switch (viewmodel.state) + entity wepent = viewmodels[slot]; + anim_set(wepent, a, !restartanim, restartanim, restartanim); + wepent.state = ReadByte(); + wepent.weapon_nextthink = ReadFloat(); + switch (wepent.state) { case WS_RAISE: - viewmodel.weapon_switchdelay = activeweapon.switchdelay_raise; + wepent.weapon_switchdelay = wepent.activeweapon.switchdelay_raise; break; case WS_DROP: - viewmodel.weapon_switchdelay = activeweapon.switchdelay_drop; + wepent.weapon_switchdelay = wepent.activeweapon.switchdelay_drop; break; default: - viewmodel.weapon_switchdelay = 0; + wepent.weapon_switchdelay = 0; break; } return true; @@ -588,10 +595,10 @@ void wframe_send(entity actor, entity weaponentity, vector a, bool restartanim) WriteCoord(channel, a.x); WriteCoord(channel, a.y); WriteCoord(channel, a.z); + WriteByte(channel, weaponslot(weaponentity.weaponentity_fld)); WriteByte(channel, restartanim); WriteByte(channel, weaponentity.state); WriteFloat(channel, weaponentity.weapon_nextthink); - WriteByte(channel, weaponentity.m_alpha * 255); } #endif