Sourcepawn脚本入门(二)命令与事件监听
🍎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(times<1||times>=10){PrintToChat(client,"次数必须在10以内!");return Plugin_Handled;}//循环输出for(int i =0;i<times;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);}}

相关文章:
Sourcepawn脚本入门(二)命令与事件监听
🍎Sourcepawn脚本入门(二)命令与事件监听 (控制台)命令是常用的插件形式,eg. noclip …等都是常用的命令,在游戏中使用也很容易,souremod可以注册自己的命令。 事件的监听则需要考虑到不同的起源游戏支持的事件不同&am…...
java-poi操作笔记
row表示行,cell表示row中的第几个cell package sample.Utils;import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Workbook; impor…...
PHP:js中怎么使用PHP变量,php变量为数组时的处理
方法一:使用内嵌 PHP 脚本标记 1、简单的拼接 使用内嵌的 PHP 脚本标记 <?php ?> 将 PHP 变量 $phpVariable 的值嵌入到 JavaScript 代码中。 <?php $phpVariable "Hello, World!"; ?><script> // 将 PHP 变量的值传递给 JavaS…...
网工学习7-配置 GVRP 协议
7.1GARP概述 GARP(Generic Attribute Registration Protocol)是通用属性注册协议的应用,提供 802.1Q 兼容的 VLAN 裁剪 VLAN pruning 功能和在 802.1Q 干线端口 trunk port 上建立动态 VLAN 的功能。 GARP 作为一个属性注册协议的载体,可以用来传播属性…...
python:格式化输出指定内容
python:格式化输出指定内容 当涉及到在Python中格式化输出指定内容时,有几种方法可以让您的输出更加清晰和易读。Python的f-string(格式化字符串)是一种简洁而强大的工具,可以帮助您以所需的格式输出数据。 首先&…...
【C语言】7-35 强迫症 分数 10
7-35 强迫症 分数 10 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808。有强迫症的小强请你写个程序,把所有人的…...
如何快速了解一家公司?
在炒股过程中,我们想要了解一家公司是否具有投资价值,需要查看和阅读很多公司的相关资料。股民们自行去查询往往会花费很多的时间精力,所以专业的炒股软件一般都会给股民提供这些现成的资料。 在金斗云智投APP内,进入到个股详情页…...
ZPLPrinter Emulator SDK for .NET 6.0.23.1123 Crack
ZPLPrinter Emulator SDK for .NET 适用于 .NET 的 ZPLPrinter 仿真器 SDK 允许您通过编写 C# 或VB.NET 代码针对任何 .NET Framework、.NET CORE、旧版 ASP.NET MVC 和 CORE、Xamarin、Mono 和通用 Windows 平台 (UWP) 作业。 适用于 .NET 的 ZPLPrinter 仿真器 SDK 允许您将…...
查收查引(通过文献检索开具论文收录或引用的检索证明)
开具论文收录证明的 专业术语为 查收查引,是高校图书馆、情报机构或信息服务机构提供的一项有偿服务。 因检索需要一定的时间,提交委托时请预留足够的检索时间。 一般需要提供:论文题目、作者、期刊名称、发表年代、卷期、页码。 目录 一、查…...
Python一帮一
在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。 输入格式: 输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别࿰…...
学员追访 | “IC的标签并不是只有高薪与965”
大家好,我是08期的学员小D 。 很开心能在这里与大家分享我的学习、工作经历,我毕业于一所双非本科院校。现在已经入职五个月了,很满意目前的薪资水平和工作状态。 接下来我把我的学习经历和求职经验给大家做个分享,希望能够帮到…...
LeetCode(39)赎金信【哈希表】【简单】
目录 1.题目2.答案3.提交结果截图 链接: 赎金信 1.题目 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字…...
输入日期求n天后
题目要求:输入一个日期startdate年月日和days天数(>1),输出自该日期days天后的日期enddate。 要求输出和输出的年份为四位整数,输入时对输入数据的有效性进行检查;同时考虑跨月,跨年和闰年情…...
科技论文中的Assumption、Remark、Property、Lemma、Theorem、Proof含义
一、背景 学控制、数学、自动化专业的学生在阅读论文时,经常会看到Assumption、Remark、Property、Lemma、Theorem、Proof等单词,对于初学者可能不太清楚他们之间的区别,因此这里做一下详细的说明。 以机器人领域的论文为例。 论文题目&…...
逆向爬虫进阶实战:突破反爬虫机制,实现数据抓取
文章目录 一、引言二、逆向爬虫进阶技巧三、逆向爬虫进阶实战代码片段四、总结与展望好书推荐内容简介作者简介前言节选 一、引言 随着网络技术的发展,网站为了保护自己的数据和资源,纷纷采用了各种反爬虫机制。然而,逆向爬虫技术的出现&…...
个体民营诊所-如何打破传统发展瓶颈,增客流-提营收?
随着人们对传统医学和自然疗法的需求增加,开办针灸诊所可以满足社会公众对健康的需求,提供更多元化的医疗选择。 针灸作为一种传统的中医疗法,不仅可以帮助调理身体,还能帮助客户缓解疼痛,改善循环等。但针灸诊所&…...
Filament引擎分析--command抽象设备API
1. 前言 Filament中使用了FrameGraph来管理渲染管线,需要准备两点: 设备接口抽象:设备API抽象为Command资源抽象:使用虚拟资源,在实际用到时再创建,方便剔除无用资源 下面就围绕Filament中设备API抽象为…...
网络协议与响应码
http:超文本(不止文本)传输协议,底层是tcp/ip get,post,put,delete GET把参数包含在 URL 中, POST 通过 request body 传递参数 请求都是tcp链接,HTTP规定,当…...
彻底删除VsCode配置和安装过的插件与缓存
前言 当你准备对 Visual Studio Code(VSCode)进行重新安装时,可能遇到一个常见问题:重新安装后,新的安装似乎仍然保留了旧的配置信息,这可能会导致一些麻烦。这种情况通常是由于卸载不彻底所致,…...
【XILINX】ISE chipscope出现错误 Can‘t load jre bin client jvm.dll
记录一个ISE软件使用过程中遇到的问题及解决方案。 问题 ISE chipscope出现错误 Cant load jre bin client jvm.dll C:\Xilinx\14.7\ISE_DS\ISE\bin\nt C:\Xilinx\14.7\ISE_DS\.xinstall\bin\nt C:\Xilinx\14.7\ISE_DS\.xinstall\bin\nt64 C:\Xilinx\14.7\ISE_DS\ISE\bin\nt6…...
Java集成Gemma大模型:本地推理与生产部署实战指南
1. 项目概述:当Gemma遇上Java 最近在开源社区里,一个名为 mukel/gemma4.java 的项目引起了我的注意。光看这个标题,熟悉AI模型和Java生态的朋友可能已经会心一笑。没错,这个项目直指一个核心痛点:如何让Google最新推…...
AI工具导航与实战指南:从分类体系到选型策略
1. 项目概述:AI-Infinity,一个前沿AI工具的探索者指南如果你和我一样,对AI领域层出不穷的新工具感到既兴奋又头疼,那么这个项目绝对值得你花时间深入了解。AI-Infinity,这个由开发者meetpateltech维护的GitHub仓库&…...
微信视频下载器wx_channels_download
微信视频下载器ltaoo/wx_channels_download(跨平台轻量首选) 特点:体积小、使用简单,在微信PC端视频下方添加“下载”按钮;支持 macOS 和 Windows。优点:集成式(无需单独监听)&…...
工程师如何运用专业技能参与人道主义项目:从思维转变到实践落地
1. 项目概述:工程师的人道主义行动倡议每年8月19日,世界人道主义日都会提醒我们关注那些在全球最艰苦、最危险地区默默奉献的人们。这个日子最初是为了纪念在履职中牺牲的人道主义工作者,如今已演变为一个更广泛的号召——庆祝那种激励全球人…...
上古卷轴5天际整合包下载最新全热门MOD整合(画质+人物+功能+场景全美化)下载分享
一、整合包基础概况 新手向懒人专属整合资源,适配电脑Windows系统。整合包集成多款热门优质MOD,无需玩家单独下载模组,整合包整体兼容性强,适配主流家用电脑,官方提前做好模组适配优化,规避多数模组冲突问…...
AI原生图计算不是“加个GNN层”那么简单:SITS 2026定义的5层工程化成熟度模型(附自测清单+迁移路线图)
更多请点击: https://intelliparadigm.com 第一章:AI原生图计算应用:SITS 2026图神经网络工程化方案 SITS 2026 是面向大规模动态图场景的AI原生图计算框架,深度融合GNN训练、图拓扑实时更新与边缘-云协同推理能力。其核心设计摒…...
面试被问烂的20道编程基础题,你必须全会,不然别去面试
文章目录前言一、Python基础篇(6道)1. Python中list和tuple有什么区别?2. Python 3.7之后普通dict已经有序了,那OrderedDict还有存在的必要吗?3. Python中的深拷贝和浅拷贝有什么区别?4. Python中的*args和…...
LangGraph、OpenClaw、Hermes:三种 Agent 路线,不是一回事
开头 这两年,只要聊到 Agent,绕不开三个名字:LangGraph、OpenClaw、Hermes。 它们都很火。 但也很容易被混在一起。 有人把 LangGraph 当成一个“Agent 产品”。 有人把 OpenClaw 当成一个“Agent 框架”。 也有人把 Hermes 理解成“另…...
SAP资产会计进阶:深入理解AS91、AB01与ABLDT在期初数据处理中的角色与联动
SAP资产会计核心事务代码解析:AS91、AB01与ABLDT的协同逻辑与实战应用 在SAP S4 HANA资产模块的实施与运维中,期初数据处理往往是项目成败的关键节点。不同于日常资产操作,期初数据迁移涉及历史价值追溯、折旧逻辑重建以及多系统数据对齐等复…...
别再只把PCA当降维工具了!用它处理三维点云,5分钟搞定地面和墙面分割
别再只把PCA当降维工具了!用它处理三维点云,5分钟搞定地面和墙面分割 当我们在处理三维点云数据时,常常会遇到需要将地面、墙面和其他物体点进行分割的场景。传统方法可能需要复杂的算法和大量的计算资源,但今天我要分享的是一个…...
