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

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 750|回复: 5

[求助] 会插件的进 [复制链接]

Rank: 2

帖子
54
精华
0
声望
330 点
金币
37 Mold
被赞许
4 次
注册时间
2010-7-10
发表于 2011-2-9 13:10:32 |显示全部楼层
20金币
#include <amxmodx>
#include <xs>
#include <fun>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN        "[ZP] Classeimos Zombie"
#define VERSION        "1.0"
#define AUTHOR        "wong19960928"

#define TASK_ID_1 ent+7777

#define SUPPORT_BOT_TO_USE

new const shockwave_Model[] = { "models/zombie_plague/shockwaveball.mdl" }

new const shockwave_att_Sound[] = { "zombie_plague/deimos_skill_start.wav" }

new const shockwave_det_Sound[] = { "zombie_plague/zombi_bomb_exp.wav" }

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

new const zclass_name[] = { "恶魔之子" }
new const zclass_info[] = { "=按R键放震荡=" }
new const zclass_model[] = { "deimos_zombi_origin" }
new const zclass_clawmodel[] = { "v_knife_zombideimos.mdl" }
const zclass_health = 5500
const zclass_speed = 290
const Float:zclass_gravity = 0.75
const Float:zclass_knockback = 0.40

new g_zclass_leibiya_eby
new g_trailSpr, g_explodeSpr
new cooldown[33]
new cvar_shockwave_radius, cvar_shockwave_speed, cvar_cooldown_time, cvar_attshoc_cool_time

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR)

        cvar_shockwave_radius = register_cvar("zp_shockwave_radius", "80")
        cvar_shockwave_speed = register_cvar("zp_shockwave_speed", "1800")
        cvar_cooldown_time = register_cvar("zp_cooldown_time", "10")
        cvar_attshoc_cool_time = register_cvar("zp_attshoc_cool_time", "0.5")

        register_forward(FM_Touch, "fw_Touch")
        register_forward(FM_CmdStart, "fw_CmdStart")

        register_event("ResetHUD", "event_NewRound", "be")
        register_event("DeathMsg", "event_Death", "a")
}

public plugin_precache()
{
        g_zclass_leibiya_eby = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)

        precache_model(shockwave_Model)
        precache_sound(shockwave_det_Sound)
        precache_sound(shockwave_att_Sound)

        g_trailSpr = precache_model("sprites/smoke.spr")
        g_explodeSpr = precache_model("sprites/deimo***p.spr")
}

public zp_user_infected_post(id, infector)
{
        if (zp_get_user_zombie_class(id) == g_zclass_leibiya_eby)
        {
                client_print(id, print_chat, "[ZP]你被感染成恶魔之子,按R键可以使用震荡技能")
        }
}

public fw_CmdStart(id, uc_handle, seed)
{
        if (!is_user_alive(id))
                return FMRES_IGNORED;
       
        if (!zp_get_user_zombie(id) || (zp_get_user_zombie_class(id) != g_zclass_leibiya_eby))
                return FMRES_IGNORED;
       
        if (zp_get_user_nemesis(id))
                return FMRES_IGNORED;

        static button
        button = get_uc(uc_handle, UC_Buttons)
       
        if (button & IN_RELOAD)
        {
                if (!cooldown[id])
                {
                        att_shockwave(id)
                        cooldown[id] = true
                        set_task(get_pcvar_float(cvar_cooldown_time), "cooldown_off", id)
                }
                if (cooldown[id])
                {
                        client_print(id, print_center, "震荡技能冷却中")
                }
        }

        #if defined SUPPORT_BOT_TO_USE
        new enemy, body
        get_user_aiming(id, enemy, body)
       
        if (is_user_bot(id) && (1 <= enemy <= 32) && !zp_get_user_zombie(enemy))
        {
                if (!cooldown[id])
                {
                        att_shockwave(id)
                        cooldown[id] = true
                        set_task(get_pcvar_float(cvar_cooldown_time), "cooldown_off", id)
                }
        }
        #endif

        return FMRES_IGNORED;
}

public cooldown_off(id)
{
        cooldown[id] = false
        client_print(id, print_center, " ")
}

public fw_Touch(ptr, ptd)
{
        if (!pev_valid(ptr))
                return FMRES_IGNORED;
       
        new classname[32]
        pev(ptr, pev_classname, classname, charsmax(classname))
       
        if (equal(classname, "shockwave_Model"))
                shockwave_detonate(ptr)
       
        return FMRES_IGNORED;
}

public att_shockwave(id)
{
        SendWeaponAnim(id, 2)
        emit_sound(id, CHAN_WEAPON, shockwave_att_Sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
        set_task(get_pcvar_float(cvar_attshoc_cool_time), "shockwave", id)
}

public shockwave(id)
{
        new ent = create_entity("info_target")
        if (ent == 0) return;
       
        // set entity's status
        entity_set_string(ent,EV_SZ_classname,"shockwave_Model")
        entity_set_int(ent,EV_INT_movetype,MOVETYPE_FLY)
        entity_set_int(ent,EV_INT_solid,SOLID_BBOX)
        entity_set_int(ent,EV_INT_sequence,1)

        // set entity's model
        entity_set_model(ent,shockwave_Model)
       
        // set entity's size
        entity_set_size(ent,Float:{-0.0, -0.0, -0.0},Float:{0.0, 0.0, 0.0})
       
        // get player's origin and set entity's origin
        new Floatrigin[3], Float:Fire[3]
        entity_get_vector(id,EV_VEC_origin,origin)
        entity_get_vector(id,EV_VEC_origin,Fire)
        entity_set_origin(ent, Fire)
       
        // set entity's velocity
        new Float:velocity[3]
        VelocityByAim(id,get_pcvar_num(cvar_shockwave_speed),velocity)
       
        // set entity's angle same as player's angle
        new Float:angles[3]
        entity_set_edict(ent,EV_ENT_owner,id)
        entity_set_float(ent,EV_FL_takedamage,1.0)
        vector_to_angle(velocity, angles)
        entity_set_vector(ent,EV_VEC_velocity,velocity)
        entity_set_vector(ent,EV_VEC_angles,angles)

        set_pev(ent, pev_iuser2, id)
       
        create_beam_follow(ent, 255, 255, 0, 255)
       
        new param
        param[0] = ent
        set_task(0.0, "shockwave_ball_process", TASK_ID_1, param, 1)
}

public shockwave_detonate(ent)
{
        if (!pev_valid(ent))
                return;
       
        new Floatrigin[3]
        pev(ent, pev_origin, origin)

        shockwave_i(origin)
        create_explosion_effect(origin)
        emit_sound(ent, CHAN_WEAPON, shockwave_det_Sound, 1.0, ATTN_NORM, 0, PITCH_NORM)

        engfunc(EngFunc_RemoveEntity, ent)
}

public shockwave_ball_process(param)
{
        new ent = param[0]
       
        if (!pev_valid(ent))
                return;
       
        create_beam_follow(ent, 255, 255, 0, 255)
       
        set_task(0.0, "shockwave_ball_process", TASK_ID_1, param, 1)
}

public event_death()
{
        new id = read_data(2)

        cooldown[id] = false
}

public event_NewRound(id)
{
        cooldown[id] = false
}

stock SendWeaponAnim(id, iAnim)
{
        set_pev(id, pev_weaponanim, iAnim)
       
        message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
        write_byte(iAnim)
        write_byte(pev(id, pev_body))
        message_end()
}

stock shockwave_i(Float:hit_origin[3])
{
        new Float:target_origin[3], Origin[3]
        for (new i = 1; i <= 32; i++)
        {
                if (!zp_get_user_zombie(i))
                {
                        if (!is_user_alive(i))
                                continue;
                       
                        get_user_origin(i,Origin)
                        pev(i, pev_origin, target_origin)
                        new dist = floatround(get_distance_f(hit_origin, target_origin))
                        if (dist > get_pcvar_float(cvar_shockwave_radius))
                                continue;

                        if (!zp_get_user_survivor(i))
                                drop_current_weapon(i)
                }
        }
}

stock create_beam_follow(entity, red, green, blue, brightness)
{
        //Entity add colored trail
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(TE_BEAMFOLLOW) // TE id
        write_short(entity) // entity
        write_short(g_trailSpr) // sprite
        write_byte(10) // life
        write_byte(3) // width
        write_byte(red) // r
        write_byte(green) // g
        write_byte(blue) // b
        write_byte(brightness) // brightness
        message_end()
}

stock create_explosion_effect(const FloatriginF[3])
{
        //engfunc(EngFunc_MessageBegin,MSG_BROADCAST,SVC_TEMPENTITY,origin,0)
        engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
        write_byte(TE_EXPLOSION) // TE id: 3
        engfunc(EngFunc_WriteCoord, originF[0]) // position.x
        engfunc(EngFunc_WriteCoord, originF) // position.y
        engfunc(EngFunc_WriteCoord, originF[2]) // position.z
        write_short(g_explodeSpr) // sprite index
        write_byte(20) // scale in 0.1's
        write_byte(15) // framerate
        write_byte(0) // flags
        message_end()
}
stock drop_current_weapon(id)
{
        static weapon_id, clip, ammo
        weapon_id = get_user_weapon(id, clip, ammo)
       
        if (((1<<weapon_id) & PRIMARY_WEAPONS_BIT_SUM) || ((1<<weapon_id) & SECONDARY_WEAPONS_BIT_SUM))
        {
                static weapon_name[32]
                get_weaponname(weapon_id, weapon_name, sizeof weapon_name - 1)
                engclient_cmd(id, "drop", weapon_name)
        }
}
这是网上的一个恶魔之子源码,它支援了V模技能动作:

但是没有支援这个动作:

求高手帮忙修改一下这个插件,让它支援这个动作,小弟感激不尽啊

附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 2

帖子
54
精华
0
声望
330 点
金币
37 Mold
被赞许
4 次
注册时间
2010-7-10
发表于 2011-2-9 13:12:38 |显示全部楼层
怎么代码里这么多小兵图像?

使用道具 举报

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

帖子
3448
精华
0
声望
19015 点
金币
1599 Mold
被赞许
66 次
注册时间
2009-3-16

Modchina灌水王 可爱小猫 懒人勋章

发表于 2011-2-9 14:28:53 |显示全部楼层
杯具啊 有的字符不能显示 请上传附件

使用道具 举报

Rank: 2

帖子
54
精华
0
声望
330 点
金币
37 Mold
被赞许
4 次
注册时间
2010-7-10
发表于 2011-2-9 14:40:55 |显示全部楼层
本帖最后由 a996178747 于 2011-2-9 14:43 编辑

是的,马上上传
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Modchina声望-尊敬

百贴杀阵!

Rank: 7Rank: 7Rank: 7

帖子
379
精华
0
声望
3092 点
金币
371 Mold
被赞许
10 次
注册时间
2007-5-2
发表于 2011-7-9 22:21:54 |显示全部楼层
new const shockwave_Model[] = { "models/zombie_plague/shockwaveball.mdl" }

麻烦楼主提供一下插件里的shockwaveball.mdl这个模型,不然就缺少模型没法测试了。

使用道具 举报

Rank: 3Rank: 3

帖子
117
精华
0
声望
498 点
金币
90 Mold
被赞许
2 次
注册时间
2011-5-13
发表于 2011-7-17 11:22:35 |显示全部楼层
另写个技能连通模型

使用道具 举报

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

回顶部