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…...
S2-Pro提示词(Prompt)工程入门:从零到一掌握高效对话技巧
S2-Pro提示词(Prompt)工程入门:从零到一掌握高效对话技巧 1. 为什么需要学习提示词工程 你可能已经发现,同样的AI模型,在不同人手里表现天差地别。有人能让它写出专业报告,有人却只能得到敷衍的回复。这中…...
Qwen3-ASR-0.6B WebUI实战:中文方言自动识别与结果导出操作
Qwen3-ASR-0.6B WebUI实战:中文方言自动识别与结果导出操作 1. 快速了解Qwen3-ASR-0.6B语音识别模型 Qwen3-ASR-0.6B是一个轻量级但性能强大的语音识别模型,专门为实际应用场景设计。这个模型只有6亿参数,但识别效果却相当出色,…...
告别树莓派原生系统:我在SpotMicro上成功部署ROS Kinetic的完整踩坑记录
从树莓派到ROS Kinetic:SpotMicro四足机器人深度改造实战 当树莓派原生系统在SpotMicro项目上反复报错时,我盯着纹丝不动的前腿舵机,意识到是时候转向更专业的ROS方案了。这不是简单的系统切换,而是一次从底层架构到控制逻辑的全面…...
PaddleOCR-VL-1.5:0.9B VLM实现文档解析新SOTA
PaddleOCR-VL-1.5:0.9B VLM实现文档解析新SOTA 【免费下载链接】PaddleOCR-VL-1.5-GGUF 项目地址: https://ai.gitcode.com/paddlepaddle/PaddleOCR-VL-1.5-GGUF 导语:百度飞桨团队推出PaddleOCR-VL-1.5,以0.9B参数量的轻量化视觉语言…...
轻量级MCU命令行交互系统设计与优化
1. 轻量级MCU命令行交互系统设计指南1.1 系统概述在嵌入式系统开发过程中,调试和维护阶段往往需要与单片机进行参数交互和操作控制。传统解决方案如RT-Thread的finsh组件虽然功能强大,但对于资源受限的MCU(如ROM<64KB,RAM<8…...
终极Windows内存清理指南:如何用Mem Reduct让系统永远流畅运行
终极Windows内存清理指南:如何用Mem Reduct让系统永远流畅运行 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct…...
OpenClaw任务编排:用Qwen3.5-4B-Claude实现爬虫+分析闭环
OpenClaw任务编排:用Qwen3.5-4B-Claude实现爬虫分析闭环 1. 为什么需要自动化任务编排 去年我接手了一个市场调研项目,需要每周从20多个网站抓取产品价格数据,清洗后生成趋势图表。最初用Python脚本手动Excel处理,每次要花3小时…...
解锁新可能:ArkData 在智能穿戴设备中的应用
解锁新可能:ArkData 在智能穿戴设备中的应用随着人们对健康生活的重视,智能穿戴设备愈发普及。这些设备能够实时收集心率、步数、睡眠等健康数据,为人们的健康管理提供重要参考。在这一背景下,如何高效管理和利用这些健康数据成为…...
Linux内核进程创建与调度机制详解
Linux内核进程创建机制深度解析:从fork到进程调度1. 进程创建概述在Linux操作系统中,进程创建是通过fork系统调用实现的。fork系统调用会创建一个与父进程几乎完全相同的子进程,包括代码段、数据段、堆栈等内存空间的复制。本文将深入分析Lin…...
实战指南:基于快马生成电商订单自动化n8n工作流,无缝衔接shopify与crm
实战指南:基于快马生成电商订单自动化n8n工作流,无缝衔接shopify与crm 最近在帮朋友优化他们电商业务的后台流程,发现手动处理订单实在太费时间了。特别是遇到大促期间,订单量暴增,人工操作不仅效率低还容易出错。于是…...
