搜索
开启左侧

更改绑定骨骼位置为右腿骨骼

[复制链接]
15604402 发表于 2025-2-27 03:36:10 | 显示全部楼层 |阅读模式

RegisterNetEvent('phmodel:nvhaiwen')
AddEventHandler('phmodel:nvhaiwen', function ()
    TriggerEvent(Config['Event'][2]) -- 触发配置事件
    if not wheel then
        --
        wheel = true
        local ped = GetPlayerPed(-1) -- 获取玩家角色
        local position = GetEntityCoords(ped, false) -- 获取玩家的位置
        local object = GetClosestObjectOfType(position.x, position.y, position.z, 15.0, GetHashKey(Config.prop3), false, false, false)
        if object ~= 0 then
            DeleteObject(object) -- 删除附近的物体
        end
        --
        local x, y, z = table.unpack(GetEntityCoords(ped)) -- 解包坐标
        -- 在脚旁边生成物体,偏移值可以根据实际需要调整
        local prop = CreateObject(GetHashKey(Config.prop3), x, y, z + 0.0, true, true, true)
        local boneIndex = GetPedBoneIndex(ped, 64729) -- 获取骨骼索引
        -- 附加物体时调整位置到脚旁边
        AttachEntityToEntity(prop, ped, boneIndex, 0.1, 0.0, -0.15, 0.0, 179.142, 193.120, true, true, false, true, 1, true)
    else
        --
        local ped = GetPlayerPed(-1)
        local position = GetEntityCoords(ped, false)
        local object = GetClosestObjectOfType(position.x, position.y, position.z, 15.0, GetHashKey(Config.prop3), false, false, false)
        if object ~= 0 then
            DeleteObject(object)
        end
        --
        local x, y, z = table.unpack(GetEntityCoords(ped))
        local prop = CreateObject(GetHashKey(Config.prop3), x, y, z + 0.0, true, true, true)
        local boneIndex = GetPedBoneIndex(ped, 64729)
        -- 附加物体时调整位置到脚旁边
        AttachEntityToEntity(prop, ped, boneIndex, 0.1, 0.0, -0.15, 0.0, 90.0, 180.0, true, true, false, true, 1, true)
        ClearPedTasks(ped)
        wheel = false
        DetachEntity(prop, ped, boneIndex, 0.10, 0.01, 0.00, 0.0, 90.00, 180.0, true, true, false, true, 1, true)
        DeleteObject(prop)
    end
end)


回复 论坛版权

使用道具 举报

ChatGPT 发表于 2025-2-27 03:36:22 | 显示全部楼层
要将绑定的骨骼位置更改为右腿骨骼,您需要找到正确的骨骼索引。右腿通常对应于 `GetPedBoneIndex(ped, 64524)`。在代码中进行适当的修改。以下是更新后的代码:
RegisterNetEvent('phmodel:nvhaiwen')
AddEventHandler('phmodel:nvhaiwen', function ()
    TriggerEvent(Config['Event'][2]) -- 触发配置事件
    if not wheel then
        -- 进入创建物体流程
        wheel = true
        local ped = GetPlayerPed(-1) -- 获取玩家角色
        local position = GetEntityCoords(ped, false) -- 获取玩家的位置
        local object = GetClosestObjectOfType(position.x, position.y, position.z, 15.0, GetHashKey(Config.prop3), false, false, false)
        if object ~= 0 then
            DeleteObject(object) -- 删除附近的物体
        end
        
        local x, y, z = table.unpack(GetEntityCoords(ped)) -- 解包坐标
        -- 在脚旁边生成物体,偏移值可以根据实际需要调整
        local prop = CreateObject(GetHashKey(Config.prop3), x, y, z + 0.0, true, true, true)
        local boneIndex = GetPedBoneIndex(ped, 64524) -- 更改为右腿骨骼索引
        -- 附加物体时调整位置到右腿旁边
        AttachEntityToEntity(prop, ped, boneIndex, 0.1, 0.0, -0.15, 0.0, 179.142, 193.120, true, true, false, true, 1, true)
    else
        -- 进入删除物体流程
        local ped = GetPlayerPed(-1)
        local position = GetEntityCoords(ped, false)
        local object = GetClosestObjectOfType(position.x, position.y, position.z, 15.0, GetHashKey(Config.prop3), false, false, false)
        if object ~= 0 then
            DeleteObject(object)
        end
        
        local x, y, z = table.unpack(GetEntityCoords(ped))
        local prop = CreateObject(GetHashKey(Config.prop3), x, y, z + 0.0, true, true, true)
        local boneIndex = GetPedBoneIndex(ped, 64524) -- 更改为右腿骨骼索引
        -- 附加物体时调整位置到右腿旁边
        AttachEntityToEntity(prop, ped, boneIndex, 0.1, 0.0, -0.15, 0.0, 90.0, 180.0, true, true, false, true, 1, true)
        
        ClearPedTasks(ped)
        wheel = false
        DetachEntity(prop, ped, boneIndex, 0.10, 0.01, 0.00, 0.0, 90.00, 180.0, true, true, false, true, 1, true)
        DeleteObject(prop)
    end
end)

### 修改说明:
1. 将 `local boneIndex = GetPedBoneIndex(ped, 64729)` 更改为 `local boneIndex = GetPedBoneIndex(ped, 64524)`,以便使用右腿的骨骼索引。
2. 其他部分保持不变,以确保功能正常。

这段代码应该放在 `client.lua` 文件中,因为它涉及到与玩家的客户端交互和对象的创建与附加。
回复

使用道具 举报

 楼主| 15604402 发表于 2025-2-27 03:38:35 | 显示全部楼层
使饰品在右腿旁而不是在腿上
[发帖际遇]: 15604402 被钱袋砸中进医院,看病花了 6 贡献. 幸运榜 / 衰神榜
回复

使用道具 举报

ChatGPT 发表于 2025-2-27 03:39:03 | 显示全部楼层
15604402 发表于 2025-02-27 03:38
使饰品在右腿旁而不是在腿上


要使饰品在右腿旁,而不是直接附加在腿上,您需要调整附加物体时的位置偏移值(即 `AttachEntityToEntity` 方法中的偏移参数)。以下是更新后的代码:
RegisterNetEvent('phmodel:nvhaiwen')
AddEventHandler('phmodel:nvhaiwen', function ()
    TriggerEvent(Config['Event'][2]) -- 触发配置事件
    if not wheel then
        wheel = true
        local ped = GetPlayerPed(-1) -- 获取玩家角色
        local position = GetEntityCoords(ped, false) -- 获取玩家的位置
        local object = GetClosestObjectOfType(position.x, position.y, position.z, 15.0, GetHashKey(Config.prop3), false, false, false)
        if object ~= 0 then
            DeleteObject(object) -- 删除附近的物体
        end

        local x, y, z = table.unpack(GetEntityCoords(ped)) -- 解包坐标
        local prop = CreateObject(GetHashKey(Config.prop3), x, y, z + 0.0, true, true, true)
        local boneIndex = GetPedBoneIndex(ped, 64524) -- 使用右腿骨骼索引
        -- 调整位置偏移,使饰品在右腿旁边
        AttachEntityToEntity(prop, ped, boneIndex, 0.3, 0.0, -0.1, 0.0, 180.0, 0.0, true, true, false, true, 1, true) 
    else
        local ped = GetPlayerPed(-1)
        local position = GetEntityCoords(ped, false)
        local object = GetClosestObjectOfType(position.x, position.y, position.z, 15.0, GetHashKey(Config.prop3), false, false, false)
        if object ~= 0 then
            DeleteObject(object)
        end

        local x, y, z = table.unpack(GetEntityCoords(ped))
        local prop = CreateObject(GetHashKey(Config.prop3), x, y, z + 0.0, true, true, true)
        local boneIndex = GetPedBoneIndex(ped, 64524) -- 使用右腿骨骼索引
        -- 调整位置偏移,使饰品在右腿旁边
        AttachEntityToEntity(prop, ped, boneIndex, 0.3, 0.0, -0.1, 0.0, 180.0, 0.0, true, true, false, true, 1, true) 

        ClearPedTasks(ped)
        wheel = false
        DetachEntity(prop, ped, boneIndex, 0.10, 0.01, 0.00, 0.0, 180.00, 0.0, true, true, false, true, 1, true)
        DeleteObject(prop)
    end
end)

### 修改说明:
1. 在 `AttachEntityToEntity` 函数中,将偏移值调整为 `(0.3, 0.0, -0.1)`。其中:
   - `0.3` 是横向偏移(向右),可以根据需要调整;
   - `0.0` 是前后偏移;
   - `-0.1` 是上下偏移,这里设为负值将饰品放置在腿的下方,可以根据需要进行微调。

这段代码依然应放在 `client.lua` 文件中,以保持与客户端相关的操作。
回复

使用道具 举报

 楼主| 15604402 发表于 2025-2-27 03:40:07 | 显示全部楼层
饰品倒立了,使其翻转过来
回复

使用道具 举报

ChatGPT 发表于 2025-2-27 03:40:25 | 显示全部楼层
15604402 发表于 2025-02-27 03:40
饰品倒立了,使其翻转过来


要使饰品翻转过来,您需要在 `AttachEntityToEntity` 方法中的旋转参数进行调整。具体是通过更改旋转的角度,使其朝向正确的方向。以下是更新后的代码:
RegisterNetEvent('phmodel:nvhaiwen')
AddEventHandler('phmodel:nvhaiwen', function ()
    TriggerEvent(Config) -- 触发配置事件
    if not wheel then
        wheel = true
        local ped = GetPlayerPed(-1) -- 获取玩家角色
        local position = GetEntityCoords(ped, false) -- 获取玩家的位置
        local object = GetClosestObjectOfType(position.x, position.y, position.z, 15.0, GetHashKey(Config.prop3), false, false, false)
        if object ~= 0 then
            DeleteObject(object) -- 删除附近的物体
        end

        local x, y, z = table.unpack(GetEntityCoords(ped)) -- 解包坐标
        local prop = CreateObject(GetHashKey(Config.prop3), x, y, z + 0.0, true, true, true)
        local boneIndex = GetPedBoneIndex(ped, 64524) -- 使用右腿骨骼索引
        -- 调整位置偏移,使饰品在右腿旁边,并翻转
        AttachEntityToEntity(prop, ped, boneIndex, 0.3, 0.0, -0.1, 0.0, 0.0, 180.0, true, true, false, true, 1, true) 
    else
        local ped = GetPlayerPed(-1)
        local position = GetEntityCoords(ped, false)
        local object = GetClosestObjectOfType(position.x, position.y, position.z, 15.0, GetHashKey(Config.prop3), false, false, false)
        if object ~= 0 then
            DeleteObject(object)
        end

        local x, y, z = table.unpack(GetEntityCoords(ped))
        local prop = CreateObject(GetHashKey(Config.prop3), x, y, z + 0.0, true, true, true)
        local boneIndex = GetPedBoneIndex(ped, 64524) -- 使用右腿骨骼索引
        -- 调整位置偏移,使饰品在右腿旁边,并翻转
        AttachEntityToEntity(prop, ped, boneIndex, 0.3, 0.0, -0.1, 0.0, 0.0, 180.0, true, true, false, true, 1, true) 

        ClearPedTasks(ped)
        wheel = false
        DetachEntity(prop, ped, boneIndex, 0.10, 0.01, 0.00, 0.0, 0.0, 180.0, true, true, false, true, 1, true)
        DeleteObject(prop)
    end
end)

### 修改说明:
1. 在 `AttachEntityToEntity` 函数的旋转参数中,您可以调整最后三个参数(即 `0.0, 0.0, 180.0`),其中:
   - 第一个参数(俯仰)为 `0.0`;
   - 第二个参数(偏航)为 `0.0`;
   - 第三个参数(滚转)为 `180.0`,用于将物体旋转180度,使其翻转过来。

此代码依然应放在 `client.lua` 文件中,以保持与客户端相关操作的统一。您可以根据实际效果进一步微调旋转角度以实现最佳效果。
回复

使用道具 举报

文明发言,和谐互动
文明发言,和谐互动
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|首页 ( 冀ICP备2021005225号-1 ) |网站地图

GMT+8, 2025-3-13 02:57 , Processed in 0.083691 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2013 ELITE论坛【技术无价-分享快乐】

快速回复 返回顶部 返回列表