整点有的没的[CSGO 社区插件开发笔记]
记一笔正儿八经的怎么开个正常的csgo服务器:
社区服Neko服主的开服笔记www.steamstart.com/thread-2-1-1.html
经验来自https://dpii.club/archives/160
首先随便租一个服务器,淘宝买一个腾讯云48包年,操作系统就Ubuntu18
工具我选择Xshell Xftp(蓝色为控制台指令)
首先shell连接到服务器后安装环境依赖:
控制台需要用shift+ins黏贴,退格需要按住ctrl,操作错误就重来吧
部署服务器脚本:
执行server脚本:
./csgoserver install
然后需要去steam申请服务器令牌GSTL(Game Server Login Token):
https://steamcommunity.com/dev/managegameservers
CSGO的appid为730
按提示遇到Y/N:Y?就按回车直到:
=================================
Install Complete!
To start server type:
./csgoserver start
插个题外话:
./csgoserver的后接指令可以使用缩写
st = start
sp = stop
r = restart
i = install
c = console
到这里就能进服玩一圈了
你可能会看见一些关于备份_default.cfg这些内容,直接去lgsm/config-lgsm/csgoserver中操作就行,记得填写令牌
接下来是SourceMod和MetaMod的安装
经验同样来自https://dpii.club/archives/242
./csgoserver mods-install
先装MM再装sm
管理员来自sm插件,因此直接serverfiles/csgo/addons/sourcemod/configs/admins_simple.ini找到这个文件最后另起一行写入:"STEAM_1:0:XXXXXXXXX" "99:z" {使用status在游戏内游玩服务器查询}

既然是开发相关笔记,那么:
首先
sourcmod的官网总站导航:www.sourcemod.net
插件检索下载:www.sourcemod.net/plugins.php
sp编译.smx:www.sourcemod.net/compiler.php
API定义查询:sm.alliedmods.net/new-api/
开发工具选择VSCode,IDE插件SourcePawn,开发语法是C++
sp语言并不是面向对象的语言,甚至不包括语法糖
*注:SourcePawn会下载相关库文件,同样可以在serverfiles/csgo/addons/sourcemod/scripting/include中找到同样的库文件
总共71个inc文件,可以在上文中查到具体用法
还有一些工具来自SourceMOD的discord
在线编译工具(需要自备库)spider.limetech.io
反编译工具headlinedev.xyz/lysis/
正则表达式regex101.com
偏移表查询asherkin.github.io/vtable/
还有一个是Hummer的工具集valvedev.info/tools/chrono_index.html
.smx放到sourcemod/plugins | .smx是二进制文件,是插件本体
.sp通常放在sourcemod/scripting | .sp仅为脚本文件,不顶用的
.phrases.txt放在sourcemod/translations | translations顾名思义就是翻译

来讲点得劲的,自瞄插件
先介绍一下来源和作者:
ExtremeBlackLiu(国内OTC3就是他在更新)
bbs.keter.pub/space-uid-10.html
DarkGL(一个和我一样大的波兰人但是从事编程已有13年,谷歌翻译看波兰语实在emmm)
darkgl.pl/o-autorze/
[源码] 服务端自瞄插件 SourceMod插件
adminaim.sp:
作者提供了源码,咱看到首先得去看怎么使用
include,导入库
Plugin:myinfo,插件信息
new bool:aimOn[ MAXPLAYERS ],应该是新建了一个开关叫aim on
OnPluginStart,在api文档中描述:
当插件完全初始化并解析所有已知的外部引用时调用。这在插件的生命周期中只调用一次,并与OnPluginEnd()配对。
如果在此回调期间抛出任何运行时错误,则该插件将被标记为失败。
RegAdminCmd,这里应该有3个类似指令Reg=regist(注册) Cmd=command(指令) Admin管理员,Console控制台,Server服务器
那么可以看到注册的命令是aim,因此需要管理员在服务器内使用 "!aim"
返回aimMenu函数
这里看到一个Action、createMenu、Plugin_Handled可以查询得到:
还有一个明显是创建菜单。我们也查一下用法:
CreateMenu Function
使用默认样式创建新的空菜单。
接下来createMenu指到一个代码块
接下来的东西我并非能看明白,但是读到这里我知道的是:
需要管理员在聊天板里敲 !aim
然后会有个默认样式的菜单跳出来
大概笔记就写到这里,需要更扎实的C++功底和对api的熟悉度

