|
本帖最后由 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[33][33]//存放玩家名字的二位数组
- new CT_models[4][] = {"gign","gsg9","sas","urban"}//存放CT皮肤的数组
- new T_models[4][]={"atctic","guerilla","leet","terror"}//存放T皮肤的数组
- new up[33]//存放玩家是否已经伪装的数据
- new bool:g_restart_attempt[MAX_PLAYERS + 1]//跟重新开局有关的变量
- new msg[513]//多彩信息函数使用的数组
- 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[32], num
- get_players(players, num, "a")
- for (new i; i < num; ++i)
- g_restart_attempt[players[i]] = true
- }
- public event_hud_reset(id)
- {
- if (g_restart_attempt[id])
- {
- g_restart_attempt[id] = false
- return
- }
- event_player_spawn(id)
- }
- public event_player_spawn(id)
- {
- //获取玩家的名字
- get_user_name(id,UserName[id],32)
- //显示提示信息
- set_hudmessage(27, 247, 27, -1.0, -1.0, 0, 6.0, 12.0)
- show_hudmessage(id, "【系统提示】:^n请输入MENU选择间谍伪装需要8000元!")
- if (up[id]==1)
- {//如果玩家在上一个回合已经伪装,就让他恢复原形
- if (cs_get_user_team(id)==CS_TEAM_CT)
- {//扮演CT的玩家随机选择一个CT皮肤
- cs_set_user_model(id,CT_models[random_num(0,3)])
- }
- if (cs_get_user_team(id)==CS_TEAM_T)
- {//扮演T的玩家随机选择一个T皮肤
- cs_set_user_model(id,T_models[random_num(0,3)])
- }
- }
- }
- //伪装的命令
- public upgrade(id)
- {
- if (up[id]==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[random_num(0,3)])
- }
- if (cs_get_user_team(id)==CS_TEAM_T)
- {//给扮演T的玩家随机选择一个CT的模型
- cs_set_user_model(id,CT_models[random_num(0,3)])
- }
- //设置玩家已经伪装
- up[id]=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[id])
- 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[id])
- client_color(x,id, msg)
- }
- if (x==id)
- {//伪装者自己
- format(msg, 513, "^x04【系统提示】^x01升级^x04间谍伪装^x01成功!")
- client_color(id,id, msg)
- }
- }
- }
- }
- return PLUGIN_CONTINUE
- }
复制代码 这个插件问题:第一局购买间谍伪装就没有问题,然后到了第二局你在购买间谍伪装,就提示你已经购买了间谍伪装了,后面就没有办法使用了,我觉得好象少个判断只类的命令,后台老是提示:没有找到带着那个名字或编号的客户端帮帮忙呀 |
|