设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2847|回复: 16

[推荐] 暴走僵尸源码(FAST_ZOMBIE)(怪物monster) 没发错版块!!!!     [复制链接]

Rank: 5Rank: 5

帖子
315
精华
0
声望
941 点
金币
251 Mold
被赞许
6 次
注册时间
2010-9-5
发表于 2010-9-10 22:15:34 |显示全部楼层
本帖最后由 MARS-MAN 于 2010-9-11 11:33 编辑

保存未fast_zombie.CPP




// Power M-MAN


#include        "extdll.h"
#include        "util.h"
#include        "cbase.h"
#include        "monsters.h"
#include        "schedule.h"


#define        FAST_ZOMBIE_MELEE                0x01



#define     ZOMBIE_AE_CRAB1          0x04
#define     ZOMBIE_AE_CRAB2          0x05
#define     ZOMBIE_AE_CRAB3          0x06



#define ZOMBIE_FLINCH_DELAY                        2               
#define ZOMBIE_CRAB                                        "monster_headcrab"

class CFastZombie : public CBaseMonster
{
public:
        void Spawn( void );
        void Precache( void );
        void SetYawSpeed( void );
        int  Classify ( void );
        void HandleAnimEvent( MonsterEvent_t *pEvent );
        int IgnoreConditions ( void );
         void SpawnCrab( void );

        float m_flNextFlinch;

        void PainSound( void );
        void AlertSound( void );
        void IdleSound( void );
        void AttackSound( void );

        static const char *pAttackSounds[];
        static const char *pIdleSounds[];
        static const char *pAlertSounds[];
        static const char *pPainSounds[];
        static const char *pAttackHitSounds[];
        static const char *pAttackMissSounds[];


        BOOL CheckRangeAttack1 ( float flDot, float flDist ) { return FALSE; }
        BOOL CheckRangeAttack2 ( float flDot, float flDist ) { return FALSE; }
        int TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType );
};

LINK_ENTITY_TO_CLASS( monster_fast_zombie, CFastZombie );

const char *CFastZombie::pAttackHitSounds[] =
{
        "zombie/claw_strike1.wav",
        "zombie/claw_strike2.wav",
        "zombie/claw_strike3.wav",
};

const char *CFastZombie::pAttackMissSounds[] =
{
        "zombie/claw_miss1.wav",
        "zombie/claw_miss2.wav",
};

const char *CFastZombie::pAttackSounds[] =
{
        "zombie/zo_attack1.wav",
        "zombie/zo_attack2.wav",
};

const char *CFastZombie::pIdleSounds[] =
{
        "zombie/zo_idle1.wav",
        "zombie/zo_idle2.wav",
        "zombie/zo_idle3.wav",
        "zombie/zo_idle4.wav",
};

const char *CFastZombie::pAlertSounds[] =
{
        "zombie/zo_alert10.wav",
        "zombie/zo_alert20.wav",
        "zombie/zo_alert30.wav",
};

const char *CFastZombie::pPainSounds[] =
{
        "zombie/zo_pain1.wav",
        "zombie/zo_pain2.wav",
};


int        CFastZombie :: Classify ( void )
{

                return        CLASS_ALIEN_MONSTER;


}


void CFastZombie :: SetYawSpeed ( void )
{
        int ys;

        ys = 120;

        switch ( m_Activity )
        {
                case ACT_WALK:
                ys = 150;
                break;
        }


        pev->yaw_speed = ys;
}

int CFastZombie :: TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType )
{

        if ( bitsDamageType == DMG_BULLET )
        {
                Vector vecDir = pev->origin - (pevInflictor->absmin + pevInflictor->absmax) * 0.5;
                vecDir = vecDir.Normalize();
                float flForce = DamageForce( flDamage );
                pev->velocity = pev->velocity + vecDir * flForce;
                flDamage *= 0.3;
        }

        if ( IsAlive() )
                PainSound();
        return CBaseMonster::TakeDamage( pevInflictor, pevAttacker, flDamage, bitsDamageType );
}

void CFastZombie :: PainSound( void )
{
        int pitch = 95 + RANDOM_LONG(0,9);

        if (RANDOM_LONG(0,5) < 2)
                EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pPainSounds[ RANDOM_LONG(0,ARRAYSIZE(pPainSounds)-1) ], 1.0, ATTN_NORM, 0, pitch );
}

void CFastZombie :: AlertSound( void )
{
        int pitch = 95 + RANDOM_LONG(0,9);

        EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pAlertSounds[ RANDOM_LONG(0,ARRAYSIZE(pAlertSounds)-1) ], 1.0, ATTN_NORM, 0, pitch );
}

void CFastZombie :: IdleSound( void )
{
        int pitch = 95 + RANDOM_LONG(0,9);


        EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pIdleSounds[ RANDOM_LONG(0,ARRAYSIZE(pIdleSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
}

void CFastZombie :: AttackSound( void )
{

        EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pAttackSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
}



void CFastZombie :: HandleAnimEvent( MonsterEvent_t *pEvent )
{
        switch( pEvent->event )
        {

                case FAST_ZOMBIE_MELEE:
                {

                        CBaseEntity *pHurt = CheckTraceHullAttack( 70, gSkillData.zombieDmgBothSlash, DMG_SLASH );
                        if ( pHurt )
                        {
                                if ( pHurt->pev->flags & (FL_MONSTER|FL_CLIENT) )
                                {
                                        pHurt->pev->punchangle.x = 5;
                                        pHurt->pev->velocity = pHurt->pev->velocity + gpGlobals->v_forward * -100;
                                }
                                EMIT_SOUND_DYN ( ENT(pev), CHAN_WEAPON, pAttackHitSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackHitSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
                        }
                        else
                                EMIT_SOUND_DYN ( ENT(pev), CHAN_WEAPON, pAttackMissSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackMissSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );

                        if (RANDOM_LONG(0,1))
                                AttackSound();
                }
                break;


          case ZOMBIE_AE_CRAB1:
          {
               ALERT( at_console, "Crab1 spawned!\n" );

               SpawnCrab();
          }
          break;

          case ZOMBIE_AE_CRAB2:
          {
               ALERT( at_console, "Crab2 spawned!\n" );
               pev->body = 1;
               SpawnCrab();
          }
          break;

          case ZOMBIE_AE_CRAB3:
          {
               ALERT( at_console, "Crab3 spawned!\n" );
               pev->body = 1;
               SpawnCrab();
          }
          break;




                default:
                        CBaseMonster::HandleAnimEvent( pEvent );
                        break;
        }
}


void CFastZombie :: Spawn()
{
        Precache( );

        SET_MODEL(ENT(pev), "models/hl2monsters/fastzombie.mdl");
        UTIL_SetSize( pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX );

        pev->solid                        = SOLID_SLIDEBOX;
        pev->movetype                = MOVETYPE_STEP;
        m_bloodColor                = BLOOD_COLOR_GREEN;
        pev->health                        = gSkillData.zombieHealth;
        pev->view_ofs                = VEC_VIEW;
        m_flFieldOfView                = 0.5;
        m_MonsterState                = MONSTERSTATE_NONE;
        m_afCapability                = bits_CAP_DOORS_GROUP;

        MonsterInit();
}


void CFastZombie :: Precache()
{
        int i;

        PRECACHE_MODEL("models/hl2monsters/fastzombie.mdl");

        for ( i = 0; i < ARRAYSIZE( pAttackHitSounds ); i++ )
                PRECACHE_SOUND((char *)pAttackHitSounds);

        for ( i = 0; i < ARRAYSIZE( pAttackMissSounds ); i++ )
                PRECACHE_SOUND((char *)pAttackMissSounds);

        for ( i = 0; i < ARRAYSIZE( pAttackSounds ); i++ )
                PRECACHE_SOUND((char *)pAttackSounds);

        for ( i = 0; i < ARRAYSIZE( pIdleSounds ); i++ )
                PRECACHE_SOUND((char *)pIdleSounds);

        for ( i = 0; i < ARRAYSIZE( pAlertSounds ); i++ )
                PRECACHE_SOUND((char *)pAlertSounds);

        for ( i = 0; i < ARRAYSIZE( pPainSounds ); i++ )
                PRECACHE_SOUND((char *)pPainSounds);

        UTIL_PrecacheOther( ZOMBIE_CRAB );
}       




int CFastZombie::IgnoreConditions ( void )
{
        int iIgnore = CBaseMonster::IgnoreConditions();

        if ((m_Activity == ACT_MELEE_ATTACK1) || (m_Activity == ACT_MELEE_ATTACK1))
        {
#if 0
                if (pev->health < 20)
                        iIgnore |= (bits_COND_LIGHT_DAMAGE|bits_COND_HEAVY_DAMAGE);
                else
#endif                       
                if (m_flNextFlinch >= gpGlobals->time)
                        iIgnore |= (bits_COND_LIGHT_DAMAGE|bits_COND_HEAVY_DAMAGE);
        }

        if ((m_Activity == ACT_SMALL_FLINCH) || (m_Activity == ACT_BIG_FLINCH))
        {
                if (m_flNextFlinch < gpGlobals->time)
                        m_flNextFlinch = gpGlobals->time + ZOMBIE_FLINCH_DELAY;
        }

        return iIgnore;
       
}




void CFastZombie :: SpawnCrab( void )
{
     CBaseEntity *pCrab = CBaseEntity::Create( ZOMBIE_CRAB, pev->origin, pev->angles, edict() );

     pCrab->pev->spawnflags |= SF_MONSTER_FALL_TO_GROUND;
}



附件





附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分金币 收起 理由
阿发 + 5

总评分: 金币 + 5   查看全部评分

a

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
631
精华
0
声望
1548 点
金币
273 Mold
被赞许
0 次
注册时间
2009-10-19

可爱小猫

发表于 2010-9-10 22:27:00 |显示全部楼层
图??????????????关键的部分
世界上最好玩的csol单机版  http://www.modchina.com/?fromuser=waz2230320

使用道具 举报

Rank: 2

帖子
154
精华
0
声望
291 点
金币
44 Mold
被赞许
0 次
注册时间
2010-7-10
发表于 2010-9-10 22:38:50 |显示全部楼层
额....这个那个图呢?
没图是没人会下的
国际惯例,求图求真相
已有 1 人评分声望 收起 理由
MARS-MAN + 1 你也是 看不懂别说的说

总评分: 声望 + 1   查看全部评分

使用道具 举报

Rank: 5Rank: 5

帖子
315
精华
0
声望
941 点
金币
251 Mold
被赞许
6 次
注册时间
2010-9-5
发表于 2010-9-10 23:03:42 |显示全部楼层
回复 2# waz2230320


    看不懂别插嘴的说
a

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
2249
精华
0
声望
6052 点
金币
257 Mold
被赞许
0 次
注册时间
2010-6-14

Modchina灌水王 可爱小猫

发表于 2010-9-10 23:52:14 |显示全部楼层
回复 3# 忧伤小志


    这是一段代码,不用下载的= =!而且代码怎么搞图

使用道具 举报

Rank: 5Rank: 5

帖子
172
精华
0
声望
990 点
金币
253 Mold
被赞许
0 次
注册时间
2010-7-5
发表于 2010-9-11 07:21:37 |显示全部楼层
什么代码,说都没说清楚绝对非原创。肯定心里有鬼,不敢复制完整
已有 1 人评分声望 收起 理由
MARS-MAN + 1 C++ source File 说了你也不会懂得 ...

总评分: 声望 + 1   查看全部评分

使用道具 举报

Rank: 5Rank: 5

帖子
315
精华
0
声望
941 点
金币
251 Mold
被赞许
6 次
注册时间
2010-9-5
发表于 2010-9-11 11:30:23 |显示全部楼层
算了 上附件 脑瘫误骂
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
a

使用道具 举报

Rank: 3Rank: 3

帖子
81
精华
0
声望
769 点
金币
48 Mold
被赞许
0 次
注册时间
2009-5-20
发表于 2010-10-16 13:56:02 |显示全部楼层
啥是暴走僵尸啊?》

使用道具 举报

Rank: 8Rank: 8

帖子
933
精华
0
声望
1955 点
金币
1035 Mold
被赞许
5 次
注册时间
2009-5-28
发表于 2010-10-16 14:16:21 |显示全部楼层
回复 7# MARS-MAN


    这个是给怪物插件用的?
AI怪物插件学习圣坛,让你快速学会制作大灾变和机甲风暴单机版!http://www.modchina.com/?fromuid=49624

使用道具 举报

Rank: 5Rank: 5

帖子
604
精华
0
声望
915 点
金币
65 Mold
被赞许
0 次
注册时间
2009-12-19
发表于 2010-10-16 14:39:11 |显示全部楼层
怪物、、插件、、我没易语言、、哎!
牛B、NB、超级NB、超级超级NB、狠、NB的狠·

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部