/*此插件由孤独解释,感谢keyblade的补充解释!欢迎你回来!keyblade!*/
#include <amxmodx>
#include <fakemeta>//和上面一样,需要的模块,不用解释了把?
#define PLUGIN_NAME "New Plug-In"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "Charm灬Weiwei"//这个老规矩不需要解释了把?。。 名字、版本、作者。
new g_msgStatusIcon;//声明变量g_msgStatusIcon
public plugin_init()//开局事件
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);//不解释了 注册插件信息。
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")//注册每局发送消息给HLTV引擎事件,引发score_round事件,触发对象:全局(游戏中的每个玩家和实体),后面的1=0,2=2我不知道什么意思,inc里没解释。
g_msgStatusIcon = get_user_msgid("StatusIcon");//获取StatusIcon消息的消息ID,消息ID通常用于自定义消息,【STatusIcon是Event的事件之一,翻译如下:】
}
public event_round_start()//event_round_start事件
{
control_showhudspr(1);//这个代码没见过。。。新接触的。。 inc文件没有解释,据我的翻译的话。。 控制显示hud已定义的spr,后面的1应该是显示多少张把,我推断的。。
new Float:fFreezetime = get_cvar_float("mp_freezetime");//【声明浮点数变量fFreezetime(这个单词好像是冻结时间把?)并赋值为设置指定服务器mp冻结时间的属性】←我翻译的,keyblade 翻译的→【get_cvar_float应该是用来获取自定义指令的值的函数吧,我不太确定,mp_freezetime是CS中冻结时间的命令,我觉得这样用好像不对】
new Float:fShowtime = fFreezetime>0.0 ? fFreezetime : 1.5;//声明浮点数变量fShowtime;? : 这是一个运算符,完整形式为 表达式1 ? 表达式2 : 表达式3 可以翻译为条件式形式,如下
//if( 表达式1 )
//{
// 表达式2;
// }
//else
//{
// 表达式3;
//}
set_task(fShowtime,"hide_showhudspr");//设置定时任务,延时时间为fShowtime变量的值,也就是每多少引用一次。然后引用的事件是hide_showhudspr,也就是回调函数【keyblade,简白点吧。。方便新手了解】
}
public hide_showhudspr()//hide_showhudspr事件
{
control_showhudspr(0);//这个跟之前见到的好像一样,直接出现事件名。不过后面的赋值。。 不知道啥意思。。
}
public control_showhudspr(sw)//control_showhudspr事件,一样,后面的赋值。。 sw 不知道纳尼意思 ,我的推断应该是跟id差不多把。。
{
message_begin(MSG_ALL,g_msgStatusIcon,{0,0,0});//发送的目标为MSG_ALL,也就是全部人,显示的文字为变量 g_msgStatusIcon的值,后面的数值表示消息发生的位置,在这个函数原型【message_begin ( dest, msg_type, origin[3]={0,0,0},player=0 );】,还有一个参数:player指消息发送给谁,写玩家ID
write_byte(sw);//byte类型,表示状态,0为隐藏,1显示,2闪烁;这里的sw是一个函数的参数值,具体不知。。 求待高人解决。。
write_string("your_hudspr");//string类型,表示这个hud要用什么spr,里面的your_hudspr只是一个示例,表示在这里用你的spr。。 好像必须在hud里有定义把。。
write_byte(128);//RGB的值,按顺序,这个就是R值【RGB大家应该懂吧?。。颜色值。。 这里就不多说了。】这三个值都是byte值,当第一个不为0时,下面两个必须要填。。 为可选参数。
write_byte(128);//这个就是G值
write_byte(128);//这个自然就是B值
message_end();//表示一个消息结束,在一个消息结束之前不能发送第2个消息
}
/*总结:据作者的思路。。 这个应该是显示一个hud里定义的spr。。 显示spr的途径很多。。 这个可能会有点麻烦把。。 可以用很多种形式。。 cs自带,MH模块、ACG模块等。。。*/
//有能力的就帮忙完善一下插件解释把。。
//1、control_showhudspr(1)、control_showhudspr(0) 后面的数值是什么意思?
//2、public control_showhudspr(sw) 事件、write_byte(sw) 后面的(sw)什么意思?跟id的意思一样么?