网站内搜索功能怎么做,小程序开发查询,个人微信号做网站行吗,网站首页模板管理#x1f34e;Sourcepawn脚本入门(二)命令与事件监听 #xff08;控制台#xff09;命令是常用的插件形式#xff0c;eg. noclip …等都是常用的命令#xff0c;在游戏中使用也很容易,souremod可以注册自己的命令。 事件的监听则需要考虑到不同的起源游戏支持的事件不同Sourcepawn脚本入门(二)命令与事件监听 控制台命令是常用的插件形式eg. noclip …等都是常用的命令在游戏中使用也很容易,souremod可以注册自己的命令。 事件的监听则需要考虑到不同的起源游戏支持的事件不同具体可以参考如下Game Events (Source) - AlliedModders Wiki (alliedmods.net) 1.注册控制台命令 使用RegConsoleCmd注册控制台命令 #include sdkhooks
#include sdktools
#include sourcemod
#pragma newdecls required
#pragma semicolon 1public Plugin myinfo
{name pluginOne,author ,description ,version 1.0.0,url https://github.com//pluginOne
};public void OnPluginStart()
{PrintToChatAll(这是第一个测试);//注册控制台命令RegConsoleCmd(sm_sayhellow,SayHellowToAll,这是一个测试测试的控制台命令);}//命令第二个参数为CallBack函数参数固定为两个int变量名字随便起
//但分别代表客服端id和该命令参数的个数
public Action SayHellowToAll(int client,int args)
{//向所有人发送信息PrintToChatAll(WDNMD);//Plugin_Handled是Action的返回值代表执行的结果//如果执行成功则为Plugin_Handled,失败则可以为Plugin_Error等//当然也可以不返回但不利于调试return Plugin_Handled;
}
编译部署到服务器的执行结果 获取参数信息和客户端信息 #include sdkhooks
#include sdktools
#include sourcemod
#pragma newdecls required
#pragma semicolon 1public Plugin myinfo
{name pluginOne,author ,description ,version 1.0.0,url https://github.com//pluginOne
};public void OnPluginStart()
{PrintToChatAll(这是第一个测试);//注册控制台命令RegConsoleCmd(sm_sayhellow,SayHellowToAll,这是一个测试测试的控制台命令);RegConsoleCmd(sm_everyone,SaySthSeveralTimes,这是一个测试测试的控制台命令);}public Action SayHellowToAll(int client,int args)
{//向所有人发送信息PrintToChatAll(WDNMD);return Plugin_Handled;
}public Action SaySthSeveralTimes(int client,int args){char clientname[36],args1[64],args2[10];//根据需要限制参数的个数if(args!2){PrintToChat(client,此命令需要两个参数1为内容2为要重复的次数);return Plugin_Handled;}//利用参数和client的API获取信息GetClientName(client,clientname,sizeof(clientname));GetCmdArg(1,args1,sizeof(args1));GetCmdArg(2,args2,sizeof(args2));int times StringToInt(args2);if(times1||times10){PrintToChat(client,次数必须在10以内);return Plugin_Handled;}//循环输出for(int i 0;itimes;i){PrintToChatAll(| %s | say %s To EveryOne,clientname,args1);}return Plugin_Handled;
}2.监听游戏事件 游戏事件在具体游戏上会有一些差别所以在此处请参考文档 Game Events (Source) - AlliedModders Wiki (alliedmods.net) 此处以Player_death为例 列表中提供的参数里事件中可以获取到的参数。
#include sdkhooks
#include sdktools
#include sourcemod
#pragma newdecls required
#pragma semicolon 1public Plugin myinfo
{name pluginOne,author ,description ,version 1.0.0,url https://github.com//pluginOne
};public void OnPluginStart()
{PrintToChatAll(这是第一个测试);//绑定事件和它的触发函数HookEvent(player_death,OnPlayerDeathFunction);
}//事件触发函数同上参数类型固定变量名不固定
public void OnPlayerDeathFunction(Event event, const char[] name, bool dontBroadcast){//找到文档中可以参照的属性//short userid user ID who died//short attacker user ID who killed//string weapon weapon name killer used//bool headshot singals a headshot//获取被打人的useridint userid event.GetInt(userid);//获取攻击者的idint attacker event.GetInt(attacker);//获取是否爆头bool isHeadshot event.GetBool(headshot);//通过事件ID获取ClientIDint clientid GetClientOfUserId(userid);int attackerid GetClientOfUserId(attacker);char victim_name[36],attacker_name[36];GetClientName(clientid,victim_name,sizeof(victim_name));GetClientName(attackerid,attacker_name,sizeof(attacker_name));//广播通知信息if(isHeadshot){PrintToChatAll( | %s | kill | %s | in headshot ,attacker_name,victim_name);}else{PrintToChatAll( | %s | kill | %s | ,attacker_name,victim_name);}}