此文网路资源转载!!
前言:这篇文章其实我原本不打算写的,因为WIN32下服务器建立的教程实在太多了, 但应樱宁MM的强烈要求,我还是写了。如果你需要转载,请注明出处,尊重他人劳动成果。谢谢!
Ok, Lets get started.
你将需要:
一套正在运行的Win32系统(强烈推荐Win2003,好处是系统稳定和易于远程维护)
一条互联网接入线路
一些基础的Windows服务器优化知识
一些HLDS超级管理方面的内容
硬件要求:
Intel或者更加适宜的AMD处理器,主频至少在1G以上(支持12人),(推荐20人的配置采用2G以上的主频以取得流畅效果)
256M的内存(推荐512M内存)
基于2M速率的Cable/DSL接入(这样大概支持10人),(推荐光纤接入,国内南方首选电信,北方首选网通,双线会更好)
至少500M的磁盘空间(日志及扩展)
注:如果你有专业服务器加光纤接入,那将是最理想的配置
如果你达不到要求,继续读下去已经没有意义..........
步骤一、去steam网站下载hldsupdatetool工具(
http://storefront.steampowered.com/download/hldsupdatetool.exe),以便从Steam服务器下载服务器文件(这样得出的服务器文件是最纯净和稳定的,我的纯净版服务器就是这样制作出来的),如果你不想学习这部分内容,你可去下载我提供的「新迪酷CS1.6纯净服务器」版本,详情请见:
http://219.153.14....sr/bbs/ ... sid=ZN0q6g#pid7255)。
创建.txt文件,将以下写内容进此txt文件,例子:
START/HIGH HldsUpdateTool.exe -command update -game cstrike -dir . 将此txt文件重新命名为HldsUpdate.bat,并和HldsUpdateTool.exe放在一起,运行HldsUpdate.bat。注: 1、以上命令行仅适用于最版hldsupdatetoo.exe;
2、出现Connection Reset, WinSock Error 10054 "Connection reset by peer"时,需要找一个能正常登录Steam的ClientRegistry.blob文件,把它复制到HLServer目录下,再次重试。提供一个每日更新ClientRegistry.blob文件的下载地址:
http://bbs.steamcn.com/viewth...3133&fpage=1。
步骤二、现在你已经拥有HLDS文件,,我们可以创建启动脚本来运行你的CS1.6服务器。例如:
START/HIGH hlds.exe -game cstrike +map de_dust2 +maxplayers 16 +servercfgfile 27016.cfg -port 27016 -insecure +sv_lan 0 □console +sv_region 4
将此内容保存成一个批处理文件,比如27016.bat。
参数解释:
-game cstrike 指定hlds建立的是cstrike的服务器
+map de_dust2 指定服务器开机运行时的第一张地图为de_dust2
+maxplayers 22 指定服务器最大人数为16人
+servercfgfile 27016.cfg 指定使用27016.cfg作为服务器的配置文件,此文件必须放在cstrike目录下。如果不指定,默认为cstrike目录下的server.cfg文件。另外,在cs的lan game中建立的那种初级服务器,使用的是listenserver.cfg
-port 27016 指定服务器的端口为27015。如果不指定,默认为2715
-insecure 关闭vac反作弊功能。vac反作弊打开的话需要先到vac服务器进行won认证。建议关闭VAC认证,使用CD反作弊器,下载地址:
http://fi1.eu.unitedadmins.com/in...ent&content=cd。
+sv_lan 0 指定服务器运行方式为因特模式。1为局域网模式,含义是无法在因特网列表刷新出来,但可在服务器列表中添加,并不是代表无法在因特网上找到服务器。
-console 以控制台模式启动服务器
+sv_region 4 指定服务器区域为亚洲。利于中国玩家第一时间找到你的服务器
步骤三、配置server.cfg文件。如果在启动参数中增加了+servercfgfile x.cfg,那么你就要在cstrike目录下新建立一个x.cfg文件,需要注意的是如果你想要服务器名字的支持中文显示,你必须将其保存成UTF-8格式,负责显示的是乱码。在这里我引用BoeZombie老兄翻译的服务器配置参数说明(另外我在附件中提供了CPL、WCG等组织的比赛服务器配置文件作为参考),内容如下:
经常有朋友向我咨询如何设置server.cfg,或者要我的server.cfg,而我的server.cfg没有中文注释,这次我参照国际比赛服务器server.cfg和很多资料,总结并翻译了一个所谓的标准的比赛服务器server.cfg。
如果您的服务器名称用中文,那么请将server.cfg保存为UTF-8编码。
这个server.cfg并不适合所有网络状况,请您根据自己的实际网络状况修改、增删。
如果您觉得哪里设置不妥或有疑问,本人期待您的批评指正、意见建议!
**************************************************************
//CS1.6 比赛服务器脚本 by Boe
rcon_password "rconpassword"
// OP 密码
// "" 表示没有
hostname "CS1.6比赛专用服务器 #A01"
// 服务器名称
sv_region 4
// 服务器所在区域注册参数
// 255=全球
// 0=美国东部
// 1=美国西部
// 2=南美洲
// 3=欧洲
// 4=亚洲
// 5=澳洲
// 6=中东
// 7=非洲
sv_rcon_minfailures 9999
// 允许输入OP密码 错误次数下限
// 达到下限则封禁对方的IP
sv_rcon_banpenalty 5
// 封禁的时限 单位 分钟
// 0=永久
sv_maxupdaterate 30
// 服务器每秒更新最大频率
// 根据实际网络状况调节
// sv_maxrate / 300 = 要设的值
// 默认=30
// 局域=101
sv_minupdaterate 20
// 服务器每秒更新最小频率
sv_unlag 1
// 玩家延时补偿
// 0=关闭
// 1=开启 (默认)
sv_maxunlag 0.5
// 延时补偿最大值默认 0.5
// 0.5=500毫秒 (默认)
sv_voiceenable 1
// 服务器是否允许麦克风语音通讯
// 0=禁止
// 1=允许 (默认)
sv_unlagsamples 1
// 延时补偿数据包平均采样数量
// 默认=1
sv_unlagpush 0
// 服务器推进延时补偿
// 0=关闭 (默认)
// 1=开启
mp_autokick 0
// 自动踢除不动的玩家
// 0=关闭
// 1=开启 (比赛默认)
mp_autocrosshair 0
// 自动瞄准
// 0=关闭 (默认)
// 1=开启
mp_autoteambalance 0
// 自动平衡双方人数
// 0=关闭 (比赛默认)
// 1=开启
mp_buytime 0.25
// 每回合购买武器装备时间单位分钟
// 比赛默认=0.25
mp_consistency 1
// 防止某些模型被更改
// 0=关闭
// 1=开启 (默认)
mp_c4timer 35
// C4爆炸倒计时单位秒
// 比赛默认=35
mp_decals 300
// 墙壁上的血花弹孔贴图细节数据传送(200-300)
mp_falldamage 1
// 高处落下伤害
// 0=关闭
// 1=开启 (默认)
mp_fadetoblack 0
// 死后黑屏
// 0=关闭 (默认)
// 1=开启
mp_flashlight 1
// 手电筒
// 0=禁止
// 1=允许 (默认)
mp_forcechasecam 2
// 死后跟随
// 0=所有玩家
// 1=仅队友
// 2=仅队友,主视角 (比赛默认)
mp_forcecamera 2
// 死后视角选择
// 0=全部视角
// 1=仅队友,全部视角
// 2=仅队友,主视角 (比赛默认)
mp_footsteps 1
// 脚步声
// 0=关闭
// 1=开启 (默认)
mp_fraglimit 0
//杀人数上限(1~n),超过上限就换地图
// 0=关闭 (默认)
mp_freezetime 7
// 每回合开始冻结时间单位秒
mp_friendlyfire 1
// 友军伤害
// 0=关闭
// 1=开启 (默认)
mp_friendly_grenade_damage 1
// 友军手雷伤害
// 0=关闭
// 1=开启
mp_hostagepenalty 0
// 惩罚人质杀手
// 0=不惩罚 (默认)
// 1~N=人质被杀数量,超过则踢出该玩家
mp_limitteams 10
// 两队人数差异上限
// 超过此上限,新玩家只能当观察员
// 比赛默认=10
sv_logbans 1
// 服务器日志里记录Ban掉玩家的内容
// 0=不记录
// 1=记录
mp_logecho 1
// 将服务器日志反馈到控制台
// 0=关闭
// 1=开启
mp_logdetail 3
// 服务器日志里记录攻击信息
// 0=不记录任何信息
// 1=记录敌人攻击
// 2=记录队友攻击
// 3=记录所有攻击
mp_logfile 1
// 服务器记录日志为文件
// 0=不记录
// 1=记录
mp_logmessages 1
// 服务器日志里记录谈话内容
// 0=不记录
// 1=记录
mp_maxrounds 0
// 回合上限,达到此上限,自动重新载入新地图
// 0=无回合上限 (默认)
mp_playerid 0
// 当准星指向敌人或队友时,显示他们的名字
// 0=显示所有人(比赛默认)
// 1=仅显示队友
// 2=不显示
mp_roundtime 1.75
// 每回合时限单位分钟
mp_timelimit 0
// 地图最大时限,达此时限,自动重新载入新地图
// 0=无时限
mp_tkpunish 0
// 惩罚队友杀手
// 0=关闭 (默认)
// 1=开启
mp_startmoney 800
// 第一回合开始金钱(800~16000)
// 加时赛=10000
mp_winlimit 0
// 一方最大胜利回合数,达到此数量,自动重新载入新地图
// 0=无限制 (默认)
sv_aim 0
// 自动瞄准
// 0=关闭 (默认)
// 1=开启
sv_airaccelerate 10
// 玩家在空中移动的速度
// 默认=10
sv_airmove 1
// 在空中移动&转向
// 0=禁止
// 1=允许(默认)
sv_allowdownload 1
// 客户端下载服务器资源
// 0=禁止
// 1=允许 (默认)
sv_allowupload 1
// 客户端上传自己的喷图
// 0=禁止
// 1=允许 (默认)
sv_alltalk 0
// 警匪通话
// 0=禁止 (默认)
// 1=允许
sv_proxies 1
// HLTV代理
// 0=禁止
// 1=允许 (默认)
sv_cheats 0
// 作弊模式
// 0=关闭 (默认)
// 1=开启
sv_clienttrace 1.0
// 客户端模型的范围框的尺寸
// 默认 1.0
sv_clipmode 0
// 锁定客户端快速模式
// 0=关闭(默认)
// 1=开启
sv_contact
cschina2008@163.com// 服务器构建者的联系邮箱
sv_friction 4
// 地面摩擦力默认 4
// 数值越低,摩擦越小
sv_gravity 800
// 重力默认 800
sv_maxrate 25000
// 服务器最大传输速率 <0-25000>
// (服务器上传带宽 x 125) /服务器设定的最大人数 = 要设的值
// 0=无限制
// 局域=25000
sv_maxspeed 320
// 客户端最大移动速度
sv_minrate 0
// 服务器最小传输速率 <0-25000>
// 0=无限制
sv_restartround 0
// 重新开始第一回合在n秒后
sv_restart 0
// 重新开始游戏在n秒后
// 作用等同于sv_restartround
sv_send_logos 1
// 客户端相互之间传送喷图
// 0=禁止
// 1=允许(同时确保sv_allowdownloads键值为1)
sv_sendvelocity 0
// 服务器混合物理运算,适用于较好配置的服务器
// 0=关闭
// 1=开启
sv_send_resources 1
// 自动向客户端传送地图关联的 & .res文件里包括的资源文件
// 0=关闭
// 1=开启(同时确保sv_allowdownload为1)
sv_stepsize 18
// 玩家的步伐距离
// 默认 18
sv_stopspeed 75
// 玩家停止移动时的速度默认 75
sv_timeout 65
// 客户端连接服务器超时的时限,达到时限则断开连接
sv_voicecodec voice_speex
// 语音通话解码
// voice_miles是HL引擎长期以来用的语音解码(默认),占用带宽较大,为32kbps
// voice_speex是Valve新加入的解码,优于voice_miles,占用带宽较少,为2.4kbps至15.2kbps
sv_voicequality 5
// 客户端语音通话质量(确保sv_voicecodec voice_speex)
// 1=非常差...........占用带宽 2.4 kbps
// 2=差...............占用带宽 6.0 kbps
// 3=中等.............占用带宽 8.0 kbps
// 4=好...............占用带宽 11.2 kbps
// 5=非常清晰.........占用带宽 15.2 kbps
allow_spectators 1
// 观察员模式
// 0=禁止
// 1=允许
decalfrequency 60
// 玩家喷图的时间间隔单位秒
edgefriction 2
// 玩家与玩家、墙壁、物体之间的摩擦
// 默认 2
host_framerate 0
// 与Demo录制有关
// 0<n<1 为慢录
// n=0 为正常(默认)
// n>1 为快录
log on
// 开始记录日至
pausable 0
// 客户端暂停游戏
// 0=禁止
// 1=允许
mapcyclefile mapcycle.txt
// 地图循环列表所在的.txt文件
// *.txt = cstrike\*.txt文件
花絮一:
在这次整理和翻译过程中,有几个参数的含义比较麻烦,因为要让大家明白这些参数的意义,我测试了多次,才弄清楚:
例如:mp_forcechasecam 、mp_forcecamera这两个参数,比赛的时候它们的键值均为2 。
而网上大多都是对mp_forcechasecam 的解释:
死掉的人:0自由模式、1只能跟着自己队友走动、2尸体视线留在原地。
后来我发现,这个解释也是翻译的国外的,但是CS1.5,甚至更早的版本了,所以这个解释一直沿用到了CS1.6。
但经过我测试,当mp_forcechasecam键值为2时,并不是「尸体视线留在原地」,而是主视角+跟随队友。
那么既然mp_forcechasecam键值为2时是主视角+跟随队友,为什么比赛时还要将mp_forcecamera键值设为2呢?
经过我的多次测试得出了大家看到的解释:
mp_forcechasecam 2
// 死后跟随
// 0=所有玩家
// 1=仅队友
// 2=仅队友,主视角
mp_forcecamera 2
// 死后视角选择
// 0=全部视角
// 1=仅队友,全部视角
// 2=仅队友,主视角
下面我将测试过程给大家写出来,为了简化和便于理解,我下面的描述将mp_forcechasecam 用「A」代替,mp_forcecamera用「B」代替:
当A=0,B=0时,效果=全部视角+所有活人;
当A=0,B=1时,效果=全部视角+本队活人;
当A=0,B=2时,效果=第一视角+本队活人;
当A=1,B=0时,效果=全部视角+本队活人;
当A=1,B=1时,效果=全部视角+本队活人;
当A=1,B=2时,效果=第一视角+本队活人;
当A=2,B=0时,效果=第一视角+本队活人;
当A=2,B=1时,效果=第一视角+本队活人;
当A=2,B=2时,效果=第一视角+本队活人;
现在很容易看出,其实只要A或B其中一个键值为2,那么就是[第一视角+本队活人],比赛服务器则是为了确保万无一失,而将两个参数的键值都设为了2。
****************************************************************
花絮二:
还有值得一说的的参数,就是:
sv_voicecodec voice_speex 语音通话解码选择,voice_miles是HL引擎长期以来用的语音解码(默认),占用带宽较大,为32kbps,而voice_speex是Valve新加入的解码,优于voice_miles,占用带宽较少,为2.4kbps至15.2kbps 。
大家仔细看看自己的CS(CZ)客户端、服务器端的主目录,就会发现voice_miles.dll和voice_speex.dll文件,说到speex解码,我想用过TeamSpeak2的朋友可能都记得,TS2采用多种语音解码,其中就包括speex解码,而且在TS2里,我认为通话效果最好的就是speex解码!而且带宽有多种选择!
而CS默认是用voice_miles,根据国外资料表明,该解码占用带宽较大,不被推荐。所以这次的server.cfg整理过程中,我向大家推荐speex解码。
sv_voicecodec voice_speex
// 语音通话解码
// voice_miles是HL引擎长期以来用的语音解码(默认),占用带宽较大,为32kbps
// voice_speex是Valve新加入的解码,优于voice_miles,占用带宽较少,为2.4kbps至15.2kbps
sv_voicequality 5
// 客户端语音通话质量(确保sv_voicecodec voice_speex)
// 1=非常差...........占用带宽 2.4 kbps
// 2=差...............占用带宽 6.0 kbps
// 3=中等.............占用带宽 8.0 kbps
// 4=好...............占用带宽 11.2 kbps
// 5=非常清晰.........占用带宽 15.2 kbps
步骤四、配置motd.txt文件。此文件的作用是进入服务器时,所显示的欢迎窗口的内容,这是一个HTML格式的文件,如果你不懂HTML语法,建议你不要在它上面花费精力,你可用我附件中文件自行修改。当然如果你想要你服务器凸显个性,你就要好好去学习一下HTML语法了
步骤五、配置mapcycle.txt文件。mapcycle.txt是地图文件循环的顺序文件,里面写的都是地图文件名,不带后缀,如cs_747.bsp,只取cs_747。地图在Hlserver\cstrike\maps目录下,将你想循环的地图挑出来,然后将文件名按上面所说的规则输入mapcycle.txt中,每个地图之间用硬回车隔开。加入的新地图不仅要把.bsp文件拷到Hlserver\cstrike\maps目录下,也要在mapcycle.txt里面加入新地图的名称,切记!
步骤六、破解你的HLDS服务器为免steam认证。附件有下载,下载破解文件并覆盖到HLDS的根目录即可。
步骤七、加载CD插件。,如果不明白的可发帖咨询我。其它插件(比如服务器加速插件、AMXX、AMX等).
步骤八、启动服务器。执行你建立的服务器启动脚本27016.bat文件即可。
至此,一个简单的、基本的CS服务器建立完成。建议再去学习我的另外一篇文章《CS1.6服务器网络参数配置说明(如何当好一个合格的OP)》。