QBCore 永久死亡系统 适合具有永久死亡机制的硬核 RP 服务器
一个轻量级且有效的 Perma-Kill 系统,适用于基于 QBCore 的服务器,可让您永久杀死角色而不删除其数据。该系统可防止在登录时选择死字符,同时通过恢复命令为服务器管理员提供控制。
-
🔒 标记为 dead 的 Perma-Death 强制
字符无法通过 选择。qb-multicharacter
-
📁 数据保留
字符不会被删除,只会被标记。非常适合角色扮演上诉工作流程。 -
🔄 管理员命令
/permakill [citizenid]
:将角色标记为永久死亡。/unpermakill [citizenid]
:恢复字符。
-
🧩 无缝 UI 反馈
正常阻止角色选择,并在角色死亡时显示游戏内通知。
运行以下查询:
ALTER TABLE players ADD COLUMN permakilled TINYINT(1) DEFAULT 0;ALTER TABLE players ADD COLUMN permakilled TINYINT(1) DEFAULT 0;ALTER TABLE players ADD COLUMN permakilled TINYINT(1) DEFAULT 0;
Replace 函数:play_character()
play_character: function() {if (this.selectedCharacter && this.selectedCharacter !== -1) {var data = this.characters[this.selectedCharacter];if (data !== undefined) {axios.post('https://qb-multicharacter/selectCharacter', {cData: data}).then((response) => {if (response.data === "ok") {setTimeout(function() {viewmodel.show.characters = false;}, 500);} else if (response.data === "cancel") {console.log("Character selection cancelled due to permakill.");}});} else {this.registerData.firstname = undefined;this.registerData.lastname = undefined;this.registerData.nationality = undefined;this.registerData.gender = undefined;this.registerData.date = (new Date(Date.now() - (new Date()).getTimezoneOffset() * 60000)).toISOString().substr(0, 10);this.show.characters = false;this.show.register = true;}}}play_character: function() { if (this.selectedCharacter && this.selectedCharacter !== -1) { var data = this.characters[this.selectedCharacter]; if (data !== undefined) { axios.post('https://qb-multicharacter/selectCharacter', { cData: data }).then((response) => { if (response.data === "ok") { setTimeout(function() { viewmodel.show.characters = false; }, 500); } else if (response.data === "cancel") { console.log("Character selection cancelled due to permakill."); } }); } else { this.registerData.firstname = undefined; this.registerData.lastname = undefined; this.registerData.nationality = undefined; this.registerData.gender = undefined; this.registerData.date = (new Date(Date.now() - (new Date()).getTimezoneOffset() * 60000)).toISOString().substr(0, 10); this.show.characters = false; this.show.register = true; } } }play_character: function() { if (this.selectedCharacter && this.selectedCharacter !== -1) { var data = this.characters[this.selectedCharacter]; if (data !== undefined) { axios.post('https://qb-multicharacter/selectCharacter', { cData: data }).then((response) => { if (response.data === "ok") { setTimeout(function() { viewmodel.show.characters = false; }, 500); } else if (response.data === "cancel") { console.log("Character selection cancelled due to permakill."); } }); } else { this.registerData.firstname = undefined; this.registerData.lastname = undefined; this.registerData.nationality = undefined; this.registerData.gender = undefined; this.registerData.date = (new Date(Date.now() - (new Date()).getTimezoneOffset() * 60000)).toISOString().substr(0, 10); this.show.characters = false; this.show.register = true; } } }
Replace 回调:selectCharacter
RegisterNUICallback('selectCharacter', function(data, cb)local cData = data.cDataQBCore.Functions.TriggerCallback('moon-permakill:checkPermakill', function(isDead)if isDead thenTriggerEvent("QBCore:Notify", "This character is dead. Appeal on Discord.", "error")cb("cancel")returnendDoScreenFadeOut(10)TriggerServerEvent('qb-multicharacter:server:loadUserData', cData)openCharMenu(false)SetEntityAsMissionEntity(charPed, true, true)DeleteEntity(charPed)cb("ok")end, cData.citizenid)end)RegisterNUICallback('selectCharacter', function(data, cb) local cData = data.cData QBCore.Functions.TriggerCallback('moon-permakill:checkPermakill', function(isDead) if isDead then TriggerEvent("QBCore:Notify", "This character is dead. Appeal on Discord.", "error") cb("cancel") return end DoScreenFadeOut(10) TriggerServerEvent('qb-multicharacter:server:loadUserData', cData) openCharMenu(false) SetEntityAsMissionEntity(charPed, true, true) DeleteEntity(charPed) cb("ok") end, cData.citizenid) end)RegisterNUICallback('selectCharacter', function(data, cb) local cData = data.cData QBCore.Functions.TriggerCallback('moon-permakill:checkPermakill', function(isDead) if isDead then TriggerEvent("QBCore:Notify", "This character is dead. Appeal on Discord.", "error") cb("cancel") return end DoScreenFadeOut(10) TriggerServerEvent('qb-multicharacter:server:loadUserData', cData) openCharMenu(false) SetEntityAsMissionEntity(charPed, true, true) DeleteEntity(charPed) cb("ok") end, cData.citizenid) end)
命令 | 描述 |
---|---|
/permakill [citizenid] |
永久将角色标记为死亡 |
/unpermakill [citizenid] |
通过取消标记来恢复角色 |
- 具有永久死亡机制的硬核 RP 服务器
- 帮派战争、警察枪战或长期伤害后果
- 不删除数据库的角色封禁
© 版权声明
THE END
- 最新
- 最热
只看作者