Death·安装

安装

DS-Death 会替换你 ambulance job 中默认的死亡/倒地/救援循环。安装过程基本是 drag-and-drop,只需对 esx_ambulancejobqb-ambulancejob 做几处小改动,让原有的救援流程把控制权交给 DS-Death。

下载

请从 portal.cfx.re 下载 script。请确认你登录的是购买该 script 时所用的 FiveM 账号。

解压

解压压缩包,把得到的 DS-Death 文件夹放到服务器 resources 文件夹下的任意位置。

依赖
DS-Death 需要 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

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

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'},
使用其他物品
如果你已经有更想用的医疗 item,可以改 config.lua 里的 ItemReviveItemLabel,不必安装 aidkit

修改你的 ambulance job

DS-Death 会接管死亡/救援流程,因此 esx_ambulancejob / qb-ambulancejob 中原有的 handler 需要删除或改道。需要删除和替换的具体代码块都随 resource 一起提供:

ESX(esx_ambulancejob)

INSTALLATION_GUIDE/ESX.txt 操作,一共三处改动:

  • esx_ambulancejob/client/main.lua:删除(或注释掉)会重置 isDeadesx:onPlayerSpawn handler。
  • esx_ambulancejob/client/main.lua:把 esx_ambulancejob:revive 事件的 handler 换成一行,交由 DS-Death 处理:
    esx_ambulancejob/client/main.lua
    RegisterNetEvent('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 / 死亡计时的 gameEventTriggered handler。该流程由 DS-Death 接管。
改之前先备份
这些改动会修改框架自带的 resource。动手前请保留一份原始 esx_ambulancejob / qb-ambulancejob 文件夹,万一你的其他组件依赖旧行为,还能回退。

授予管理员权限

QBCore

server.cfg 中加上 ace 权限,让管理员可以使用救援命令:

server.cfg
add_ace group.admin ds_death allow

ESX

权限通过 config.lua 中的 AuthorizedGroup 数组管理。默认的 {'admin'} 已经能覆盖大多数配置。

启动 resource

把 script 加入你的 server.cfg

server.cfg
ensure DS-Death
resource 加载顺序
确保你的框架(ESX / QBCore)和改好的 ambulance job 在加载顺序上排在 DS-Death 之前

配置

打开 config.lua,按你的服务器调整 script。最常用的几个选项:

  • KnockoutTime / RespawnTime:玩家倒地持续多久,以及何时可以重生。
  • HeadShotDeath:爆头时跳过倒地阶段,直接死亡。
  • RespawnPosition / RespawnSamePos / RespawnCost:玩家在哪里复活,以及复活是否扣现金或银行存款。
  • CombatLogging:重新进服时保持死亡状态(CheckDeath),或自动复活(RespawnOnJoin)。
  • RemoveItemsAfterRPDeath:RP 死亡时掉落现金、武器和物品,并可用 KeepItems whitelist 保留证件之类的东西。
  • ProgressbarNATIVERPROGRESSCUSTOM(在 CustomProgress / StopCustomProgress 中接入你自己的进度条)。
  • EMSCall:把你手机的呼叫触发写进这个函数,让世界中的 EMS 呼叫走你的手机,而不是默认通知。
  • EnableLogs:开启 Discord webhook 日志,并在 webhooks.lua 中配置。
自定义 hook
config.lua 中的 OnKnockedOnDeathOnReviveOnRespawn 都是空函数,等着你接入自己的触发器或 export。CanDie 可以按条件关闭死亡循环:适用于小游戏区域、镭射战活动或 PvP 竞技场。

还是卡住了?

在我们的 Discord 开个 ticket,我们来帮你。

加入 Discord →