安装
DS-Death 会替换你 ambulance job 中默认的死亡/倒地/救援循环。安装过程基本是 drag-and-drop,只需对 esx_ambulancejob 或 qb-ambulancejob 做几处小改动,让原有的救援流程把控制权交给 DS-Death。
下载
请从 portal.cfx.re 下载 script。请确认你登录的是购买该 script 时所用的 FiveM 账号。
解压
解压压缩包,把得到的 DS-Death 文件夹放到服务器 resources 文件夹下的任意位置。
mysql-async。ESX 与 QBCore 均受支持,并在运行时自动识别。执行 SQL
执行与你框架对应的 SQL 文件。它只会新增一个 ds_death 字段,用于在断线后保留死亡状态。
ESX
在数据库中执行 INSTALLATION_GUIDE/ESX.sql:会向 users 表添加 ds_death TINYINT(1)。
QBCore
在数据库中执行 INSTALLATION_GUIDE/QBCore.sql:会向 players 表添加 ds_death TINYINT(1)。
安装救援物品
DS-Death 需要一个 aidkit item 来救起倒地玩家。请把它加入你正在使用的 inventory。
ESX(默认 inventory)
在数据库中执行 INSTALLATION_GUIDE/INSTALL_ITEM/ESX/item.sql 来注册该 item。
ESX(ox_inventory)
打开 INSTALLATION_GUIDE/INSTALL_ITEM/ESX/OX_INVENTORY_ITEM.md,复制片段并粘贴到 ox_inventory/data/items.lua:
['aidkit'] = {
label = 'Aid Kit',
weight = 100,
stack = true,
consume = 0,
allowArmed = true
},QBCore
打开 INSTALLATION_GUIDE/INSTALL_ITEM/QBCORE/item.md,复制片段并粘贴到 qb-core/shared/items.lua:
['aidkit'] = {['name'] = 'aidkit', ['label'] = 'Aid Kit', ['weight'] = 0, ['type'] = 'item', ['image'] = 'aidkit.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Useful to revive knocked people'},config.lua 里的 ItemRevive 和 ItemLabel,不必安装 aidkit。修改你的 ambulance job
DS-Death 会接管死亡/救援流程,因此 esx_ambulancejob / qb-ambulancejob 中原有的 handler 需要删除或改道。需要删除和替换的具体代码块都随 resource 一起提供:
ESX(esx_ambulancejob)
按 INSTALLATION_GUIDE/ESX.txt 操作,一共三处改动:
- esx_ambulancejob/client/main.lua:删除(或注释掉)会重置
isDead的esx:onPlayerSpawnhandler。 - esx_ambulancejob/client/main.lua:把
esx_ambulancejob:revive事件的 handler 换成一行,交由 DS-Death 处理:esx_ambulancejob/client/main.luaRegisterNetEvent('esx_ambulancejob:revive') AddEventHandler('esx_ambulancejob:revive', function() TriggerEvent('DS-Death:revive') end) - esx_ambulancejob/client/job.lua:在
revivePlayer函数中,把if IsPedDeadOrDying(closestPlayerPed, 1) then改成if closestPlayerPed then,这样 DS-Death 的倒地状态才会被视为可救援。
QBCore(qb-ambulancejob)
按 INSTALLATION_GUIDE/QBCORE.txt 操作,两处改动:
- qb-ambulancejob/server/main.lua:删除(或注释掉)现有的
QBCore.Commands.Add("revive", ...)代码块。DS-Death 会注册自己的命令。 - qb-ambulancejob/client/dead.lua:删除运行 laststand / 死亡计时的
gameEventTriggeredhandler。该流程由 DS-Death 接管。
esx_ambulancejob / qb-ambulancejob 文件夹,万一你的其他组件依赖旧行为,还能回退。授予管理员权限
QBCore
在 server.cfg 中加上 ace 权限,让管理员可以使用救援命令:
add_ace group.admin ds_death allowESX
权限通过 config.lua 中的 AuthorizedGroup 数组管理。默认的 {'admin'} 已经能覆盖大多数配置。
启动 resource
把 script 加入你的 server.cfg:
ensure DS-DeathDS-Death 之前。配置
打开 config.lua,按你的服务器调整 script。最常用的几个选项:
- KnockoutTime / RespawnTime:玩家倒地持续多久,以及何时可以重生。
- HeadShotDeath:爆头时跳过倒地阶段,直接死亡。
- RespawnPosition / RespawnSamePos / RespawnCost:玩家在哪里复活,以及复活是否扣现金或银行存款。
- CombatLogging:重新进服时保持死亡状态(
CheckDeath),或自动复活(RespawnOnJoin)。 - RemoveItemsAfterRPDeath:RP 死亡时掉落现金、武器和物品,并可用
KeepItemswhitelist 保留证件之类的东西。 - Progressbar:
NATIVE、RPROGRESS或CUSTOM(在CustomProgress/StopCustomProgress中接入你自己的进度条)。 - EMSCall:把你手机的呼叫触发写进这个函数,让世界中的 EMS 呼叫走你的手机,而不是默认通知。
- EnableLogs:开启 Discord webhook 日志,并在
webhooks.lua中配置。
config.lua 中的 OnKnocked、OnDeath、OnRevive 和 OnRespawn 都是空函数,等着你接入自己的触发器或 export。CanDie 可以按条件关闭死亡循环:适用于小游戏区域、镭射战活动或 PvP 竞技场。