搜索
查看: 7808|回复: 14

[AMXX 带源码] [源码]杀人升级加血等级插件

[复制链接]
发表于 2010-5-20 00:24:05 | 显示全部楼层 |阅读模式 来自 中国–广东–深圳
杀人加血插件,源码
*        Description:    For each kill you gain experience为 points (xp).
*                   After reaching a certain amount of xp, you level up.
*                   With each level you get more HP (Healthpoints) at
*                   the beginning of a round. You start at level 0 with 100 HP.
*
*                   Level:                  HP:
*                       0                   100
*                       1                   120
*                       2                   135
*                       3                   145
*                       4                   150
*
*                   You will get a bonus for difficult kills:
*
*                   Sort of kill:           XP you gain:
*                    为  normal kill              10
*                    为  Headshot                 15
*                    为  grenade kill             25
*                    为  knifekill                40
*
*   I think that's all you need to know and I hope you'll enjoy it.
*
*       Amok
*
*
**************************************************************************************************/


#include <amxmodx>
#include <fun>

// =============================================
new xp[33]
new level[33]

// =============================================

public event_deathmsg()     // Event called when a deathmessage is displayed
{
        new killer = read_data(1)
        new victim = read_data(2)
        new wpn[32]
        read_data(4,wpn,31)

        // Don't do anything if it's a suicide or TK
        if ( !killer || killer==victim || get_user_team(killer)==get_user_team(victim) )
        {
                return PLUGIN_CONTINUE
        }


        // Do the following if it's a normal kill
        else
        {
                if (killer)
                {
                        set_hudmessage(255,255,255,0.3, 0.53, 0, 3.0, 6.0, 0.5, 0.15, 3)

                        // Xp Bonus
                        if ( equal(wpn,"knife") )
                        {
                                xp[killer] += 40
                        }

                        else if ( equal(wpn,"grenade") )
                        {
                                xp[killer] += 25
                        }

                        else if (read_data(3))
                        {
                                xp[killer] += 15
                        }

                        else
                        {
                                xp[killer] += 10
                        }
                        // End of the xp bonus

                        if (xp[killer] <= 49)
                        {
                                level[killer] = 0
                                show_hudmessage(killer," 司令部: %d / 50 ^n 等级: %d ^n 您目前为士兵,血值: 100" , xp[killer] , level[killer] )
                        }

                        else if ( (xp[killer] > 49) && (xp[killer] < 100) )
                        {
                                level[killer] = 1
                                show_hudmessage(killer," 司令部: %d / 100 ^n 等级: %d ^n 恭喜您晋升为班长,血值: 120" , xp[killer] , level[killer] )
                        }

                        else if ( (xp[killer] > 99) && (xp[killer] < 150) )
                        {
                                level[killer] = 2
                                show_hudmessage(killer," 司令部: %d / 150 ^n 等级: %d ^n 恭喜您晋升为排长,血值: 135" , xp[killer] , level[killer] )
                        }

                        else if ( (xp[killer] > 149) && (xp[killer] < 200) )
                        {
                                level[killer] = 3
                                show_hudmessage(killer," 司令部: %d / 200 ^n 等级: %d ^n 恭喜您晋升为连长,血值: 145" , xp[killer] , level[killer] )
                        }

                        else if ( (xp[killer] > 199) && (xp[killer] < 250) )
                        {
                                level[killer] = 4
                                show_hudmessage(killer," 司令部: %d / 250 ^n 等级: %d ^n 恭喜您晋升为营长,血值: 165" , xp[killer] , level[killer] )
                        }

                        else if ( (xp[killer] > 249) && (xp[killer] < 300) )
                        {
                                level[killer] = 5
                                show_hudmessage(killer," 司令部: %d / 300 ^n 等级: %d ^n 恭喜您晋升为团长,血值: 195" , xp[killer] , level[killer] )
                        }

                        else if ( (xp[killer] > 299) && (xp[killer] < 350) )
                        {
                                level[killer] = 6
                                show_hudmessage(killer," 司令部: %d / 350 ^n 等级: %d ^n 恭喜您晋升为旅长,血值: 205" , xp[killer] , level[killer] )
                        }

                        else if ( (xp[killer] > 349) && (xp[killer] < 400) )
                        {
                                level[killer] = 7
                                show_hudmessage(killer," 司令部: %d / 400 ^n 等级: %d ^n 恭喜您晋升为师长,血值: 235" , xp[killer] , level[killer] )
                        }

                        else if ( (xp[killer] > 449) && (xp[killer] < 500) )
                        {
                                level[killer] = 8
                                show_hudmessage(killer," 司令部: %d / 500 ^n 等级: %d ^n 恭喜您晋升为军长,血值: 265" , xp[killer] , level[killer] )
                        }

                        else if (xp[killer] > 499)
                        {
                                level[killer] = 9
                                show_hudmessage(killer," 您杀敌无数,万众爱戴,成为了将军!. ^n 司令部: %d ^n 你的终极血值为: 1000" , xp[killer] )
                        }

                }
        }
        return PLUGIN_CONTINUE
}
// =============================================

public eNewRound(id)
{
        set_hudmessage(255,255,255,0.3, 0.53, 0, 3.0, 6.0, 0.5, 0.15, 3)

        if (level[id] == 0)
        {
                show_hudmessage(id," 司令部: %d / 50 ^n 您的等级为 士兵: %d ^n 您目前为士兵,还没有杀敌,血值: 100" , xp[id] , level[id] )
                set_user_health(id, 100)
        }

        else if (level[id] == 1)
        {
                show_hudmessage(id," 司令部: %d / 100 ^n 您的等级为 班长: %d ^n 您当前血值: 120" , xp[id] , level[id] )
                set_user_health(id, 120)
        }

        else if (level[id] == 2)
        {
                show_hudmessage(id," 司令部: %d / 150 ^n 您的等级为 排长: %d ^n 您当前血值: 135" , xp[id] , level[id] )
                set_user_health(id, 135)
        }

        else if (level[id] == 3)
        {
                show_hudmessage(id," 司令部: %d / 200 ^n 您的等级为 连长: %d ^n 您当前血值: 145" , xp[id] , level[id] )
                set_user_health(id, 145)
        }

        else if (level[id] == 4)
        {
                show_hudmessage(id," 司令部: %d / 250 ^n 您的等级为 营长: %d ^n 您当前血值: 165" , xp[id] , level[id] )
                set_user_health(id, 165)
        }

        else if (level[id] == 5)
        {
                show_hudmessage(id," 司令部: %d / 300 ^n 您的等级为 团长: %d ^n 您当前血值: 195" , xp[id] , level[id] )
                set_user_health(id, 195)
        }

        else if (level[id] == 6)
        {
                show_hudmessage(id," 司令部: %d / 350 ^n 您的等级为 旅长: %d ^n 您当前血值: 205" , xp[id] , level[id] )
                set_user_health(id, 205)
        }

        else if (level[id] == 7)
        {
                show_hudmessage(id," 司令部: %d / 400 ^n 您的等级为 师长: %d ^n 您当前血值: 235" , xp[id] , level[id] )
                set_user_health(id, 235)
        }

        else if (level[id] == 8)
        {
                show_hudmessage(id," 司令部: %d / 500 ^n 您的等级为 军长: %d ^n 您当前血值: 265" , xp[id] , level[id] )
                set_user_health(id, 265)
        }

        else if (level[id] == 9)
        {
                show_hudmessage(id,"您现为司令部司令: %d  ^n您已成为将军,获得终极血值1000" , xp[id])
                set_user_health(id, 1000)
        }
}
// =============================================

public plugin_init()
{
        register_plugin("earn_health_mod","1.0","amok为 微波炉汉化增强版为 by lai为 xiwan")
        register_event("DeathMsg","event_deathmsg","a")
        register_event("RoundTime", "eNewRound", "bc")
}

该原码经测试能成功编译,只是没有数据保存功能,换图后就得重新开始升级
哪位高手若能将用户注册和数据记录代码加上去就尽乎完美了,成功了不妨拿出来分享一下!
发表于 2010-5-20 11:05:40 | 显示全部楼层 来自 中国–河北–石家庄
编译不成功...我编译器的过???
回复

使用道具 举报

发表于 2010-5-20 17:44:38 | 显示全部楼层 来自 中国–广西–贵港
:(我看不懂无法帮你啊!!!
回复

使用道具 举报

发表于 2010-5-21 01:47:37 | 显示全部楼层 来自 中国–广东–佛山
参照魔兽插件
回复

使用道具 举报

发表于 2010-5-21 11:21:48 | 显示全部楼层 来自 中国–甘肃–兰州
感谢楼主分享~~
回复

使用道具 举报

发表于 2010-5-21 11:56:01 | 显示全部楼层 来自 中国–河北–石家庄
求楼主编译器...
回复

使用道具 举报

 楼主| 发表于 2010-5-21 13:12:59 | 显示全部楼层 来自 中国–广东–深圳
编译器软件叫Uedit,自己到百度去搜索下载

4楼的说“参照魔兽插件”,我不大懂,能请阁下帮我弄一下吗?我借用lanclub的原代码就不能编译成功,能花钱买你的时间指教一下吗?
回复

使用道具 举报

发表于 2010-5-21 15:05:31 | 显示全部楼层 来自 中国–上海–上海–徐汇区
本帖最后由 fhzcnsdiv 于 2010-5-21 15:10 编辑

这年代~~如果是C++的话~可以使用SQLite~~

话说~这语法怎么越看越晕啊

发现了问题~~为什么每一行代码后面没有用分号隔开?这因该是违反C++编译的规范的~~
回复

使用道具 举报

 楼主| 发表于 2010-5-21 15:43:06 | 显示全部楼层 来自 中国–广东–深圳
语法规范与否,但我是确定该代码是可以编译成amxx的,看一下我修改的代码,什么都不用改,你直接编译就行了,只是没有数据库代码而己,你帮我添上去吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
回复

使用道具 举报

发表于 2010-5-28 15:13:15 | 显示全部楼层 来自 中国–广东–江门
看不懂,不贵我也想学学!
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表