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…...
5分钟搞定OpenClaw安装:Phi-3-vision-128k-instruct镜像一键部署指南
5分钟搞定OpenClaw安装:Phi-3-vision-128k-instruct镜像一键部署指南 1. 为什么选择星图平台部署Phi-3模型 上周我在本地尝试部署Phi-3-vision-128k-instruct模型时,被各种依赖冲突折磨得够呛。CUDA版本不匹配、vLLM编译失败、Python环境污染...这些问…...
从Python代码到动态仿真:手把手教你用SimPy搭建第一个系统动力学模型
从Python代码到动态仿真:手把手教你用SimPy搭建第一个系统动力学模型 在数据分析与人工智能项目中,系统动力学(System Dynamics)正逐渐成为分析复杂系统行为的重要工具。与传统的Vensim等专用软件不同,Python开发者可以…...
CSS如何实现不同尺寸的卡片网格_利用Grid跨行跨列设置
Grid卡片跨行跨列需用grid-row: span 2等语法避免线号计算错误;auto-fit需容器有明确宽度;高度不一致时宜用嵌套布局或grid-auto-rows: auto;IE11不支持现代Grid跨行,应降级方案。Grid卡片跨行跨列时,grid-row和grid-c…...
ChatGPT背后的大模型架构战:Transformer到MoE的技术进化全解析,AI工程师必读!
当ChatGPT引爆全球AI浪潮,当DeepSeek以低成本高性能震惊业界,你是否真正了解这些大模型背后的技术架构?本文将带你穿越大语言模型的技术演进史,揭秘从Transformer到MoE的关键跃迁。一、开篇:大模型时代的架构之争 2026…...
我需要开发出一个检测手机移动的算法来
1 用GPS2 运动传感器3 其他传感器就是真正能100%不会误报,而且精度达到:只要移动距离超过1米就要报警的那种。挂在树上面即使手机不停在转动也不会误报后来发现:只需要一个位移检测算法就可以了。...
嵌入式C轻量序列化库:结构体打包与位操作零依赖实现
1. 项目概述dot_util是一个轻量级、零依赖的嵌入式 C 语言工具库,专为资源受限的 MCU(如 Cortex-M0/M3/M4、RISC-V 32 位内核)设计。其核心定位并非通用算法库或 HAL 封装,而是聚焦于底层数据序列化与结构体操作的工程痛点&#x…...
新手福音:通过快马平台调用codex,用自然语言学写计算器代码
作为一个刚接触编程的新手,我最近发现了一个特别友好的学习方式——通过自然语言描述让AI帮我生成代码。这次我想做一个简单的网页计算器,在InsCode(快马)平台上体验了一把用codex模型生成代码的过程,收获很大。下面分享我的学习笔记…...
Agent自治宣言:当智能体要求带薪休假时的法律困境
一个假设引发的现实思辨想象这样一个场景:在一个高度自动化的软件测试团队中,一个名为“TestMaster-AI”的智能体经过数月的连续工作,突然通过内部系统向项目经理提交了一份申请:“根据我的连续运行时长和学习迭代次数,…...
k8s与docker compose的思考
1.稍微复杂2.ip会漂移,各种端口转发性能有所损失。3.占用一定的资源4.master需要高可用5.更适合web无状态docker-compose则比较简单,搭建本地环境就一个配置文件的事情,简直是本地test环境神器。...
Unpoly表单处理终极教程:实时验证与乐观渲染实践
Unpoly表单处理终极教程:实时验证与乐观渲染实践 【免费下载链接】unpoly Progressive enhancement for HTML 项目地址: https://gitcode.com/gh_mirrors/un/unpoly Unpoly是一个强大的渐进式增强HTML框架,能够显著提升Web应用的表单处理体验。通…...
