2

I have a script where I have many variables for different guns. There are

UMP45Ammo = false
UMP45Fov = false

AKMAmmo = false
AKMFov = false

etc I got like 12 guns and more variables

Then I have a global variable called cgun

My problem is when a button is clicked I wanna change the value of selected guns specific property(like ammo to true)

So I tried something like
cgun+Ammo = true and I tried even making new local variable

mgun1 = cgun+Ammo 
mgun1 = true

etc. How can I do this or is it impossible?

4

2 回答 2

4

使用物体来描述枪支可能会更好。然后很容易改变当前枪的枪属性。

-- gun list
UMP45 = {Ammo = false, Fov = false}
AKMA = {Ammo = false, Fov = false}

cgun = UMP45  -- set current gun
print(cgun.Ammo)

cgun.Ammo = true -- set Ammo of current gun
print(cgun.Ammo)
于 2020-07-20T14:19:31.977 回答
0

是的,可以使用 _G 变量访问全局内存。它有效,但在这种情况下很难看:

_G[cgun.."Ammo"] = 0

请注意,如果 cgun 是引用,则必须使用 debug.getlocal 或使用简单搜索将其更改为字符串:

 for k, v in pairs(_G) do if v == cgun then _G[k.."Ammo"] = 0 break end

同样,这不是一个很好的解决方案。一般来说,你不想用很多变量污染全局空间_G。

只需按照 Mike 的建议存储对您当前枪支的引用即可。

currentGun = { ammo = 10, name = "AK47" }
于 2020-07-21T12:03:42.153 回答