20576526 发表于 2009-6-14 10:20:29

8874323斑竹帮帮忙

本帖最后由 20576526 于 2009-6-14 18:54 编辑

/* UTF-8 func by www.DT-Club.net */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>

#define MAX_PLAYERS 32

#define PLUGIN_NAME        "HC_Spy"
#define PLUGIN_VERSION        "1.0"
#define PLUGIN_AUTHOR        "Apocalyptic"

new UserName//存放玩家名字的二位数组
new CT_models[] = {"gign","gsg9","sas","urban"}//存放CT皮肤的数组
new T_models[]={"atctic","guerilla","leet","terror"}//存放T皮肤的数组
new up//存放玩家是否已经伪装的数据
new bool:g_restart_attempt//跟重新开局有关的变量
new msg//多彩信息函数使用的数组

public plugin_init()
{
        register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
        //玩家重生事件
        register_event("ResetHUD", "event_hud_reset", "be")
        register_clcmd("fullupdate", "clcmd_fullupdate")
        register_event("TextMsg", "event_restart_attempt", "a", "2=#Game_will_restart_in")
        //注册控制台命令
        register_concmd("hc_spy", "upgrade",0,"Spy")
        //注册CVAR
        register_cvar("hc_Spy", "8000") //进行伪装所需要的资金
        //伤害玩家的事件
        //register_event("Damage","Damage","b","2!0")
        return PLUGIN_CONTINUE
}

//多彩信息函数
public client_color(playerid, colorid, msg[])
{
        message_begin(playerid?MSG_ONE:MSG_ALL,get_user_msgid("SayText"),_,playerid)
        write_byte(colorid)
        write_string(msg)
        message_end()
}

//玩家加入服务器
public client_putinserver(id)
{
        //绑定F1为伪装键
        client_cmd(id, "")
}

//当玩家重新开局的时候
public clcmd_fullupdate()
{
        return PLUGIN_HANDLED
}

public event_restart_attempt()
{
        new players, num
        get_players(players, num, "a")
        for (new i; i < num; ++i)
                g_restart_attempt] = true
}

public event_hud_reset(id)
{
        if (g_restart_attempt)
        {
                g_restart_attempt = false
                return
        }
        event_player_spawn(id)
}

publicevent_player_spawn(id)
{
        //获取玩家的名字
        get_user_name(id,UserName,32)
        //显示提示信息
        set_hudmessage(27, 247, 27, -1.0, -1.0, 0, 6.0, 12.0)
        show_hudmessage(id, "【系统提示】:^n请输入MENU选择间谍伪装需要8000元!")
        if (up==1)
        {//如果玩家在上一个回合已经伪装,就让他恢复原形
                if (cs_get_user_team(id)==CS_TEAM_CT)
                {//扮演CT的玩家随机选择一个CT皮肤
                        cs_set_user_model(id,CT_models)
                }
                if (cs_get_user_team(id)==CS_TEAM_T)
                {//扮演T的玩家随机选择一个T皮肤
                        cs_set_user_model(id,T_models)
                }
        }
}

//伪装的命令
public upgrade(id)
{
        if (up==1)
        {//如果玩家已经伪装,显示提示信息
                format(msg, 513, "^x04【系统提示】^x01您已经购买了^x04间谍伪装^x01!")
                client_color(id,id, msg)
                return PLUGIN_HANDLED
        }
        if (!cs_get_user_buyzone(id))
        {//如果玩家不在购买区内,显示提示信息
                format(msg, 513, "^x04【系统提示】^x01您必须在^x04购买区域^x01内才能使用!")
                client_color(id,id, msg)
                return PLUGIN_HANDLED
        }
        if (!is_user_alive(id))
        {//如果玩家已死,显示提示信息
                format(msg, 513, "^x04【系统提示】^x01您必须在^x04存活^x01状态下使用!")
                client_color(id,id, msg)
                return PLUGIN_HANDLED
        }
        if (cs_get_user_money(id)<get_cvar_num("hc_Spy"))
        {//如果玩家的资金不足,显示提示信息
                format(msg, 513, "^x04【系统提示】^x01您不够金钱来买伪装术!至少需要^x04%d^x01!",get_cvar_num("hc_Spy"))
                client_color(id,id, msg)
                return PLUGIN_HANDLED
        }       
        else
        {//如果以上条件都满足,就允许伪装
                //扣除所需要的资金
                cs_set_user_money(id,cs_get_user_money(id)-get_cvar_num("hc_Spy"),1)
                if (cs_get_user_team(id)==CS_TEAM_CT)
                {//给扮演CT的玩家随机选择一个T的模型
                        cs_set_user_model(id,T_models)
                }
                if (cs_get_user_team(id)==CS_TEAM_T)
                {//给扮演T的玩家随机选择一个CT的模型
                        cs_set_user_model(id,CT_models)
                }
                //设置玩家已经伪装
                up=1
                for (new x=1;x<=32;x=x+1)
                {//循坏查找每个玩家
                        if(is_user_connected(x)&&is_user_alive(x))
                        {//排除已死或者不在线的玩家
                                if (cs_get_user_team(x)==cs_get_user_team(id) && x!=id)
                                {//查找队友
                                        format(msg, 513, "^x04【系统提示】^x01请注意!队友^x03%s^x01已经伪装成敌人!请注意分辨!",UserName)
                                        client_color(x,id, msg)
                                }
                                if (cs_get_user_team(x)!=cs_get_user_team(id) && cs_get_user_team(x)!=CS_TEAM_SPECTATOR)
                                {//不是队友也不是观察者的人
                                        format(msg, 513, "^x04【系统提示】^x01请注意!敌人^x03%s^x01已经伪装成我们的人!请注意分辨!",UserName)
                                        client_color(x,id, msg)
                                }
                                if (x==id)
                                {//伪装者自己
                                        format(msg, 513, "^x04【系统提示】^x01升级^x04间谍伪装^x01成功!")
                                        client_color(id,id, msg)
                                }
                        }
                }
        }
        return PLUGIN_CONTINUE
}
这个插件问题:第一局购买间谍伪装就没有问题,然后到了第二局你在购买间谍伪装,就提示你已经购买了间谍伪装了,后面就没有办法使用了,我觉得好象少个判断只类的命令,后台老是提示:没有找到带着那个名字或编号的客户端帮帮忙呀

20576526 发表于 2009-6-15 20:29:42

自己先顶着吧:L

LittleKu 发表于 2009-6-16 01:51:10

LZ,你这个源码是你自己写的还是别人写的!
我怎么看上去觉得有好多错误吖!

LittleKu 发表于 2009-6-16 02:48:58

你这个东西我越看越觉得漏洞百出,能说一下这是谁写的吗??

sakulekingz 发表于 2009-6-16 06:14:34

本帖最后由 sakulekingz 于 2009-6-16 06:19 编辑

大致的看了下源代码,发现了楼主说的问题所在event_player_spawn改成这样public event_player_spawn(id)
{
        //获取玩家的名字
       
        get_user_name(id,UserName,32)
        //显示提示信息
        set_hudmessage(27, 247, 27, -1.0, -1.0, 0, 6.0, 12.0)
        show_hudmessage(id, "【系统提示】:^n请输入MENU选择间谍伪装需要8000元!")
       
        if (up==1)
        {
                //如果玩家在上一个回合已经伪装,就让他恢复原形
               
                if (cs_get_user_team(id)==CS_TEAM_CT)
                {
                        //扮演CT的玩家随机选择一个CT皮肤
                        cs_set_user_model(id,CT_models)
                }
                if (cs_get_user_team(id)==CS_TEAM_T)
                {
                        //扮演T的玩家随机选择一个T皮肤
                        cs_set_user_model(id,T_models)
                }
                up=0
        }
}

20576526 发表于 2009-6-16 09:48:02

那就请kk阿朗帮忙把原文件修改一下吧,不是我写的,哈哈没有哪个本事

LittleKu 发表于 2009-6-17 00:47:29

我看你还不如说一下你想怎么样的一个插件,我试试看能不能帮你写一个!!
页: [1]
查看完整版本: 8874323斑竹帮帮忙