物品赠送时数量错误的 bug

我需要你的帮助。

我们有一个问题,玩家可以将比正常情况下可装载更多的物品放入库存(例如:我没有"25"个三明治,但如果我以"025"为值,我就能赠送给另一个玩家25个)。

有人知道我该如何解决这个问题吗?

代码片段如下:

(服务器端):

RegisterNetEvent('grv_inventory:giveItem')
AddEventHandler('grv_inventory:giveItem', function(name, count, target)
    local _source = source
    local xPlayer = ESX.GetPlayerFromId(_source)
    local xTarget = ESX.GetPlayerFromId(target)

    if item == 'bandage' or 'bread' or 'bulletproof' or 'clip' or 'contract' or 'cuffs' or 'cuff_keys' or 'drill' or 'fixkit' or 'jewels' or 'medikit' or 'meth' or 'phone' or 'water' or 'kroeten' or 'kroeten_pooch' or 'ephi' or 'aramidfasern' or 'aramid' or 'kevlar' or 'holz' or 'schraube' or 'huelse' or 'radio' or 'bauxit' or 'aluminiumoxid' or 'aluminium' or 'eisenerz' or 'magazin' or 'trauben' or 'traubenverarbeitet' or 'lspdstandard' or 'orangen' or 'orangenverarbeitet' or 'lsfstandard' or 'weedsamen' or 'weed' or 'joint' or 'kocher' or 'tfcoupon' or 'ffcoupon' or 'teddy' or 'rose' or 'srose' or 'kaffee' or 'cola' or 'steine' or 'fib1' or 'fib2' or 'fib3' or 'lspdweste1' or 'lspdweste2' or 'lspdweste3' then
    xPlayer.removeInventoryItem(name, count)
    xTarget.addInventoryItem(name, count)
    TriggerClientEvent('esx:showNotification', target, "你获得了 " ..count.. "x " ..name.. "")

    TriggerClientEvent('grv_inventory:setMax', source, count)
    end
end)

(客户端):

``` RegisterNUICallback('give', function(data, cb) toggleField(false) SetNuiFocus(false, false) local playerPed = GetPlayerPed(-1) loadAnimDict('anim@mp_snowball') local player, dist = ESX.Game.GetClosestPlayer()

if player == -1 or dist > 3.0 then
    ESX.ShowNotification('附近没有人')
else
    TaskPlayAnim(PlayerPedId(), 'anim@mp_snowball', 'pickup_snowball', 8.0, -1, -1, 0, 1, 0, 0, 0)
    Citizen.Wait(1300)
    ClearPedTasksImmediately(playerPed)
    TriggerServerEvent('grv_inventory:giveItem', data.item, data.amount, GetPlayerServerId(player))
    ESX.ShowNotification(("你给%s发了%s个%s"):format(player, data.amount, data.label))
end

cb('ok')

end)

```非常感谢!

点赞
用户1442917
用户1442917

你有几个问题:

  1. 比较语句 if item == 'bandage' or 'bread' ... then 不会做你期望的事情,因为 bread 会被评估为 true (因为它没有与 item 的值进行比较),所以无论实际值或 item 是什么,整个表达式都会被评估为 true。你需要重新编写为 it item == 'bandage' or item = 'bread' ... and so on
  2. 我没有看到任何可用物品的比较,所以要么是发生在别的地方并且因为第一个问题没有应用,要么就没有做。
2021-04-15 21:57:44