Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- enum _: e_DataBody
- {
- BODY_CLAW = 0,
- BODY_BOMB
- };
- enum _: e_DataTarget
- {
- DATA_BODY = 0,
- DATA_SEQUENCE,
- DATA_SEQUENCE_SPEC
- };
- enum _: e_AnimationSequenceKnife
- {
- KNIFE_IDLE = 0,
- KNIFE_DRAW,
- KNIFE_STABHIT,
- KNIFE_STABMISS,
- KNIFE_MIDSLASH1,
- KNIFE_MIDSLASH2
- };
- enum _: e_AnimationSequenceGrenade
- {
- GREANDE_IDLE = 0,
- GREANDE_PULLPIN,
- GREANDE_THORW,
- GREANDE_DEPLOY
- };
- new g_DataBody[33][e_DataBody];
- new g_DataTarget[33][e_DataTarget];
- new g_KnifeSequence[33][e_AnimationSequenceKnife];
- new g_GrenadeSequence[33][e_AnimationSequenceGrenade];
- zombieme(id, infector, nemesis, rewards)
- {
- g_DataBody[id][BODY_CLAW] = ArrayGetCell(g_aZombieKnifeBody, g_iZombieClass[id]);
- g_DataBody[id][BODY_BOMB] = ArrayGetCell(g_aZombieGrendaeBody, g_iZombieClass[id]);
- new i, sequence;
- for(i = 0, sequence = ArrayGetCell(g_aZombieKnifeSequence, g_iZombieClass[id]); i < 6; i++) {
- if(i > 0) sequence++;
- g_KnifeSequence[id][i] = sequence;
- }
- for(i = 0, sequence = ArrayGetCell(g_aZombieGrenadeSequence, g_iZombieClass[id]); i < 4; i++) {
- if(i > 0) sequence++;
- g_GrenadeSequence[id][i] = sequence;
- }
- }
- public Ham_CS_Weapon_SendWeaponAnim_Post(pWeapon, iAnim, skiplocal)
- {
- if(pev_valid(pWeapon) != 2)
- return HAM_IGNORED;
- new pPlayer = get_pdata_cbase(pWeapon, m_pPlayer, XO_WEAPON);
- if(g_bZombie[pPlayer] && !g_bNemesis[pPlayer] )
- {
- new iId = get_pdata_int(pWeapon, m_iId, XO_WEAPON);
- if(iId == CSW_KNIFE) {
- switch(iAnim) {
- case 0: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_IDLE], g_DataBody[pPlayer][BODY_CLAW]);
- case 3: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_DRAW], g_DataBody[pPlayer][BODY_CLAW]);
- case 4: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_STABHIT], g_DataBody[pPlayer][BODY_CLAW]);
- case 5: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_STABMISS], g_DataBody[pPlayer][BODY_CLAW]);
- case 6: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_MIDSLASH1], g_DataBody[pPlayer][BODY_CLAW]);
- case 7: SendWeaponAnim(pPlayer, g_KnifeSequence[pPlayer][KNIFE_MIDSLASH2], g_DataBody[pPlayer][BODY_CLAW]);
- }
- }
- else if(iId == CSW_HEGRENADE || iId == CSW_FLASHBANG) {
- switch(iAnim) {
- case GREANDE_IDLE: SendWeaponAnim(pPlayer, g_GrenadeSequence[pPlayer][GREANDE_IDLE], g_DataBody[pPlayer][BODY_BOMB]);
- case GREANDE_PULLPIN: SendWeaponAnim(pPlayer, g_GrenadeSequence[pPlayer][GREANDE_PULLPIN], g_DataBody[pPlayer][BODY_BOMB]);
- case GREANDE_THORW: SendWeaponAnim(pPlayer, g_GrenadeSequence[pPlayer][GREANDE_THORW], g_DataBody[pPlayer][BODY_BOMB]);
- case GREANDE_DEPLOY: SendWeaponAnim(pPlayer, g_GrenadeSequence[pPlayer][GREANDE_DEPLOY], g_DataBody[pPlayer][BODY_BOMB]);
- }
- }
- }
- return HAM_IGNORED;
- }
- public FM_UpdateClientData_Post(const iPlayer, const iSendWeapons, const CD_Handle)
- {
- enum {
- SPEC_MODE,
- SPEC_TARGET,
- SPEC_END
- };
- static aSpecInfo[33][SPEC_END];
- static iTarget;
- static iSpecMode;
- static iActiveItem;
- static iId;
- static Float: flGameTime;
- static Float: flLastEventCheck;
- iTarget = (iSpecMode = pev(iPlayer, pev_iuser1)) ? pev(iPlayer, pev_iuser2) : iPlayer;
- if(pev_valid(iTarget) != 2)
- return FMRES_IGNORED;
- if(!g_bZombie[iTarget] || g_bNemesis[iTarget])
- return FMRES_IGNORED;
- iActiveItem = get_pdata_cbase(iTarget, m_pActiveItem, 5);
- if(iActiveItem == FM_NULLENT)
- return FMRES_IGNORED;
- flGameTime = get_gametime();
- flLastEventCheck = get_pdata_float(iActiveItem, m_flLastEventCheck, 4);
- iId = get_pdata_int(iActiveItem, m_iId, 4);
- if(iId == CSW_KNIFE)
- {
- g_DataTarget[iPlayer][DATA_BODY] = g_DataBody[iTarget][BODY_CLAW];
- g_DataTarget[iTarget][DATA_SEQUENCE] = g_KnifeSequence[iTarget][KNIFE_DRAW];
- g_DataTarget[iTarget][DATA_SEQUENCE_SPEC] = g_KnifeSequence[iTarget][KNIFE_IDLE];
- }
- else if(iId == CSW_HEGRENADE || iId == CSW_FLASHBANG)
- {
- g_DataTarget[iPlayer][DATA_BODY] = g_DataBody[iTarget][BODY_BOMB];
- g_DataTarget[iTarget][DATA_SEQUENCE] = g_GrenadeSequence[iTarget][GREANDE_DEPLOY];
- g_DataTarget[iTarget][DATA_SEQUENCE_SPEC] = g_GrenadeSequence[iTarget][GREANDE_IDLE];
- }
- else return FMRES_IGNORED;
- if(iSpecMode) {
- if(aSpecInfo[iPlayer][SPEC_MODE] != iSpecMode) {
- aSpecInfo[iPlayer][SPEC_MODE] = iSpecMode;
- aSpecInfo[iPlayer][SPEC_TARGET] = 0;
- }
- if(iSpecMode == OBS_IN_EYE && aSpecInfo[iPlayer][SPEC_TARGET] != iTarget) {
- aSpecInfo[iPlayer][SPEC_TARGET] = iTarget;
- SendWeaponAnim( iPlayer,g_DataTarget[iTarget][DATA_SEQUENCE_SPEC], g_DataTarget[iPlayer][DATA_BODY] );
- }
- }
- if(!flLastEventCheck) {
- set_cd(CD_Handle, CD_flNextAttack, flGameTime + 0.001);
- set_cd(CD_Handle, CD_WeaponAnim, 0);
- return FMRES_HANDLED;
- }
- if(flLastEventCheck <= flGameTime) {
- SendWeaponAnim(iPlayer, g_DataTarget[iPlayer][DATA_SEQUENCE], g_DataTarget[iPlayer][DATA_BODY]);
- set_pdata_float(iActiveItem, m_flLastEventCheck, 0.0, 4);
- }
- return FMRES_IGNORED;
- }
- stock SendWeaponAnim( iPlayer, iAnim, iBody )
- {
- static i, iCount, iSpectator, iszSpectators[32];
- set_pev(iPlayer, pev_weaponanim, iAnim);
- message_begin(MSG_ONE, SVC_WEAPONANIM, _, iPlayer);
- write_byte(iAnim);
- write_byte(iBody);
- message_end();
- if(pev(iPlayer, pev_iuser1))
- return;
- get_players(iszSpectators, iCount, "bh");
- for(i = 0; i < iCount; i++) {
- iSpectator = iszSpectators[i];
- if(pev(iSpectator, pev_iuser1) != OBS_IN_EYE)
- continue;
- if(pev(iSpectator, pev_iuser2) != iPlayer)
- continue;
- set_pev(iSpectator, pev_weaponanim, iAnim);
- message_begin(MSG_ONE, SVC_WEAPONANIM, _, iSpectator);
- write_byte(iAnim);
- write_byte(iBody);
- message_end();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement