[Bug]: The Front never receives the friendly damage setting

未关闭 适合新手
#5,185 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
1/5
预计耗时
1 小时以内
新手友好度
86/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
bash
领域
cli

调研方向

阅读 lgsm/config-default/config-lgsm/tfserver/_default.cfg,以及该文件中的 startparameters 定义;issue 指出了变量名不匹配的问题。检查默认配置和实例配置的载入方式,然后使用 issue 中描述的复现 harness 验证展开后的启动参数。完成标准是:默认设置产生 -IsCanFriendDamage=true,实例值 damageallies="false" 产生 -IsCanFriendDamage=false。

由索引模型根据 Issue 内容生成。

描述

command: start engine: unreal4 game: The Front reproducible: always severity: medium type: bug
Severity

severity: medium

Reproducibility

reproducible: always

Regression

regression: no

Affects latest release

latest-release: yes

User story

As a The Front server administrator, I want the friendly damage setting in the LinuxGSM config to reach the server, so that I can decide whether squadmates can damage each other.

Script name

tfserver

Game

The Front

Linux distro

Other

Command

command: start

Expected behavior

The server starts with -IsCanFriendDamage=true, the value the default config sets, and setting damageallies in the instance config changes it.

Actual behavior

Unless the instance config sets damageallies, the server starts with an empty value, -IsCanFriendDamage=. The damangeallies value from the default config is never used.

lgsm/config-default/config-lgsm/tfserver/_default.cfg defines the variable with a typo on line 22:

damangeallies="true"

but startparameters on line 36 reads a different name:

-IsCanFriendDamage=${damageallies}

damageallies is not set anywhere in LinuxGSM, so it expands to an empty string. The setting next to it, damageself="true" with -IsCanSelfDamage=${damageself}, is spelled the same in both places and works.

I could not find an official developer reference for IsCanFriendDamage, so I don't know how the game handles an empty value.

Further information

How it got here:

  • 67472a82 (#4359, 2023-10-29) added The Front with damangeallies="true" in _default.cfg. The start parameters already used -IsCanFriendDamage=${damageallies}, so the setting has never reached the server.
  • b133c444 (fix(tf): update anticheat to UseEAC, 2025-03-08) is the last change to the startparameters line. It did not touch this parameter.
  • The server request is #4335. The example start command in https://github.com/GameServerManagers/LinuxGSM/issues/4335#issuecomment-1762376303 includes IsCanSelfDamage=0 and IsCanFriendDamage=0.
  • v26.5.0 (2026-11-04) and develop (c37014cf) still have the typo.

Neither damangeallies nor damageallies appears anywhere else in the repository, including the modules.

Workaround on current versions: set damageallies (correct spelling) in lgsm/config-lgsm/tfserver/tfserver.cfg. The start parameters use that name, so the value is passed. Copying the misspelled damangeallies from _default.cfg into common.cfg or the instance config has no effect.

When this is fixed, existing servers will be started with -IsCanFriendDamage=true unless their config sets damageallies="false".

Third-party hosting guides show IsCanFriendDamage=0 (off) as the value in the game's own server config. I could not confirm that in an official developer source.

This was found by code review of develop, not on a live server. I reproduced it with a Git Bash harness that copies the real config templates, sources them in the order linuxgsm.sh does (_default.cfg, common.cfg, secrets-common.cfg, tfserver.cfg, secrets-tfserver.cfg), and runs the real fn_reload_startparameters from linuxgsm.sh. The output is below.

Pre-checks
  • I ran update and validate before reporting this issue.

Not applicable: found by code review of develop and reproduced with the harness above, not reported from a running server.

Relevant log output
# develop (c37014cf), expanded startparameters
defaults only                                  -> IsCanSelfDamage=true | IsCanFriendDamage=
instance damageallies="false"                  -> IsCanSelfDamage=true | IsCanFriendDamage=false
instance damangeallies="false" (typo copied)   -> IsCanSelfDamage=true | IsCanFriendDamage=
Steps to reproduce
  1. Install tfserver.
  2. Run ./tfserver details.
  3. Under "Command-line Parameters", the start command contains -IsCanFriendDamage= with no value, while -IsCanSelfDamage=true is set.
  4. Set damangeallies="false" in lgsm/config-lgsm/tfserver/tfserver.cfg and run ./tfserver details again: -IsCanFriendDamage= is still empty.

🤖 Generated with Claude Code

主要语言
Shell
星标
4.9k
派生
870
平均合并
18 小时 44 分钟
30 天内合并 PR
148

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

GameServerManagers/LinuxGSM 的其他 Issue

查看 GameServerManagers/LinuxGSM 的全部 Issue

相似的 Issue

更多 Shell/Bash Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。