My current reloading logic is wrong and leading to problems. I am trying to make it so you gain ammo logically. This is very annoying.
For an example lets say the full magazine can hold 10 ammo. You have in total 100 ammo. You use up the magazine and reload. Your total ammo is now 90, however, lets say you have 0 magazine ammo but 3 ammo in total. You reload and only get 3 instead of 10 for the magazine ammo. I am trying to achieve that.
My code:
if magAmmo.Value >= totalAmmo.Value then
magAmmo.Value += totalAmmo.Value
end
totalAmmo.Value -= math.min(totalAmmo.Value,math.abs(8-magAmmo.Value))
if magAmmo.Value < totalAmmo.Value then
local numbersNeededToEqual8 = 8-magAmmo.Value
magAmmo.Value += numbersNeededToEqual8
end
if magAmmo.Value > 8 then
magAmmo.Value = 8
end
Sorry for the late response but do you have any idea how to implement that into my code? I tried something like this,
magAmmo.Value += math.clamp(totalAmmo.Value,0,8)
totalAmmo.Value -= magAmmo.Value
if magAmmo.Value > 8 then
magAmmo.Value = 8
end
if totalAmmo.Value < 0 then
totalAmmo.Value = 0
end
``
local MaxClip = 8
local MaxAmmo = 100
local CurrentClip = MaxClip
local CurrentAmmo = MaxAmmo
local function Reload()
if CurrentClip >= MaxClip then return warn'You don\'t need to reload, your clip is full' end
if CurrentAmmo <= 0 then return warn'You don\'t have any ammo to load' end
local FillAmount = math.min(MaxClip - CurrentClip, CurrentAmmo)
print(string.format("Refilling %d bullets, %d ammo left", FillAmount, CurrentAmmo - FillAmount))
CurrentClip += FillAmount
CurrentAmmo -= FillAmount
print(string.format("After reload: %d / %d", CurrentClip, CurrentAmmo))
end
Reload() --> You don't need to reload, your clip is full
CurrentClip = 5
Reload() --> Refilling 3 bullets, 97 ammo left
--> After reload: 8 / 97
CurrentAmmo = 0
CurrentClip = 8
Reload() --> You don't need to reload, your clip is full
CurrentClip = 7
Reload() --> You don't have any ammo to load
CurrentAmmo = 100
CurrentClip = 0
Reload() --> Refilling 8 bullets, 92 ammo left
--> After reload: 8 / 92
CurrentAmmo = 4
CurrentClip = 2
Reload() --> Refilling 4 bullets, 0 ammo left
--> After reload: 6 / 0