Advertisement
Guest User

Untitled

a guest
Jan 24th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.84 KB | None | 0 0
  1. enum _: e_DataBody
  2. {
  3. BODY_CLAW = 0,
  4. BODY_BOMB
  5. };
  6. enum _: e_DataTarget
  7. {
  8. DATA_BODY = 0,
  9. DATA_SEQUENCE,
  10. DATA_SEQUENCE_SPEC
  11. };
  12. enum _: e_AnimationSequenceKnife
  13. {
  14. KNIFE_IDLE = 0,
  15. KNIFE_DRAW,
  16. KNIFE_STABHIT,
  17. KNIFE_STABMISS,
  18. KNIFE_MIDSLASH1,
  19. KNIFE_MIDSLASH2
  20. };
  21. enum _: e_AnimationSequenceGrenade
  22. {
  23. GREANDE_IDLE = 0,
  24. GREANDE_PULLPIN,
  25. GREANDE_THORW,
  26. GREANDE_DEPLOY
  27. };
  28.  
  29. new g_DataBody[33][e_DataBody];
  30. new g_DataTarget[33][e_DataTarget];
  31. new g_KnifeSequence[33][e_AnimationSequenceKnife];
  32. new g_GrenadeSequence[33][e_AnimationSequenceGrenade];
  33.  
  34. zombieme(id, infector, nemesis, rewards)
  35. {
  36. g_DataBody[id][BODY_CLAW] = ArrayGetCell(g_aZombieKnifeBody, g_iZombieClass[id]);
  37. g_DataBody[id][BODY_BOMB] = ArrayGetCell(g_aZombieGrendaeBody, g_iZombieClass[id]);
  38.  
  39. new i, sequence;
  40. for(i = 0, sequence = ArrayGetCell(g_aZombieKnifeSequence, g_iZombieClass[id]); i < 6; i++) {
  41.  
  42. if(i > 0) sequence++;
  43. g_KnifeSequence[id][i] = sequence;
  44.  
  45. }
  46.  
  47. for(i = 0, sequence = ArrayGetCell(g_aZombieGrenadeSequence, g_iZombieClass[id]); i < 4; i++) {
  48.  
  49. if(i > 0) sequence++;
  50. g_GrenadeSequence[id][i] = sequence;
  51. }
  52. }
  53.  
  54. public Ham_CS_Weapon_SendWeaponAnim_Post(pWeapon, iAnim, skiplocal)
  55. {
  56. if(pev_valid(pWeapon) != 2)
  57. return HAM_IGNORED;
  58.  
  59. new pPlayer = get_pdata_cbase(pWeapon, m_pPlayer, XO_WEAPON);
  60. if(g_bZombie[pPlayer] && !g_bNemesis[pPlayer] )
  61. {
  62. new iId = get_pdata_int(pWeapon, m_iId, XO_WEAPON);
  63. if(iId == CSW_KNIFE) {
  64.  
  65. switch(iAnim) {
  66. case 0: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_IDLE], g_DataBody[pPlayer][BODY_CLAW]);
  67. case 3: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_DRAW], g_DataBody[pPlayer][BODY_CLAW]);
  68. case 4: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_STABHIT], g_DataBody[pPlayer][BODY_CLAW]);
  69. case 5: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_STABMISS], g_DataBody[pPlayer][BODY_CLAW]);
  70. case 6: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_MIDSLASH1], g_DataBody[pPlayer][BODY_CLAW]);
  71. case 7: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_MIDSLASH2], g_DataBody[pPlayer][BODY_CLAW]);
  72. }
  73. }
  74. else if(iId == CSW_HEGRENADE || iId == CSW_FLASHBANG) {
  75.  
  76. switch(iAnim) {
  77. case GREANDE_IDLE: SendWeaponAnim(pPlayer, g_GrenadeSequence[pPlayer][GREANDE_IDLE], g_DataBody[pPlayer][BODY_BOMB]);
  78. case GREANDE_PULLPIN: SendWeaponAnim(pPlayer, g_GrenadeSequence[pPlayer][GREANDE_PULLPIN], g_DataBody[pPlayer][BODY_BOMB]);
  79. case GREANDE_THORW: SendWeaponAnim(pPlayer, g_GrenadeSequence[pPlayer][GREANDE_THORW], g_DataBody[pPlayer][BODY_BOMB]);
  80. case GREANDE_DEPLOY: SendWeaponAnim(pPlayer, g_GrenadeSequence[pPlayer][GREANDE_DEPLOY], g_DataBody[pPlayer][BODY_BOMB]);
  81. }
  82. }
  83. }
  84. return HAM_IGNORED;
  85. }
  86.  
  87. public FM_UpdateClientData_Post(const iPlayer, const iSendWeapons, const CD_Handle)
  88. {
  89. enum {
  90. SPEC_MODE,
  91. SPEC_TARGET,
  92. SPEC_END
  93. };
  94. static aSpecInfo[33][SPEC_END];
  95.  
  96. static iTarget;
  97. static iSpecMode;
  98. static iActiveItem;
  99. static iId;
  100.  
  101. static Float: flGameTime;
  102. static Float: flLastEventCheck;
  103.  
  104. iTarget = (iSpecMode = pev(iPlayer, pev_iuser1)) ? pev(iPlayer, pev_iuser2) : iPlayer;
  105.  
  106. if(pev_valid(iTarget) != 2)
  107. return FMRES_IGNORED;
  108.  
  109. if(!g_bZombie[iTarget] || g_bNemesis[iTarget])
  110. return FMRES_IGNORED;
  111.  
  112. iActiveItem = get_pdata_cbase(iTarget, m_pActiveItem, 5);
  113.  
  114. if(iActiveItem == FM_NULLENT)
  115. return FMRES_IGNORED;
  116.  
  117. flGameTime = get_gametime();
  118. flLastEventCheck = get_pdata_float(iActiveItem, m_flLastEventCheck, 4);
  119.  
  120. iId = get_pdata_int(iActiveItem, m_iId, 4);
  121. if(iId == CSW_KNIFE)
  122. {
  123. g_DataTarget[iPlayer][DATA_BODY] = g_DataBody[iTarget][BODY_CLAW];
  124. g_DataTarget[iTarget][DATA_SEQUENCE] = g_KnifeSequence[iTarget][KNIFE_DRAW];
  125. g_DataTarget[iTarget][DATA_SEQUENCE_SPEC] = g_KnifeSequence[iTarget][KNIFE_IDLE];
  126. }
  127. else if(iId == CSW_HEGRENADE || iId == CSW_FLASHBANG)
  128. {
  129. g_DataTarget[iPlayer][DATA_BODY] = g_DataBody[iTarget][BODY_BOMB];
  130. g_DataTarget[iTarget][DATA_SEQUENCE] = g_GrenadeSequence[iTarget][GREANDE_DEPLOY];
  131. g_DataTarget[iTarget][DATA_SEQUENCE_SPEC] = g_GrenadeSequence[iTarget][GREANDE_IDLE];
  132. }
  133. else return FMRES_IGNORED;
  134.  
  135. if(iSpecMode) {
  136. if(aSpecInfo[iPlayer][SPEC_MODE] != iSpecMode) {
  137.  
  138. aSpecInfo[iPlayer][SPEC_MODE] = iSpecMode;
  139. aSpecInfo[iPlayer][SPEC_TARGET] = 0;
  140. }
  141.  
  142. if(iSpecMode == OBS_IN_EYE && aSpecInfo[iPlayer][SPEC_TARGET] != iTarget) {
  143.  
  144. aSpecInfo[iPlayer][SPEC_TARGET] = iTarget;
  145.  
  146. SendWeaponAnim( iPlayer,g_DataTarget[iTarget][DATA_SEQUENCE_SPEC], g_DataTarget[iPlayer][DATA_BODY] );
  147. }
  148. }
  149.  
  150. if(!flLastEventCheck) {
  151.  
  152. set_cd(CD_Handle, CD_flNextAttack, flGameTime + 0.001);
  153. set_cd(CD_Handle, CD_WeaponAnim, 0);
  154.  
  155. return FMRES_HANDLED;
  156. }
  157.  
  158. if(flLastEventCheck <= flGameTime) {
  159.  
  160. SendWeaponAnim(iPlayer, g_DataTarget[iPlayer][DATA_SEQUENCE], g_DataTarget[iPlayer][DATA_BODY]);
  161. set_pdata_float(iActiveItem, m_flLastEventCheck, 0.0, 4);
  162. }
  163. return FMRES_IGNORED;
  164. }
  165.  
  166. stock SendWeaponAnim( iPlayer, iAnim, iBody )
  167. {
  168. static i, iCount, iSpectator, iszSpectators[32];
  169.  
  170. set_pev(iPlayer, pev_weaponanim, iAnim);
  171.  
  172. message_begin(MSG_ONE, SVC_WEAPONANIM, _, iPlayer);
  173. write_byte(iAnim);
  174. write_byte(iBody);
  175. message_end();
  176.  
  177. if(pev(iPlayer, pev_iuser1))
  178. return;
  179.  
  180. get_players(iszSpectators, iCount, "bh");
  181.  
  182. for(i = 0; i < iCount; i++) {
  183.  
  184. iSpectator = iszSpectators[i];
  185.  
  186. if(pev(iSpectator, pev_iuser1) != OBS_IN_EYE)
  187. continue;
  188.  
  189. if(pev(iSpectator, pev_iuser2) != iPlayer)
  190. continue;
  191.  
  192. set_pev(iSpectator, pev_weaponanim, iAnim);
  193.  
  194. message_begin(MSG_ONE, SVC_WEAPONANIM, _, iSpectator);
  195. write_byte(iAnim);
  196. write_byte(iBody);
  197. message_end();
  198. }
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement