所以这个题涉及到通过多种语言传递具体参数的过程;本质上,我在 JS 中有一段代码充当 Web 浏览器(具有用于 UI 的 html/css),当用户选择购买商品时,它将将该商品、价格和数量传递给 LUA 脚本,其中所述 LUA 脚本然后将其传递给另一个函数,在该函数中对其进行完全排序(LUA 端区分客户端和服务器命令,所以是的,它必须进行此交互),如下图所示:
$("#blackmarket-1-order").click(function() {
$('.ui-body').hide();
$('#processTXT').show();
$(".loader").show();
$(".ui-body").delay(2500).fadeIn(); -- ignore this stuff, this is just html loading to appear nice
$("#processTXT").delay(2500).fadeOut();
$(".loader").delay(2500).fadeOut();
$.post('http://lua-script/order', JSON.stringify({ -- this is important, passes the three items below to the lua script order function, which works, and is received as it should be.
item: "meat2",
price: 250,
amount: 1
}))
});
$("#blackmarket-2-order").click(function() {
$('.ui-body').hide();
$('#processTXT').show();
$(".loader").show();
$(".ui-body").delay(2500).fadeIn();
$("#processTXT").delay(2500).fadeOut();
$(".loader").delay(2500).fadeOut();
$.post('http://lua-script/order', JSON.stringify({
item: "burger-bun",
price: 5,
amount: 50
}))
});
这是接收订单的 LUA 函数:
RegisterNUICallback("order", function(data)
print(data.item.. " : " ..data.amount.. ": $ " ..data.price)
TriggerServerEvent('server:processPrice', data)
TriggerEvent('server:processItems' , data)
TriggerEvent('notification', "worked", 1)
end)
这一切都如你所想,然而,它目前设置为只给播放器/显示一组项目;购买时,它传递一个项目、一个价格和一个数量值,然后由 LUA 脚本处理并按应有的方式分发。我想要发生的是让用户能够在“meat2”项目和“burger-bun”上按下购买,并将列表传递到 LUA 函数中,然后可以使用 while 循环分发两个项目及其各自的数量,甚至可能更多项目,具体取决于用户按下购买的次数/要购买的项目数量。我对 JS 和部分 LUA 比较陌生,但我假设您可以将每个获得 JSON.stringified 的“购买”存储在 LUA 脚本中的列表中,
感谢您的帮助,如果需要,我愿意澄清。
更多参考:传递给 LUA 脚本布尔值的 JS 关闭函数,触发 ui 设置为 false
function close(){
$(".blackmarket-body").delay(2500).fadeIn();
$("#processTXT").delay(2500).fadeOut();
$(".loader").delay(2500).fadeOut();
setTimeout(() => {
$.post('http://lua-script/exit', JSON.stringify({}));
}, 2900);
}
UI 的样子: UI 中的购买按钮