5.23更新
目录
重要更新
- 新地图: 由Hezus制作的Search ‘n Destroy(找到并毁掉)
- 在控制台CVAR自动填充里将会以
***PROTECTED***
取代敏感信息以防敏感信息暴露(列如rcon_password) - 修复了在更新完视频设置以后服务器浏览器不能立刻显示任何找到的结果的问题(更新视频设置后不在需要游戏重启)
- RPG火箭现在呗标记为不与友军发生碰撞(列如 玩家发射RPG的时候不再需要担心会因为有个小憨批挡在你前面把你炸死)
已知问题
以下问题是我们在版本发布时候已经知道的
- NPC的尸体可能会在他们播放死亡动画的时候偶然变为固体一会儿会儿(在死亡动画播放完毕以后将会变回非固体)
- 科学家和医疗兵不会正确的完成他们的复活动画:他们可以正确的分辨出谁需要复活,然后开始复活,但是复活动画永远也不会结束
- 当玩家被任何人复活的时候同时观察他们,他们将会以一个错误的视角重生
代码
游戏运行库
- 在计分板里添加了护甲信息,将会和血量有同样的颜色(不适用时将显示N/A,列如th系列图)
- 将自动决定玩家应该以蹲伏姿态还是站立姿态重生,当玩家在低天花版场景重生的时候(列如通风管里),玩家将会被以蹲伏姿态重生
- 当受到损伤或者修复的适合,可破坏实体将会检查自己与攻击者的关系
- 带光标的摄像头实体(一般是trigger_camera,也可以直接发送NetworkMessage启用)调整
- 执行鼠标Action的最小间隔设置为了0.01(10毫秒),以防止在按住鼠标按键的同时观看一个启用了光标功能的摄像头导致的命令数据爆炸
- 为制图者添加了实体键值
mouse_digital_action_reset
来改变两次鼠标Action的等待/重置时间,他的最小值依然是0.01(10毫秒) - 如果Action为空或者已经退出了摄像头时不再检查或者设置数字Action
- 添加键值
mouse_block_drag_*_*
: 将允许制图者屏蔽重复的Action,如鼠标按钮被按下的适合同时移动鼠标(列如只需要按住鼠标键并且稍微抖一下,就可以不断触发门的开关) - 鼠标Action指的是鼠标 单击、双击和上下滚轮动作,并不适用于移动和拖动这类模拟动作
- 一些子弹抛射物将使用新模型
- 客户端命令
trigger
现在有了服务端同等的指令s_trigger
,可以通过RCON或者在服务器控制台直接打来使用(服务端的版本不能传递激活的实体给目标) - 客户端命令
mapinfo
将显示地图在配置文件里允许编辑的所有CVAR值(有助于玩家了解高难服的配置) - 客户端命令
myinfo
和thatinfo
将会输出现在选择的玩家使用的模型 - 客户端命令
myinfo
和thatinfo
将可以在sv_cheats
关闭以后对玩家使用,虽然只会输出出基本的数据 - CVAR
hud_fastswitch 1
现在将会使游戏游戏立即切换上一把/下一把武器 - CVAR
mp_keep_globalstate
将不再导致玩家和服务器的引擎内存分配失败 - CVAR
mp_nextmap_ignore_mapcfg
启用的时候(默认启用)将不再允许地图配置使用巨他妈远古时期的遗留配置选项nextmap
(制图者就tm该几十年前统统用trigger_changelevel
换图!) - CVAR
mp_npckill
更新以保障支持所有阵营- 0:NPC将会无视来着中立或者友军的伤害
- 1:NPC将绝不会原谅任何损害我们之间关系的行为
- 2:NPC将会无视来自盟友而且攻击者是玩家或者同类的伤害
- CVARs
cl_mirror_disabled
,cl_monitor_disabled
和cl_portal_disabled
启用时将绘制地图原来的纹理而不是不可见的大空洞 - CVARs
mp_allowmonsterinfo
现在可以设置到2,来只显示友军的信息 - 当客户端的HUD初始化时确保服务器的名字被发送到客户端(计分榜上)
- 实体
env_render
现在支持!activator
和!caller
- 实体
env_sentence
标记(spawnflag)为1来选择只针对触发者(Activator Only)
- 实体
func_tank
将会正确使用他的v_angle
来决定静止角度 - 实体
func_pushalbe
将会被玩家推的更稳当(不会再像用冰做的似的站在顶部会乱滑) - 实体
game_player_counter
现在能被在任何时候触发读取玩家数目,而且会储存这个数值在dmg
键值里以供其他实体(trigger_condition
)或者脚本读取 - 实体
game_player_counter
现在将会询问引擎现在有几个玩家而不是他自己去数 - 实体
global_light_control
现在能指定并改变可开关的灯光实体的样式 - 实体
global_light_control
将会由target_entity
键值来搜寻灯光实体(如果找到灯光实体他将改变灯光实体的样式) - 实体
item_inventory
键值target_on_cant_activate_*
将不再意味着有on_
(FGD和地图上的更正) - 实体
item_inventory
当被直接触发的时候将不再执行严格的视线检查(用于被地图触发或者使用trigger
作弊指令调试的时候) - 实体
item_inventory
如果玩家持有的时候掉线将被正确的送回原处 - 实体
item_inventory
将可以由trigger_setorigin
更新他的重生位置 - 实体
path_waypoint
添加丢失的特性Wait Master
如果等待属主确实是在等path_waypoint
,NPC将会一直等在这里直到属主被触发 - 实体
trigger_change_class
订正了设置为none
时会无意间变为object default
的问题 - 实体
trigger_change_class
订正了使用TOGGLE类型的时候会把m_fOverrideClass
关掉而不是重写的问题 - 实体
trigger_changesky
现在能在改变天空颜色的同时改变天空色调(不改就留空) - 实体
trigger_script
被标记为Start On
的时候将会自动触发(本质为自己触发自己) - 实体服务器记录文字(包括玩家状态)现在将会使用阵营标签来分类
- 修复了在HUD数字显示时候引发的崩溃
- 修复了退出游戏以后SteamAPI没有退出引发的Steam被锁住问题
- 修复了玩家可以通过退出游戏重新连接来逃过投票踢出/封禁的问题
- 修复了玩家可以在投票正在进行的时候发起一个新的投票的问题
- 修复了在允许将inventory带入下一张地图的地图换图时,可以把黄金双持乌兹带入下一张图的问题(哪怕下一张图不允许使用乌兹)
- 修复了媒体播放器只有一首歌并且随机播放启动时导致的无限循环
- 修复了十字弩弩箭会在爆炸前从固体实体上跳开的问题
- 修复了实体通过
create
作弊指令生成时,如果玩家的俯视角度大于0将会有错误的角度的问题 - 修复了全局实体在切换地图时不会被正确保留和丢弃的问题
- 修复了玩家使用
+use
指令时候导致玩家的speed
键值与实际速度不一致的问题,现在按住+use
,将不会再限制玩家的速度(+use
和+speed
指令现在共享cl_movespeed
CVAR) - 修复了当玩家被直接传送时玩家可视集(PVS)不会被正确清理的问题,之前这个问题也导致了
Too many entities in visible packet list.
警告 - 修复了玩家之间的关系为友好阵营时不总是友好的问题(有些时候会表现为中立)
- 修复了在有自定义枪火特效的时候墙壁错误会盖住裁剪的问题(现在枪火将不会伸进墙里)
- 函数
CheatsAllowed()
现在将会有额外的参数来设置在作弊被拒绝时会不会向玩家输出一条消息(如果插件需要检查作弊是否被允许或者记录’调皮’的玩家的时候会非常有用,因为这个时候没有直接作弊) - MAX_WEAPON_POSITIONS 从20提升到25
- 踢出玩家的内部函数现在将会使用int ID来取代名字,以确保名字模糊的玩家不会逃脱惩罚
- 物品实体现在可以使用none/toss/fly和fly_missle移动类型
- 物品实体现在可以使用none/trigger/bbox碰撞类型(使用前必须设置hull size)
- 迫击炮伤害现在可以由
sk_mortar
指定而不是硬编码的200 - 新的客户端命令
hostinfo
来显示关于服务器的一些信息(一些是从mapinfo
移来的)- 服务器名字
- 是否为私人服务器(有密码吗)
- 是否是专用服务器,如否显示哪个玩家是主机
- 服务器管理员联系方式(CVAR
sv_contact
指定) - 最大玩家数
- 现在的地图名称
- 下一张地图名称
- 是否为作弊模式
- 实体总数
- 预加载的模型数
- 为缺失的X-Race电蚂蚁变种添加新的阵营,用于蝎子怪和电蚂蚁部队(ID 15)
- 为玩家队伍编号1-4,添加新阵营(ID 16-19)
- 标记为蓝,红,黄,绿
- 玩家加入队伍后将在计分板以及聊天栏里上以不同颜色显示他们的名字
- 玩家使用队伍聊天
messagemode2
将会对其他队伍或者非盟友的玩家保密 - 玩家将不会被允许看见其他队伍的生命值护甲值和死亡情况(包括计分板和鼠标指向他们的时候)
- 队伍阵营将会敌对每一个其他阵营,而剩余的每一个阵营都不喜欢队伍阵营
- 新的客户端命令
mapname
来显示目前的地图名称 - 新的客户端命令
nextmap
来显示下一张地图的名称(基于CVARmp_nextmap_cycle
) - 新的客户端命令
playerinfo
来显示关于玩家的一些信息(第一个参数为空则指你自己,否则填玩家的数字id或者steamid) - 新的effects flag
EF_NOSHADOW
- 新的edict flgg
EFLAG_IGNOREGRAVITY
来防止实体被重力影响(包括trigger_gravity
)- 外星指挥官(小头儿子)的粒子球将会有这个属性
- 蜜蜂枪的蜜蜂,包括玩家的和NPC的
- 新的edict flag
EFLAG_PROJECTILE
来取消与友军的碰撞- RPG火箭弹将拥有这个属性,玩家再也不用担心开炮的时候有傻逼跑到他们前面导致自己瞬间爆炸
- 新的地图CVAR
mp_allowplayerinfo
如果玩家的HUD信息允许的话,在躲猫猫模式里应该会非常有用,嘿嘿嘿 - 新的服务器CVAR
mp_nextmap_parted_mapcfg_limit
将允许服务器声明当mp_nextmap_ignore_mapcfg
”处于禁用状态时,忽略映射之前声明允许进行多少个并发
nextmap`调用(设置为-1可禁用,也可设置为默认值,或设置为0表示不允许分离) - 玩家输入现在被限制到-255与255之间(键盘按键将会由255到-255依次设置,模拟按键(指手柄)将会等比缩放. 列如速度按键将会一分为二)
- 玩家渲染键值(mode/amount/colour/fx)被多种实体重设时会将新值复制到他们原来(或者
标准的
)渲染属性上去,所以实体效果现在将会在重新选然的时候知道他们(列如物品,minigun速度调整) - 玩家服务器记录状态将会以-1生命来记录死亡的玩家
- 玩家服务器记录状态将会显示护甲值,并且以-1来显示无HEV防护服或者关闭了护甲的玩家
- 重新考虑如何定义玩家的最高速度,放弃使用cl_forwardspeed/cl_sidespeed之类的CVAR(目前这些CVAR已被移除)
- 移除了当
developer 2
时由func_tank
和monster_apache
而来的"can’t assess"消息 - 移除了没有自定义名称的NPC生成时自带的"Friendly"前缀(不再需要了)
- 移除了许多冗余的skill设置,但是当skill等级设置为2以上时依然可以阅读
- 移除了NPC和武器冗余的skill CVAR
- 武器现在被玩家捡起时将重设渲染模式和渲染值(将修复玩家捡起武器后再丢掉导致的逐渐变透明问题)
- 当丢包开始时,将在收到丢包消息之前清除最新的HUD消息,否则会因为高延迟导致客户端仍然可以缓慢地看到历史消息
- 当丢包开始时,将会重新更新每个人的服务器名称,下一张地图和计分榜(估计这些消息已经更新了)
AngelScripts
- 添加
SetClassificationSpecial()
来修复由于游戏使用的SetClassification()
默认参数注册时没有被处理而导致的崩溃问题 - CString类现在拥有C++的
strtok()
函数的镜像函数Tokenize()
- 线程安全
- 被设计用于
while
循环 - 每一次调用
Tokenize()
都会返回字符串的下一个char - 如果没有找到分隔符,则返回整个字符串作为唯一标记
- 一旦返回最后一个令牌常量,会返回常量
NO_MORE_TOKENS
,并将最后一个令牌的位置重置为零
- 修复了
CBasePlayer
类中的方法GetWeaponsBlocked()
的文档,他确实是有一个bool返回值的 - 修复了
SetClassification()
导致的崩溃 - 修复了由于语言行为变化导致的AS get/set方法的倒退
- 修复了玩家
ShouldGibMonster()
方法的逻辑错误 - 函数
IRelationship()
有第二个参数bool fIgnoreNoTarget
,默认为false,该参数将允许检查拥有不可被标为目标标记的实体,之前此类实体将会永远放回中立(该参数内部用于治疗,修理,复活,计分榜变化等等) - 新的CVAR
plugin_list_file_persistent
来允许服务器决定是否在切换地图时重载插件(默认开启) - 玩家变量
m_flMaxSpeed
已经被移除- 直接使用
pev.maxspeed
设置速度将不在起作用 - 函数
SetMaxSpeed()
和GetMaxSpeed()
将用来设置/获取玩家的最大速度 - 函数
SetMaxSpeedOverride()
和GetMaxSpeedOverride()
将用来临时设置/获取玩家的最大速度,当设置为-1时将移除这个临时设置
- 直接使用
- 服务器插件现在可以在地图上
被包括
或者被排除
(included/excluded), 可以基于地图在插件列表里(default_plugins.txt)使用键值来逐个插件的排除地图- CVAR
plugin_list_file_persistent
必须被设置为关闭非子as_reloadplugins
命令将会被服务器调用 - 键值
maps_included
来设置只在那些地图上使用这个插件 - 键值
maps_excluded
来设置排除那些地图来使用这个插件 - 多个地图使用
;
分割,列如"svencoop1;osprey;stadium4" - 不要同时使用
maps_included
和maps_excluded
键值,不会崩溃,只是会不起作用
- CVAR
- 更新AngelScripts到2.34.0
- 语音封禁现在已经由有序运行库桥接而不是直接从引擎调用,以此来移除脚本和游戏运行库同时调用导致的冲突
引擎
- 添加客户端引擎功能来改变天空颜色
- CVAR
mapchangecfgfile
和相关的功能已经被移除 - 数据报溢出和消息溢出警告现在显示它们所引用的客户端和用户ID
- 不再在自动填充里暴露受保护的CVAR值,将会以
***PROTECTED***
替代- 保护敏感的CVAR,列如在直播里保护
password
和rcon_password
- 单独提交这些CVAR将仍然在控制台输出里显示这些值,列如单独提交
rcon_password
并且按ENTER的时候依然会在控制台显示你的密码
- 保护敏感的CVAR,列如在直播里保护
- 修复了当退出游戏时,由于网络线程并没有关闭导致的锁定
- 修复了潜在的客户端提交的颜色值超出范围导致的崩溃(不正确的代码,FP错误等)
- 修复了潜在的服务器浏览器正在查找服务器时引擎重启时导致的崩溃(列如改变了视频设置)
- 修复了潜在的变量名称冲突导致封包被发送给了错误的客户端
- 修复了第三人称时其他玩家的手电筒被展示在不正确位置的问题
- 修复了glow shell效果会把模型本身的additctive/masked纹理效果破坏的问题
- 修复了
notarget
作弊时会阻止NPC进入战斗的问题 - 修复了最大路径长度
MAX_PATH_LENGTH
在新建游戏加载地图时会变为256而不是通常的260的问题 - 修复了服务器浏览器在修改视频设置后不会立即返回结果的问题
- 修复了武器动作在第一和第三人称直接不同步的问题
- HPAK: 不再添加大小为0的包(列如不需要的custom.hpk)
- 改善了冲突检查的性能,因此游戏运行库和代码只在基本的检查以后才需要被询问
- 增加MAX_LIGHTMAPS由512到1024
- 增加network message尺寸以允许更多的资源
- 插值更新/监听服务器视觉效果改善
- 如果实体插值对于除MOVETYPE_NONE/MOVETYPE_WALK/MOVETYPE_FLY/MOVETYPE_STEP之外具有MOVETYPE的实体不可行,那么他们将不会被渲染,之前这些实体将永远被渲染
- 监听服务器将会跳过实体插值,取而代之的是实体的位置和角度,这个修复将会使得酸液孢子渲染正确
- 本地游戏现在将只使用RFC1918, RFC1122和RFC3927标准进行地址检查,而不再使用标准B类检查
- 新的VGUI事件
NotifyOnExitToDesktop
- 新的VGUI事件
OnExitToDesktop
- 传送门(包括镜子和监视器)现在将可以在全屏模式起效
- 服务器debug消息"Too many entities in visible packet list."现在将包括client ID
- 网络线程
- 将会传入数据包处理的线程而不再传入主线程
- 将会显示在具有多个可用CPU线程的服务器上降低由于CPU高负载带来的延迟,并且缓解ddos攻击
- 现在默认为客户端和服务器启用(使用-nonetthread来禁用)
- 添加Linux支持
NPC
- Big Momma(老妈妈/头屑他妈/蛋蛋怪)
- 修复了除数为0时的"Got a NaN velocity on bmortar"错误消息和潜在的崩溃问题
- 修复了除数为0时的问题:最低重力锁定为0.1
- 修复了NaN结果:重新评估速度计算,如果输入不大于0时不再使用sqrt()
- 修复了老的Half-Life bug,
Gag
spawnflag不起作用 - NPC现在将会漂在水上,
MADWHACK
效果现在也正常工作了 - NPC索降没有目标名称时将会自动生成,否则他们将永远不会被生成
- NPC之前就在水里的话将不再被发射进空气里
- NPC将会重新评估他们和惹怒他们的敌人之间的关系,如果他们现在是朋友了将会停止攻击(同时也修复了自动攻击的’func_tank’瞄准队友的bug)
- 电蚂蚁部队的电蚂蚁步枪现在将正确生成闪电效果
- Xen植物被攻击时将模仿播放撬棍声音
音效
- 使用超出范围的音量或衰减级别播放的声音效果将不再导致游戏退出,音量现在限制在0.0和1.0之间。衰减现在被限制在0.0和4.0之间
- 音量和和衰减将更加精确(得益于发送网络消息),现在两者范围被限制在0-255之间
武器/物品
- 修复了使用狙击步枪开镜时换弹玩家的动作不会正常播放的我呢提
- 修复了潜在的使用未初始化的内存为枪火提供偏移值和其他粒子效果的问题
- 如果玩家丢弃电击蟑螂,将会从地图上正确删除他
- 实体
item_inventory
储存键值return_delay_respawn
来使得物品延迟一段时间后返回原位置
ZHLT工具
- 添加将AAATRIGER面转换为NULL的开关
- 同步不同平台的行为(列如之前Windows用-estimate但是Linux用-noestimate)
- Linux现在能正确检测到最大可用CPU线程
- 更多的名称设置显示balalabalbal的同步
- 常量
maxallocblock
现在从64修改为了1024 - 更新最大纹理尺寸MAX_TEXTURE_SIZE为1024×1024
- 大量扩展了
info_compile_parameters
来包括每一个编译设置- 这将减少对自定义编译脚本的预处理需求,因为你可以在地图里储存这些设置
- 这应该使得不同人用不用编译脚本编译出的结果一致
地图
Black Mesa: Special Tactics Sector(bms_sts)
- 添加
trigger_changeskey
,现在每个区域都有他独特的天空 - 添加圣诞特效
- 添加圣诞玩家和圣诞科学家模型
- 教程里添加怪物的计数器
- 教程里添加了新的方法来让玩家理解每个怪物
- 在能改换区域的时候添加新的特效事件
- 添加对新的队伍阵营的支持
- 改了逃脱迷宫一点点,更随机了
- 降低了Gonarch的血量
- Xen区域添加天空
- 修复了玩家可以在生存回合通过自杀拿分的bug
CTF Warforts
- 使用了队伍1(蓝)和队伍3(黄)的新阵营
Search ‘n Destroy
- 新地图!名称为snd
Stadium 4
- 分为红队和蓝队
- 玩家可以通过特定传送门加入特定队伍互怼
Toonrun
- 添加自定义材质文件
- 配置文件一致性
- 修复了护甲在出生时不会正确给玩家的问题
模型
NPC
- They Hunger
- 重新合并了狗的模型,使用更好的hitbox,修复了子弹免疫
武器/物品
- 添加They Hunger第三章的MK2手榴弹玩家模型
- 修复和更新了SAW机枪的模型(PVW和弹匣)
- 孢子发射器v模型有更高的分辨率
- 新的11.2x33mm弹壳模型(357)
- 新的7.62x51mmNATO弹壳模型
- 新的有弹链的SAW子弹模型
- 替换了12号喷子的弹壳模型
- 替换了5.56x45mmNATO的弹壳模型
- 替换了9mm的弹壳模型
- 更新了OF的沙鹰,MP5和SAW的v模型
SDK
FGD
- survival.fgd
- 添加默认的survival.fgd来方便制图者制作生存模式
- sven-coop.fgd
- 添加trigger_changesky的color键值
- 添加trigger_camerea和trigger_cameratarget的mouse_digital_action_reset键值
- 添加movetype的-1选项标签代表不可移动
- 添加ItemWithDefaultModel类的键值solide设置模型的碰撞
- 添加固体的zhlt_customshadow设置固体的阴影
- 添加固体的zhlt_embedlightmap将光照贴图嵌入到半透明固体中,以使其获得局部照明,而不是基于白色/全亮 (对于玻璃和水来说太棒了!)
- 添加zhlt_embedlightmapresolution键值设置光照的分辨率(推荐为4)
- 添加zhlt_invisible设置固体是否可见
- 为item_inventory添加模型编辑支持
- 在squadmaker和monster_grunt_repel中为缺失的human grunt武器添加RPG和狙击枪的选择
- 为env_sentence添加spawnflag 1
- 添加丢失的"X-Race: Shocktrooper/Voltigore"阵营
- 添加新的1234队伍阵营
- 翻转teleport_if_blocked选项以契合游戏里的表现
- 新的实体info_compile_parameters来决定对于地图的编译器设置
- 澄清item_inventory的return_delay_respawn键值描述
- 移除zhlt.fgd,一起都在sven-coop.fgd里
studioMDL
- 修复了浮点精度错误
其他
skill.cfg
- 添加杂项子弹的描述
- 合并了Half-life和Sven Co-op的小节(不需要保持分割)
- 将依赖于skill级别的所有行为移动到可定制的变量中
- sk_islave_speed_zap: 腹地杠电击的充电速度 1.0简单 1.5难
- sk_apache_enable_rockets:阿帕奇是否发射导弹
- sk_hassassin_enable_cloaking:女刺客是否隐身潜行
- sk_grunt_handgrenades:HECU是否丢手雷
- sk_shocktrooper_enable_spores:电击部队是否丢酸液孢子
- sk_plr_shockrifle_recharge:电击步枪为玩家护甲充电速度 6.667中等 10简单 3.333难
- 怪物将基于他们友好的名字排序
- 玩家武器将基于他们的HUD选择顺序排序
杂项
- OF和BS安装器
- 提升了在Windows上检测Half-Life文件夹的表现
- 移除了预打包路点图,最好还是服务器自己生成这些东西
- 没有BS包的时候移除了bshift_bsp_convert.exe
- svencoop.sh和svends_run
- 添加了在不支持的环境下运行的警告(译注:真有人专门下个Linux服务端在Windows上跑??)
- 添加了GNU libc版本检查的警告消息(不支持的版本,版本太老balbalba)
- 添加了旧的游戏文件夹遍历以防止新的失败(对于那些还在坚持用老启动脚本的人)
- 更新了带有"or failed to run"的崩溃消息 (╯°□°)╯︵ ┻━┻
- 在启动脚本中加了一些注释使得那些函数看起来更合理
- 修饰性的改变
- svencoop.sh
- 添加了一个后退到当前相对目录,以防脚本找不到绝对游戏目录
- 做一些修饰性的改变来使shellcheck.net嗨皮
- 修复了依赖关系检查器函数中的重复列表
- 当尝试在MacOS上启动时,如果出现不支持该平台的消息,请优雅地关闭(译注:卧槽真有用苹果开服务器的哈哈哈哈哈哈)
- 更新了游戏目录查找方法,潜在地修复了脚本无法获得当前绝对游戏目录的问题(例如在基于arch的系统上)
- svends_run
- 添加了一个最后一次返回游戏目录查找,以使用当前相对路径,以防所有可用方法失败
- 更新游戏图标(TGA)添加alpha通道