整點(diǎn)有的沒(méi)的[CSGO 社區(qū)插件開(kāi)發(fā)筆記](méi)
記一筆正兒八經(jīng)的怎么開(kāi)個(gè)正常的csgo服務(wù)器:
社區(qū)服Neko服主的開(kāi)服筆記www.steamstart.com/thread-2-1-1.html
經(jīng)驗(yàn)來(lái)自https://dpii.club/archives/160
首先隨便租一個(gè)服務(wù)器,淘寶買(mǎi)一個(gè)騰訊云48包年,操作系統(tǒng)就Ubuntu18
工具我選擇Xshell Xftp(藍(lán)色為控制臺(tái)指令)
首先shell連接到服務(wù)器后安裝環(huán)境依賴(lài):
控制臺(tái)需要用shift+ins黏貼,退格需要按住ctrl,操作錯(cuò)誤就重來(lái)吧
部署服務(wù)器腳本:
執(zhí)行server腳本:
./csgoserver install
然后需要去steam申請(qǐng)服務(wù)器令牌GSTL(Game Server Login Token):
????https://steamcommunity.com/dev/managegameservers
????CSGO的appid為730
按提示遇到Y(jié)/N:Y?就按回車(chē)直到:
=================================?
Install Complete!?
?To start server type:
./csgoserver start
插個(gè)題外話:
./csgoserver的后接指令可以使用縮寫(xiě)
st = start
sp = stop
r =?restart
i =?install
c = console
到這里就能進(jìn)服玩一圈了
你可能會(huì)看見(jiàn)一些關(guān)于備份_default.cfg這些內(nèi)容,直接去lgsm/config-lgsm/csgoserver中操作就行,記得填寫(xiě)令牌
接下來(lái)是SourceMod和MetaMod的安裝
經(jīng)驗(yàn)同樣來(lái)自https://dpii.club/archives/242
./csgoserver mods-install
先裝MM再裝sm
管理員來(lái)自sm插件,因此直接serverfiles/csgo/addons/sourcemod/configs/admins_simple.ini找到這個(gè)文件最后另起一行寫(xiě)入:"STEAM_1:0:XXXXXXXXX" "99:z"? {使用status在游戲內(nèi)游玩服務(wù)器查詢}

既然是開(kāi)發(fā)相關(guān)筆記,那么:
首先
sourcmod的官網(wǎng)總站導(dǎo)航:www.sourcemod.net
????插件檢索下載:www.sourcemod.net/plugins.php
????sp編譯.smx:www.sourcemod.net/compiler.php
????API定義查詢:sm.alliedmods.net/new-api/
開(kāi)發(fā)工具選擇VSCode,IDE插件SourcePawn,開(kāi)發(fā)語(yǔ)法是C++
sp語(yǔ)言并不是面向?qū)ο蟮恼Z(yǔ)言,甚至不包括語(yǔ)法糖
*注:SourcePawn會(huì)下載相關(guān)庫(kù)文件,同樣可以在serverfiles/csgo/addons/sourcemod/scripting/include中找到同樣的庫(kù)文件
總共71個(gè)inc文件,可以在上文中查到具體用法
還有一些工具來(lái)自SourceMOD的discord
????在線編譯工具(需要自備庫(kù))spider.limetech.io
????反編譯工具h(yuǎn)eadlinedev.xyz/lysis/
????正則表達(dá)式regex101.com
????偏移表查詢asherkin.github.io/vtable/
還有一個(gè)是Hummer的工具集valvedev.info/tools/chrono_index.html
.smx放到sourcemod/plugins????|????.smx是二進(jìn)制文件,是插件本體
.sp通常放在sourcemod/scripting????|????.sp僅為腳本文件,不頂用的
.phrases.txt放在sourcemod/translations????|????translations顧名思義就是翻譯

來(lái)講點(diǎn)得勁的,自瞄插件
先介紹一下來(lái)源和作者:
ExtremeBlackLiu(國(guó)內(nèi)OTC3就是他在更新)
????bbs.keter.pub/space-uid-10.html
DarkGL(一個(gè)和我一樣大的波蘭人但是從事編程已有13年,谷歌翻譯看波蘭語(yǔ)實(shí)在emmm)
????darkgl.pl/o-autorze/
[源碼]?服務(wù)端自瞄插件 SourceMod插件
adminaim.sp:
作者提供了源碼,咱看到首先得去看怎么使用
include,導(dǎo)入庫(kù)
Plugin:myinfo,插件信息
new bool:aimOn[ MAXPLAYERS ],應(yīng)該是新建了一個(gè)開(kāi)關(guān)叫aim on
OnPluginStart,在api文檔中描述:
當(dāng)插件完全初始化并解析所有已知的外部引用時(shí)調(diào)用。這在插件的生命周期中只調(diào)用一次,并與OnPluginEnd()配對(duì)。
如果在此回調(diào)期間拋出任何運(yùn)行時(shí)錯(cuò)誤,則該插件將被標(biāo)記為失敗。
RegAdminCmd,這里應(yīng)該有3個(gè)類(lèi)似指令Reg=regist(注冊(cè)) Cmd=command(指令) Admin管理員,Console控制臺(tái),Server服務(wù)器
那么可以看到注冊(cè)的命令是aim,因此需要管理員在服務(wù)器內(nèi)使用 "!aim"
返回aimMenu函數(shù)
這里看到一個(gè)Action、createMenu、Plugin_Handled可以查詢得到:
還有一個(gè)明顯是創(chuàng)建菜單。我們也查一下用法:
CreateMenu Function
使用默認(rèn)樣式創(chuàng)建新的空菜單。
接下來(lái)createMenu指到一個(gè)代碼塊
接下來(lái)的東西我并非能看明白,但是讀到這里我知道的是:
需要管理員在聊天板里敲????!aim
然后會(huì)有個(gè)默認(rèn)樣式的菜單跳出來(lái)
大概筆記就寫(xiě)到這里,需要更扎實(shí)的C++功底和對(duì)api的熟悉度