[轉載][心得]CS:Source 伺服器架設教學 (Win Dedicated Server) 龍之上卷

CS:Source 伺服器架設教學 (Win Dedicated Server) 龍之上卷

by A+ | MiNiTotor^o^ (本文歡迎自由轉貼及複製)


一. 前言:

從 HL2 發行到現在也已經快半年了, 但台灣的 CS:Source 伺服器仍然少的可憐
筆者認為最主要的原因是沒有人去推廣, 而 CS 1.6 的老玩家們也不願意為了
CS:Source 去升級自己現有的配備, 使得 CS:Source 在這方面似乎呈現斷層狀態
為了推廣台灣的 CS:Source, 因此這篇伺服器架設教學文件終於誕生
CS:Source 伺服器的架設和 CS 1.6 是大同小異, 差別只在於一些 cvar 和 plugin
的放置方式有了些改變, 這些東西在本文中都會詳細的提及


二. 如何安裝及啟動 CS:Source 伺服器:

1.首先下載 hldsupdatetool.exe , 這是 HldsUpdateTool 安裝程式
 可以從 http://steampowered.com/download/hldsupdatetool.exe
 下載完畢後馬上進行安裝, 本文件是假設裝在 d:\hlserver 目錄
 安裝完畢後請執行一次 HldsUpdateTool.exe 以取得最新版本

2.安裝好 HldsUpdateTool.exe 之後, 若沒有 steam 帳號, 請開啟你的 steam 馬上申請
 一個帳號, 筆者建議伺服器用的帳號應該另外申請, 不要與自己的遊戲帳號共用
 若已經有 steam 帳號, 那麼我們開始安裝 CS:Source 伺服器吧 :D

3.為了以後的更新方便, 建議將以下內容寫到一個 .bat 檔, 筆者是取名為 update.bat
 而這個檔案就放在 d:\hlserver 目錄內, 可以放一個捷徑至桌面
 檔案內容如下:
=======================
d:
cd \hlserver
.\hldsupdatetool -command update -game "Counter-Strike Source" -dir . -username -password
=======================
 我們來解說一下這行命令的各參數的意義, -command 後面可以搭配 upadte 和 list
 list 參數可以列出所有可以架設的遊戲名稱, update 就是安裝及更新遊戲
 -game 是指定要架設的遊戲, 名稱可以由 -command list 查出來
 -dir 是要安裝的該遊戲的所在目錄, 我們就將它裝在 HldsupdateTool 同目錄
 -username 是指要登入的帳號名稱, -password 則是密碼
 如此一來只要執行 update.bat 就可以幫你的伺服器作更新檢查
 當你第一次執行時, HldsUpdateTool 會從網路上將伺服器需要使用的一些檔案
 下載到你的硬碟, 因此會需要很長的一段等待時間, 所需空間大約是 800MB

4.經過好幾個小時的等待, 突然發現 HldsUpdateTool 已經停止下載了!!
 嘿嘿... 終於讓我們等到了啊... 該來看看跑起來是怎樣的情形了...
 啟動 CS:Source 的方法, 同樣的我們在 d:\hlserver 目錄下建立
 一個 start.bat 檔案, 檔案內容如下:
=======================
d:
cd \hlserver
.\srcds -console -game cstrike +maxplayers 24 +map de_dust2 +ip <你的伺服器IP> -port 27015
=======================
 上面 -console 參數是讓 srcds 執行後只有 console 指令模式, 而不會跑出圖形
 設定界面這樣的好處是不必每次啟動伺服器時都重新設定一些伺服器參數, 另外也
 比較節省記憶體 -game 參數是指定啟動的遊戲, 這裡要注意一下後面的遊戲名稱是
 cstrike, 而不是 "Counter-Strike Source", 因為在 d:\hlserver 目錄裡
 CS:Source 的目錄就叫作 cstrike, 所以這裡的遊戲名稱就使用 cstrike
 +maxplayers 是設定伺服器最大的玩家數, +map 是指定伺服器啟動後的第一張地圖
 +ip 後面要指定你的伺服器的網路 IP, 在 CS:Source 這個 +IP 參數一定要設定
 因為這牽扯到 rcon_address 和 rcon_password 的使用, -port 參數可用可不用
 如果未指定, 那麼預設 port 是 27015 , 但如果伺服器主機同時要開兩個以上的
 CS:Source Server, 那麼就可以分別指定不同的 port

5.將伺服器啟動後, 快開啟你的 CS:Source , 將你的伺服器用新增的方式加到我的最愛
裡, 然後再連連看, 如果沒意外的話, 恭喜你已經成功的架起一個基本的 CS:Source
 伺服器了, 但是怎麼伺服器名稱看起來很鳥... 這個別急, 我們後面再慢慢講解伺服
 器設定的部份


三. 伺服器相關設定

1.CS:Source 伺服器的設定檔位置和 CS 1.x 有所不同, CS:Source 的設定檔是放於
 d:\hlserver\cstrike\cfg 目錄內, 檔名一樣是 server.cfg
 
2.server.cfg 的設定內容, 以下是筆者自己的伺服器設定
 (請勿亂試 rcon passowrd, 若被 ban 掉後果自負 XD)
===================================================
hostname "[TW][PigC1] -= 終極殺陣X =- " // 伺服器名稱
rcon_password "ilovecss"        // rcon 密碼設定
sv_password ""             // 進入伺服器所需的密碼設定, 沒設即不需要密碼
sv_cheats 0               // 伺服器 cheat 功能 (0/1 - 關/開)
sv_maxrate 0              // 伺服器最大 rate
sv_minrate 0              // 伺服器最小 rate
sv_allowdownload 1           // 允許下載檔案 (如: 新地圖)
sv_allowupload 1            // 允許上傳檔案
sv_gravity 800             // 地心引力設定值, 預設 800
sv_alltalk 0              // mic 是否讓所有人聽到的設定 (0/1 - 關/開)
sv_region 4              // 設定伺服器的所在區域, 4 為亞洲
sv_voiceenable 1            // 是否允許玩家使用 mic (0/1 - 關/開)
sv_lan 0                // 伺服器是否為 LAN Server (0/1 - 關/開)
sv_downloadurl "http://1.2.3.4/~totoro/css/cstrike/"
                    // 這是設定當伺服器放有新地圖時
                    // 玩家可以不直接從伺服器下載地圖
                    // 而可以介由網站的網路協定來下載
                    // 這樣的好處是可以加快下載的速度
                    // 若設定為 "" 則是使用伺服器的方式下載
tv_enable 1              // 開啟 Source TV (0/1 - 關/開)

decalfrequency 60           // logo 的顯示時間 (單位: 秒)
mp_playerid 1             // 是否顯示敵人及隊友名字, 1:不顯示敵人 2:皆不顯示
mp_flashlight 1            // 是否允許手電筒 (0/1 - 關/開)
mp_allowspectators 0          // 是否允許觀察者 (0/1 - 關/開)
mp_footsteps 1             // 是否允許腳步聲 (0/1 - 關/開)
mp_falldamage 1            // 從空中掉落地面是否造成傷害 (0/1 - 關/開)
mp_autokick 1             // 是否將閒置及TKer自動踢出伺服器 (0/1 - 關/開)
mp_timelimit 30            // 地圖的換圖時間設定 (單位: 秒, 0 無限制)
mp_winlimit 15             // 某一邊贏得 15 回合後換地圖 (0 無限制)
mp_fraglimit 0             // 某玩家獲得多少 frag 後換地圖 (0 無限制)
mp_maxrounds 0             // 所有回合數達到多少後換地圖 (0 無限制)
mp_freezetime 3            // 回合開始前的凍結時間 (單位: 秒, 0 為無凍結時間)
mp_roundtime 3             // 回合時間 (單位: 分鐘)
mp_buytime 0.25            // 購買裝備時間 (單位: 分鐘) 0.25 X 60 = 15 秒
mp_c4timer 35             // C4 安裝後所需的爆炸時間 (單位: 秒)
mp_forcecamera 1            // 玩家死後是否只能看到同隊畫面 (0/1 - 關/開)
mp_fadetoblack 0            // 玩家死後畫面是否為黑幕 (0/1 - 關/開)
mp_friendlyfire 1           // 玩是否可以傷害到隊友 (0/1 - 關/開)
mp_tkpunish 0             // 是否開啟 TK 懲罰 (0/1 - 關/開)
mp_autoteambalance 1          // 是否啟動自動隊伍平衡功能 (0/1 - 關/開)
mp_limitteams 1            // 隊伍人數最大可相差幾人
mp_hostagepenalty 3         // 殺幾個人質後將被踢出伺服器, 搭配 mp_autokick 使用

log 1                 // 啟動伺服器 log 功能
sv_logbans 1              // 將伺服器的 ban 人資訊記錄到 log 檔中
mp_logdetail 0             // 是否啟用詳細 log 功能 (0/1 - 關/開)
                    // 啟用後會將玩家的每一個開槍資訊都記錄下來
                    // log 檔案會變超大

exec banned_user.cfg          // 執行一次 ID ban list 設定檔
exec banned_ip.cfg           // 執行一次 IP ban list 設定檔
=================================================== 

3.使用 rcon 密碼登入伺服器及使用指令
 rcon 在 CS:Source 的登入方法和 CS 1.x 也有不相同的地方
 先叫出你的 CS:Source 的 console, 登入指令如下:
  rcon_password "ilovecss"
  rcon_address 211.78.160.103:27015
 以上兩行指令先後順序沒有差別, 但如果其中一個指令打錯了就無法使用 rcon 權限 :)
 這裡的 rcon_address 所使用到的 ip:port 就是在啟動伺服器時所給予的 +ip -port
 參數, 所以在啟動伺服器時 ip 和 port 一定要設定, 否則 rcon 將無法使用
 另外 rcon 嘗試太多次錯誤, 將會被伺服器 ban IP, 這點請特別注意
 將兩行指令打完後, 首先要確定一下是否有成功登入, 可以打以下指令
  rcon status
 如果你看到 console 畫面有出現玩家的資訊, 那就是登入成功了
 如果要踢掉一個玩家, 指令格式如下:
  rcon kick #1232
 有沒有發現一件事, 在指令的前面都有個 rcon , 這就是使用 rcon 去執行伺服器端的
 方法, kick 指令後面接的是玩家的代號, 這裡指的代號是伺服器給予的流水編號
 而不是玩家的 Steam ID, 這一點一定要搞清楚, 否則會踢不掉人
 如果你要使用 Steam ID 去踢除一個玩家, 並且送他一個訊息, 可以使用下面指令
  rcon kickid STEAM_0:1_12345678 "I hate you @O@"
 這樣子可以將 Steam ID 為 STEAM_0:1_12345678 的玩家踢出伺服器
 在他離開後畫面上會有個小對話框, 上面會顯示: I hate you @O@
 如果你要 ban 掉一個玩家 1 小時的時間, 指令格式如下:
  rcon banid 3600 STEAM_0:1_12345678 kick
  rcon writeid
 這樣該玩家就會被伺服器 ban 3600 秒, 也就是 1 小時, 若是改成 0 , 那就是永久
 ban 掉, 指令最後面有個 kick, 就是當他被 ban 之後也順便一起踢掉, 若沒有加的
 話則不會被踢, 通常 banid 指令要搭配 writeid 指令一起用, writeid 是將
 ban list 的資訊, 寫到 d:\hlserver\cstrike\cfg\banned_user.cfg 檔案裡面
 如果你要 ban 掉一個 IP, 或是一個子網路的 IP, 指令如下:
  rcon addip 0 111.222.333.0
  rcon writeip
 上面的 0 相同於 banid 的時間, 後面則是 IP 部份, 111.222.333.0 就是將
 111.222.333.1 ~ 111.222.333.254 通通 ban 掉
 在 addip 指令下完之後, 同樣的要記得將 IP ban list 寫入檔案
 該檔案是 d:\hlserver\cstrike\cfg\banned_ip.cfg
 既然學會 ban 人, 那還有一件更重要的事要學, 就是解 ban XD, 解 ID 的方法是
  rcon removeid STEAM_0:1_12345678
  rcon writeid
 解 IP 的方法是
  rcon removeip 111.222.333.000
  rcon writeip
 以上是簡單的踢人, ban 人的指令
 此外 rcon 指令也可以用來更改伺服器的那些設定值
 比如說地圖時間想改為 1 小時, 那麼可以下這樣的指令
  rcon mp_timelimit 60
 如果要換地圖的話, 指令是 changelevel <地圖名稱>
 以上這些基本指令的講解就先到這裡, 若要更多更詳細的文件可以問 google 大神
 只要問它: cs + 指令
 就可以找到一堆相關文件了
 
4.設定伺服器的歡迎畫面
 在進入每個伺服器總會有個畫面顯示該伺服器的一些規則或資訊的內容
 這個設定檔存放於 d:\hlserver\cstrike\motd.txt
 你可將此檔案改檔名為 motd.htm , 然後再用 frontpage 或 dreamweaver 等網頁
 編輯軟體去修改裡面的內容, 改好後再將檔名回復成 motd.txt
 但是要注意的是有些 html 標籤似乎會讓畫面顯示不出來
 內容盡量簡單明瞭, 而且不要太長, motd.txt 檔案在顯示時有長度的限制
 若內容太長也會造成無法顯示
 
5.設定伺服器地圖列表
 該檔案存放於 d:\hlserver\cstrike\mapcycle.txt
 裡面的地圖內容就是伺服器所跑的地圖順序
 一般而言你只要將你要新增的地圖放進 d:\hlserver\cstrike\maps 之後
 並且在 mapcycle.txt 裡加入你的地圖名稱, 再重新啟動伺服器
 那麼新加入的地圖就會生效, 並且被伺服器讀取到
 筆者在這裡教大家一個不必重新啟動伺服器的方法
 每當更新過 mapcycle.txt 檔後, 在伺服器的 console 下執行
  mapcyclefile ""
  mapcyclefile "mapcycle.txt"
 如此一來伺服器就會將 mapcycle.txt 重新載入一次
 
6.Source TV 的使用及設定
 在 CS:Source 中的 HLTV 功能就叫作 Source TV
 首先先說說該怎麼啟用它, 在 CS 1.x 中, HLTV 是必須另外執行一支程式來跑 HLTV
 但在 CS:Source 中則不必這麼麻煩了, 它是附屬在伺服器裡面的
 啟動方式是在伺服器啟動之後, 將 tv_enable 設為 1, 然後再換一次地圖就會生效
 如果成功之後, 你會看到伺服器裡有一個叫 "SrcTV" 的 "玩家" 一直躲在觀察者 :-)
 Source TV 一樣可以錄 Demo, 錄出來的 Demo 是可以切換到所有玩家的視角的
 Demo 檔案會存放於伺服器端, 位於 d:\hlserver\cstrike 裡面
 Source TV 除了可以錄 Demo 之外, 還提供讓其他人連進 Scource TV 去觀看伺服器
 的戰況, 連線時的架構看起來是這樣的

  觀戰者們 <------> Source TV SV <-----------------------> CS:Source SV
       連線           啟動後加入伺服器觀察者
 
 下面筆者就列出 Source TV 有那些指令可以使用
==============================
tv_autorecord    // 於每次換地圖之後就自動錄 Demo
tv_delay       // Source TV 在送畫面給其他觀看者的延遲時間 (單位: 秒, 預設 10 秒)
tv_maxclients    // 允許最大觀看者人數 (預設 128)
tv_maxrate      // 最大的網路頻寬傳輸, 0 為不限制
tv_name       // Source TV 在伺服器中顯示出來的名稱
tv_password     // 設定連進 Source TV 所需要的密碼
tv_port       // 設定 Source TV 所使用的 port, 預設是 27020
tv_record      // 錄製 Demo, 格式: tv_record
tv_relay       // 連線到其他 Source TV Server, 並傳送該 Server 的畫面給觀看者
tv_relaypassword   // 連到其他 Source TV Server 所需要的密碼
tv_retry       // 連到其他 Source TV Server 的重連次數設定
tv_status      // 顯示目前 Source TV 的狀態及人數
tv_stop       // 停止 Source TV
tv_stoprecord    // 停止 Demo 錄製
==============================
 其他未知其用途的指令筆者就先不介紹了
 當 Source TV 啟動後也設定好了, 那該如何連到 Source TV Server 觀看呢?
 Source TV 在 Steam 的伺服器列表基本上筆者沒看到它們被刷出來過
 所以連線的方式只有一個, 就是在 console 下打入像這樣的指令
  connect 211.78.160.103:27020
 這樣就能夠連進 Source TV Server 了
 
四. 結語:

 在龍之上卷簡單的介紹了一個伺服器從無到有的架設及設定
 只要跟隨以上的步驟, 一個新的伺服器就可以誕生了 :)
 在龍之下卷, 筆者將介紹 CS:Source 伺服器的外掛安裝及使用方式
 筆者會以曾經參與國外某 Plugin 的測式心得和功能來作詳細解說
 如果有人願意撰寫 CS:Source 的 Plugin, 筆者也願意跟他分享經驗
 但是前提必須具備有 C/C++ 程式語言的基礎
 那麼咱們下次再見了 :->


--
※ Origin: 巴哈姆特 ◆ From: 211-76-46-83.cm.ubbn.net
2005-05-02 8:44 發佈
好文居然沒人推,超經典的遊戲耶,大家應該來回味一下~
Redick wrote:
CS:Source ...(恕刪)
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?