0

我正在努力在我的 FiveM 服务器上成功触发服务器事件。或者它可能被触发但服务器事件不正确。但是我没有收到任何错误,我不知道要修复什么...

服务器端

RegisterServerEvent('carwash:pay')
AddEventHandler('carwash:pay', function()
    local _source = source
    local price = 20
    local identifier = GetPlayerIdentifier(_source)
    MySQL.Async.fetchAll("SELECT * FROM economy WHERE identifier = @identifier", {
    ['@identifier'] = identifier
    }, function(result)
        if result >= 20 then
    MySQL.Async.execute('UPDATE economy SET cash = cash - @price WHERE identifier = @identifier',
    { ['@identifier'] = identifier, ['@price'] = price }
    )
        end
    end)
end)

客户端

TriggerServerEvent('carwash:pay')
4

1 回答 1

0

我不知道你是否还在努力或想通了,但对于那些有同样问题的人,我会回答这个问题。

这里的问题是您将整个表 (SELECT * FROM Economy...) 与数字 20 进行比较。

此外,“fetchAll”总是会输出一个数组,因此,为了从表经济中访问列cash,您需要使用“result[1].cash”。

然后,有时“错误”不是语法错误,您需要在这里和那里放置一些“print()”以了解它在哪里停止、更改或只是检查它是否有效。

例如:

RegisterServerEvent('carwash:pay')
AddEventHandler('carwash:pay', function()
    local _source = source
    local price = 20
    local identifier = GetPlayerIdentifier(_source)
    MySQL.Async.fetchAll("SELECT * FROM economy WHERE identifier = @identifier", {['@identifier'] = identifier}, 
    function(result)

        -- CHECK WHAT IT RESULT 
        print(result)

        if result >= 20 then
        MySQL.Async.execute('UPDATE economy SET cash = cash - @price WHERE  identifier = @identifier', { ['@identifier'] = identifier, ['@price'] = price })
        end
    end)
end)
于 2021-09-16T20:24:53.563 回答