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
}
这个插件问题:第一局购买间谍伪装就没有问题,然后到了第二局你在购买间谍伪装,就提示你已经购买了间谍伪装了,后面就没有办法使用了,我觉得好象少个判断只类的命令,后台老是提示:没有找到带着那个名字或编号的客户端帮帮忙呀 自己先顶着吧:L LZ,你这个源码是你自己写的还是别人写的!
我怎么看上去觉得有好多错误吖! 你这个东西我越看越觉得漏洞百出,能说一下这是谁写的吗?? 本帖最后由 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
}
} 那就请kk阿朗帮忙把原文件修改一下吧,不是我写的,哈哈没有哪个本事 我看你还不如说一下你想怎么样的一个插件,我试试看能不能帮你写一个!!
页:
[1]