没问题,我们可以编写一个简单的医护插件,它允许玩家在附近使用出租或自定义医疗NPC进行治疗。这个插件将涉及服务器和客户代码。
### 服务器端代码 (`server.lua`)
-- 服务端代码: server.lua
RegisterServerEvent('medic:healPlayer')
AddEventHandler('medic:healPlayer', function(targetPlayer)
-- 确保目标玩家在线
if targetPlayer ~= nil and GetPlayerPing(targetPlayer) > 0 then
TriggerClientEvent('medic:performHeal', targetPlayer)
end
end)
### 客户端代码 (`client.lua`)
-- 客户端代码: client.lua
local healingInProgress = false
-- 定义一个函数,创建NPC
function createMedicNPC()
local model = GetHashKey("s_m_m_paramedic_01")
RequestModel(model)
while not HasModelLoaded(model) do
Wait(1)
end
local playerPed = PlayerPedId()
local coords = GetEntityCoords(playerPed) + vector3(2.0, 0.0, 0.0) -- NPC 出现在玩家旁边
local npc = CreatePed(4, model, coords.x, coords.y, coords.z, 0.0, true, true)
SetEntityAsMissionEntity(npc, true, true)
SetBlockingOfNonTemporaryEvents(npc, true)
SetPedFleeAttributes(npc, 0, 0)
SetPedCombatAttributes(npc, 46, true)
SetPedCanRagdollFromPlayerImpact(npc, false)
return npc
end
-- 客户端事件,执行治疗动画和效果
RegisterNetEvent('medic:performHeal')
AddEventHandler('medic:performHeal', function()
if not healingInProgress then
healingInProgress = true
local playerPed = PlayerPedId()
local playerCoords = GetEntityCoords(playerPed)
local medicNPC = createMedicNPC()
TaskGoToCoordAnyMeans(medicNPC, playerCoords.x, playerCoords.y, playerCoords.z, 1.0, 0, 0, 786603, 0xbf800000)
TaskStartScenarioInPlace(medicNPC, "WORLD_HUMAN_COP_IDLES", 0, true)
Citizen.Wait(5000) -- 模拟治疗时间
SetEntityHealth(playerPed, 200)
ClearPedTasks(medicNPC)
DeleteEntity(medicNPC)
ShowNotification("~g~你已经被治疗!")
healingInProgress = false
end
end)
-- 使用命令来触发治疗,例如:/healme
RegisterCommand("healme", function()
local playerPed = PlayerPedId()
local playerCoords = GetEntityCoords(playerPed)
if not healingInProgress then
TriggerServerEvent('medic:healPlayer', PlayerId())
else
ShowNotification("~r~你已经在接受治疗!")
end
end)
function ShowNotification(text)
SetNotificationTextEntry("STRING")
AddTextComponentString(text)
DrawNotification(false, false)
end
### 用法说明
1. 在 `fxmanifest.lua` 添加这两个脚本:
fx_version 'cerulean'
game 'gta5'
server_script 'server.lua'
client_script 'client.lua'
2. 玩家可以使用 `/healme` 命令来召唤NPC进行治疗。
上述代码实现了一个基础的医疗插件,它在玩家使用指定命令时,召唤紧急医疗服务NPC来修理玩家的健康值。如果你需要更深入的功能,比如支付费用、治疗条件检查等,可以在此基础上进行扩展。希望这个插件对你有帮助! |