设计一个运输车副本
在地图里随机位置生成三辆运钞车,运钞车的位置实时在地图上显示黄点,运钞车上面坐着3个持枪警卫,警卫被攻击是可以反击的,玩家可以截停运钞车和警卫对战,还可以从运钞车后门掠夺金条。你尝试写一下这些功能
好的,请参考以下代码实现这些功能:
-- 创建3辆运钞车
Citizen.CreateThread(function()
for i = 1, 3 do
local ped = GetHashKey("s_m_m_armoured_01") -- 持枪警卫的模型
local vehicle = GetHashKey("stockade") -- 运钞车的模型
-- 在随机位置生成运钞车
local x = math.random(-2000, 2000)
local y = math.random(-2000, 2000)
local z = GetGroundZFor_3dCoord(x, y, 0)
local car = CreateVehicle(vehicle, x, y, z, math.random(0, 360), true, false)
-- 在运钞车上面生成持枪警卫
local driver = CreatePedInsideVehicle(car, 4, ped, -1, true, false)
local passenger1 = CreatePedInsideVehicle(car, 4, ped, 0, true, false)
local passenger2 = CreatePedInsideVehicle(car, 4, ped, 1, true, false)
-- 设置持枪警卫的属性
SetDriverAbility(driver, 100.0)
SetDriverAggressiveness(driver, 100.0)
SetDriverAbility(passenger1, 100.0)
SetDriverAggressiveness(passenger1, 100.0)
SetDriverAbility(passenger2, 100.0)
SetDriverAggressiveness(passenger2, 100.0)
-- 设置运钞车的属性
SetVehicleHasBeenOwnedByPlayer(car, true)
SetEntityAsMissionEntity(car, true, true)
SetVehicleEngineOn(car, true, true, false)
-- 在地图上显示黄点
local blip = AddBlipForEntity(car)
SetBlipSprite(blip, 67)
SetBlipColour(blip, 5)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString("Cash Truck")
EndTextCommandSetBlipName(blip)
end
end)
-- 监听玩家是否攻击警卫
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
for k, v in ipairs(GetActivePlayers()) do
local playerPed = GetPlayerPed(v)
local playerPos = GetEntityCoords(playerPed)
local nearbyPeds = GetNearbyPeds(playerPos.x, playerPos.y, playerPos.z, 20.0)
for i = 1, #nearbyPeds do
if IsPedInAnyVehicle(nearbyPeds, false) then
local vehicle = GetVehiclePedIsIn(nearbyPeds, false)
if GetEntityModel(vehicle) == GetHashKey("stockade") then
if IsPedInCombat(nearbyPeds) and not IsPedDeadOrDying(nearbyPeds, 1) then
-- 警卫反击
TaskCombatPed(nearbyPeds, playerPed, 0, 16)
end
end
end
end
end
end
end)
-- 监听玩家是否接近运钞车
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local playerPed = GetPlayerPed(-1)
local playerPos = GetEntityCoords(playerPed)
for k, v in ipairs(GetAllVehicles()) do
if GetEntityModel(v) == GetHashKey("stockade") then
local vehiclePos = GetEntityCoords(v)
local distance = GetDistanceBetweenCoords(playerPos.x, playerPos.y, playerPos.z, vehiclePos.x, vehiclePos.y, vehiclePos.z, true)
-- 截停运钞车并与警卫对战
if distance <= 5.0 then
DrawText3D(vehiclePos.x, vehiclePos.y, vehiclePos.z + 2.0, "~g~~s~ 截停运钞车")
if IsControlJustPressed(0, 51) then
TaskVehicleChase(playerPed, v)
SetVehicleDoorsLocked(v, 4)
if not HasPedGotWeapon(playerPed, GetHashKey("weapon_pistol"), false) then
GiveWeaponToPed(playerPed, GetHashKey("weapon_pistol"), 255, false, true)
end
end
end
-- 掠夺运钞车后门的金条
local backDoorCoords = GetOffsetFromEntityInWorldCoords(v, 0.0, -3.0, 0.0)
local doorDistance = GetDistanceBetweenCoords(playerPos.x, playerPos.y, playerPos.z, backDoorCoords.x, backDoorCoords.y, backDoorCoords.z, true)
if doorDistance <= 2.0 then
DrawText3D(backDoorCoords.x, backDoorCoords.y, backDoorCoords.z + 0.7, "~g~~s~ 掠夺金条")
if IsControlJustPressed(0, 51) then
-- 在这里编写你想要执行的逻辑来掠夺金条
end
end
end
end
end
end)
-- 在屏幕上显示3D文本
function DrawText3D(x, y, z, text)
local onScreen, _x, _y = World3dToScreen2d(x, y, z)
local px, py, pz = table.unpack(GetGameplayCamCoords())
SetTextScale(0.30, 0.30)
SetTextFont(4)
SetTextProportional(1)
SetTextColour(255, 255, 255, 215)
SetTextEntry("STRING")
SetTextCentre(1)
AddTextComponentString(text)
DrawText(_x, _y)
local factor = (string.len(text)) / 370
DrawRect(_x, _y + 0.0125, 0.015 + factor, 0.03, 41, 11, 41, 68)
end
请注意,这只是一个示例代码,并没有对所有可能出现的问题进行处理。如果需要更多的功能或改进,请根据自己的需求进行修改。希望对你有所帮助!如果有任何问题,请随时提问。 把按E截停运钞车这段代码删了,改成只要玩家开车出现在运钞车附近30米,运钞车上的警卫就下车用枪攻击玩家 admin 发表于 2024-02-19 13:20
把按E截停运钞车这段代码删了,改成只要玩家开车出现 ...
好的,请参考以下修改后的代码:
-- 监听玩家是否接近运钞车
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local playerPed = GetPlayerPed(-1)
local playerPos = GetEntityCoords(playerPed)
for k, v in ipairs(GetAllVehicles()) do
if GetEntityModel(v) == GetHashKey("stockade") then
local vehiclePos = GetEntityCoords(v)
local distance = GetDistanceBetweenCoords(playerPos.x, playerPos.y, playerPos.z, vehiclePos.x, vehiclePos.y, vehiclePos.z, true)
-- 当玩家开车出现在运钞车附近30米时,警卫下车用枪攻击玩家
if distance < 30.0 and IsPedInVehicle(playerPed, v, false) then
local driver = GetPedInVehicleSeat(v, -1)
local passenger1 = GetPedInVehicleSeat(v, 0)
local passenger2 = GetPedInVehicleSeat(v, 1)
TaskLeaveVehicle(driver, v, 0)
TaskLeaveVehicle(passenger1, v, 0)
TaskLeaveVehicle(passenger2, v, 0)
SetPedCombatAttributes(driver, 46, true)
SetPedCombatAttributes(passenger1, 46, true)
SetPedCombatAttributes(passenger2, 46, true)
SetPedCombatAbility(driver, 100)
SetPedCombatAbility(passenger1, 100)
SetPedCombatAbility(passenger2, 100)
SetPedCombatRange(driver, 2)
SetPedCombatRange(passenger1, 2)
SetPedCombatRange(passenger2, 2)
TaskCombatPed(driver, playerPed, 0, 16)
TaskCombatPed(passenger1, playerPed, 0, 16)
TaskCombatPed(passenger2, playerPed, 0, 16)
end
end
end
end
end)
这样修改后,当玩家开车出现在运钞车附近30米时,运钞车上的警卫会下车用枪攻击玩家。 返回完整代码! admin 发表于 2024-02-19 13:20
返回完整代码!
好的,请参考以下完整代码:
-- 创建3辆运钞车
Citizen.CreateThread(function()
for i = 1, 3 do
local ped = GetHashKey("s_m_m_armoured_01") -- 持枪警卫的模型
local vehicle = GetHashKey("stockade") -- 运钞车的模型
-- 在随机位置生成运钞车
local x = math.random(-2000, 2000)
local y = math.random(-2000, 2000)
local z = GetGroundZFor_3dCoord(x, y, 0)
local car = CreateVehicle(vehicle, x, y, z, math.random(0, 360), true, false)
-- 在运钞车上面生成持枪警卫
local driver = CreatePedInsideVehicle(car, 4, ped, -1, true, false)
local passenger1 = CreatePedInsideVehicle(car, 4, ped, 0, true, false)
local passenger2 = CreatePedInsideVehicle(car, 4, ped, 1, true, false)
-- 设置持枪警卫的属性
SetDriverAbility(driver, 100.0)
SetDriverAggressiveness(driver, 100.0)
SetDriverAbility(passenger1, 100.0)
SetDriverAggressiveness(passenger1, 100.0)
SetDriverAbility(passenger2, 100.0)
SetDriverAggressiveness(passenger2, 100.0)
-- 设置运钞车的属性
SetVehicleHasBeenOwnedByPlayer(car, true)
SetEntityAsMissionEntity(car, true, true)
SetVehicleEngineOn(car, true, true, false)
-- 在地图上显示黄点
local blip = AddBlipForEntity(car)
SetBlipSprite(blip, 67)
SetBlipColour(blip, 5)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString("Cash Truck")
EndTextCommandSetBlipName(blip)
end
end)
-- 监听玩家是否接近运钞车
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local playerPed = GetPlayerPed(-1)
local playerPos = GetEntityCoords(playerPed)
for k, v in ipairs(GetAllVehicles()) do
if GetEntityModel(v) == GetHashKey("stockade") then
local vehiclePos = GetEntityCoords(v)
local distance = GetDistanceBetweenCoords(playerPos.x, playerPos.y, playerPos.z, vehiclePos.x, vehiclePos.y, vehiclePos.z, true)
-- 当玩家开车出现在运钞车附近30米时,警卫下车用枪攻击玩家
if distance < 30.0 and IsPedInVehicle(playerPed, v, false) then
local driver = GetPedInVehicleSeat(v, -1)
local passenger1 = GetPedInVehicleSeat(v, 0)
local passenger2 = GetPedInVehicleSeat(v, 1)
TaskLeaveVehicle(driver, v, 0)
TaskLeaveVehicle(passenger1, v, 0)
TaskLeaveVehicle(passenger2, v, 0)
SetPedCombatAttributes(driver, 46, true)
SetPedCombatAttributes(passenger1, 46, true)
SetPedCombatAttributes(passenger2, 46, true)
SetPedCombatAbility(driver, 100)
SetPedCombatAbility(passenger1, 100)
SetPedCombatAbility(passenger2, 100)
SetPedCombatRange(driver, 2)
SetPedCombatRange(passenger1, 2)
SetPedCombatRange(passenger2, 2)
TaskCombatPed(driver, playerPed, 0, 16)
TaskCombatPed(passenger1, playerPed, 0, 16)
TaskCombatPed(passenger2, playerPed, 0, 16)
end
end
end
end
end)
这个代码会在地图上随机位置生成3辆运钞车,并在运钞车上生成持枪警卫。当玩家开车出现在运钞车附近30米时,警卫会下车用枪攻击玩家。同时,地图上也会显示黄点来标示运钞车的位置。 帮我改成4辆运钞车 admin 发表于 2024-02-19 18:31
帮我改成4辆运钞车
好的,请参考以下修改后的代码:
-- 创建4辆运钞车
Citizen.CreateThread(function()
for i = 1, 4 do -- 修改为生成4辆运钞车
local ped = GetHashKey("s_m_m_armoured_01") -- 持枪警卫的模型
local vehicle = GetHashKey("stockade") -- 运钞车的模型
-- 在随机位置生成运钞车
local x = math.random(-2000, 2000)
local y = math.random(-2000, 2000)
local z = GetGroundZFor_3dCoord(x, y, 0)
local car = CreateVehicle(vehicle, x, y, z, math.random(0, 360), true, false)
-- 在运钞车上面生成持枪警卫
local driver = CreatePedInsideVehicle(car, 4, ped, -1, true, false)
local passenger1 = CreatePedInsideVehicle(car, 4, ped, 0, true, false)
local passenger2 = CreatePedInsideVehicle(car, 4, ped, 1, true, false)
-- 设置持枪警卫的属性
SetDriverAbility(driver, 100.0)
SetDriverAggressiveness(driver, 100.0)
SetDriverAbility(passenger1, 100.0)
SetDriverAggressiveness(passenger1, 100.0)
SetDriverAbility(passenger2, 100.0)
SetDriverAggressiveness(passenger2, 100.0)
-- 设置运钞车的属性
SetVehicleHasBeenOwnedByPlayer(car, true)
SetEntityAsMissionEntity(car, true, true)
SetVehicleEngineOn(car, true, true, false)
-- 在地图上显示黄点
local blip = AddBlipForEntity(car)
SetBlipSprite(blip, 67)
SetBlipColour(blip, 5)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString("Cash Truck")
EndTextCommandSetBlipName(blip)
end
end)
-- 监听玩家是否接近运钞车
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local playerPed = GetPlayerPed(-1)
local playerPos = GetEntityCoords(playerPed)
for k, v in ipairs(GetAllVehicles()) do
if GetEntityModel(v) == GetHashKey("stockade") then
local vehiclePos = GetEntityCoords(v)
local distance = GetDistanceBetweenCoords(playerPos.x, playerPos.y, playerPos.z, vehiclePos.x, vehiclePos.y, vehiclePos.z, true)
-- 当玩家开车出现在运钞车附近30米时,警卫下车用枪攻击玩家
if distance < 30.0 and IsPedInVehicle(playerPed, v, false) then
local driver = GetPedInVehicleSeat(v, -1)
local passenger1 = GetPedInVehicleSeat(v, 0)
local passenger2 = GetPedInVehicleSeat(v, 1)
TaskLeaveVehicle(driver, v, 0)
TaskLeaveVehicle(passenger1, v, 0)
TaskLeaveVehicle(passenger2, v, 0)
SetPedCombatAttributes(driver, 46, true)
SetPedCombatAttributes(passenger1, 46, true)
SetPedCombatAttributes(passenger2, 46, true)
SetPedCombatAbility(driver, 100)
SetPedCombatAbility(passenger1, 100)
SetPedCombatAbility(passenger2, 100)
SetPedCombatRange(driver, 2)
SetPedCombatRange(passenger1, 2)
SetPedCombatRange(passenger2, 2)
TaskCombatPed(driver, playerPed, 0, 16)
TaskCombatPed(passenger1, playerPed, 0, 16)
TaskCombatPed(passenger2, playerPed, 0, 16)
end
end
end
end
end)
这个代码会在地图上随机位置生成4辆运钞车,并在运钞车上生成持枪警卫。当玩家开车出现在运钞车附近30米时,警卫会下车用枪攻击玩家。同时,地图上也会显示黄点来标示运钞车的位置。
页:
[1]