注册 登录
MOD中国同盟社 返回首页

Hopelagiant的个人空间 http://www.modchina.com/?125526 [收藏] [复制] [分享] [RSS]

日志

纪念:同盟社Robert关于通用型单武器插件的改良建议-2

已有 606 次阅读2012-1-18 12:20 |个人分类:插件编程| Robert, 通用

蒙同盟社高人Robert指点,我的通用型单武器插件才会发展到今天,万分感激……
以下是其赠与的特殊预热方案,谨此纪念经离开了同盟社的Robert:
代码:

// Player Offset (+5)
const m_pActiveItem = 373

// Weapons Offset (+4)
const m_iId = 43
const m_flNextPrimaryAttack = 46

public plugin_init()
{
        register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
        register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)

        RegisterHam(Ham_Item_Deploy, "weapon_m249", "fw_Item_Deploy_Post", 1)
        RegisterHam(Ham_Item_PostFrame, "weapon_m249", "fw_Item_PostFrame")
        RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m249", "fw_Weapon_PrimaryAttack")
}

public fw_UpdateClientData_Post(iPlayer, iSendWeapon, CD_Handle)
{
        if (get_cd(CD_Handle, CD_DeadFlag) != DEAD_NO)
                return
        if (get_cd(CD_Handle, CD_ID) != CSW_M249)
                return
        new iEntity = get_pdata_cbase(iPlayer, m_pActiveItem)
        if (iEntity <= 0 || pev(iEntity, pev_iuser3) == 2)
                return
        set_cd(CD_Handle, CD_iUser3, 0)
}

public fw_Item_Deploy_Post(iEntity)
{
        set_pev(iEntity, pev_iuser3, 0)
        set_pev(iEntity, pev_fuser4, 0)
}

public fw_Item_PostFrame(iEntity)
{
        if (get_pdata_int(iEntity, m_iId, 4) != CSW_M249)
                return HAM_IGNORED
        if (!(pev(pev(iEntity, pev_owner), pev_button) & IN_ATTACK))
        {
                set_pev(iEntity, pev_iuser3, 0)
                set_pev(iEntity, pev_fuser4, 0)
        }
        return HAM_IGNORED
}

public fw_Weapon_PrimaryAttack(iEntity)
{
        new Float:flDelayTime
        pev(iEntity, pev_fuser4, flDelayTime)
        new iShotStatus = pev(iEntity, pev_iuser3)
        client_print(1, print_chat, "iShotStatus:%d:%f", iShotStatus, flDelayTime)
        if (!iShotStatus)
        {
                set_pev(iEntity, pev_iuser3, 1)
                set_pev(iEntity, pev_fuser4, 2.0)

                return HAM_SUPERCEDE
        }
        if (iShotStatus == 1)
        {
                new Float:flFrameTime
                global_get(glb_frametime, flFrameTime)
                new Float:flDelayTime
                pev(iEntity, pev_fuser4, flDelayTime)
                flDelayTime -= flFrameTime
                if (flDelayTime <= 0.0)
                {
                        set_pev(iEntity, pev_iuser3, 2)
                        return HAM_SUPERCEDE
                }
                set_pev(iEntity, pev_fuser4, flDelayTime)
                return HAM_SUPERCEDE
        }
        return HAM_IGNORED
}

路过

鸡蛋

鲜花

握手

雷人
收藏 分享 转发到开心网 举报

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册
验证问答 换一个 验证码 换一个

回顶部