• Help with creating a Maximum ammo-pool
    3 replies, posted
I can't seem to figure out how to limit one's maximum ammo that the player can carry. I know Sk_ commands do not work in Gmod, But is there an LUA script or something I can use that allows you to Cap off the ammo you are carrying? I would really appreciate someone helping because I've looked all over other threads to find this out, but to no avail. :/
I have a script I used for my gamemode, here's the code if you want to use it: [lua] -- The ammo limit for each ammo type, you will have to find out the additional ones -- The ones working are listed on [url]http://wiki.garrysmod.com/?title=Player.GiveAmmo[/url] local AMMO_TYPES = {} AMMO_TYPES["Pistol"] = 168 AMMO_TYPES["357"] = 18 AMMO_TYPES["SMG1"] = 270 AMMO_TYPES["SMG1_Grenade"] = 3 AMMO_TYPES["AR2"] = 90 AMMO_TYPES["AR2AltFire"] = 3 AMMO_TYPES["Buckshot"] = 36 AMMO_TYPES["XBowBolt"] = 11 AMMO_TYPES["RPG_Round"] = 2 AMMO_TYPES["Grenade"] = 4 -- You do not need to edit anything below this line, but if you know what you're doing, go right ahead. local ITEM_CONV_TYPES = {} ITEM_CONV_TYPES["Pistol"] = "weapon_pistol" ITEM_CONV_TYPES["357"] = "weapon_357" ITEM_CONV_TYPES["SMG1"] = "weapon_smg1" ITEM_CONV_TYPES["AR2"] = "weapon_ar2" ITEM_CONV_TYPES["Buckshot"] = "weapon_shotgun" ITEM_CONV_TYPES["XBowBolt"] = "weapon_crossbow" ITEM_CONV_TYPES["Grenade"] = "weapon_frag" ITEM_CONV_TYPES["RPG_Round"] = "weapon_rpg" hook.Add("Think", "LimitPlayerAmmo", function() for _,pl in pairs(player.GetAll()) do for k,v in pairs(AMMO_TYPES) do local ammo = pl:GetAmmoCount(k) local plus = 0 if ITEM_CONV_TYPES[k] then if pl:HasWeapon(ITEM_CONV_TYPES[k]) then plus = pl:GetWeapon(ITEM_CONV_TYPES[k]):Clip1() end end if (ammo+plus) > v then pl:RemoveAmmo((ammo+plus)-v, k) end end end end) [/lua]
[QUOTE=leiftiger;30525304]I have a script I used for my gamemode, here's the code if you want to use it: [lua] -- The ammo limit for each ammo type, you will have to find out the additional ones -- The ones working are listed on [url]http://wiki.garrysmod.com/?title=Player.GiveAmmo[/url] local AMMO_TYPES = {} AMMO_TYPES["Pistol"] = 168 AMMO_TYPES["357"] = 18 AMMO_TYPES["SMG1"] = 270 AMMO_TYPES["SMG1_Grenade"] = 3 AMMO_TYPES["AR2"] = 90 AMMO_TYPES["AR2AltFire"] = 3 AMMO_TYPES["Buckshot"] = 36 AMMO_TYPES["XBowBolt"] = 11 AMMO_TYPES["RPG_Round"] = 2 AMMO_TYPES["Grenade"] = 4 -- You do not need to edit anything below this line, but if you know what you're doing, go right ahead. local ITEM_CONV_TYPES = {} ITEM_CONV_TYPES["Pistol"] = "weapon_pistol" ITEM_CONV_TYPES["357"] = "weapon_357" ITEM_CONV_TYPES["SMG1"] = "weapon_smg1" ITEM_CONV_TYPES["AR2"] = "weapon_ar2" ITEM_CONV_TYPES["Buckshot"] = "weapon_shotgun" ITEM_CONV_TYPES["XBowBolt"] = "weapon_crossbow" ITEM_CONV_TYPES["Grenade"] = "weapon_frag" ITEM_CONV_TYPES["RPG_Round"] = "weapon_rpg" hook.Add("Think", "LimitPlayerAmmo", function() for _,pl in pairs(player.GetAll()) do for k,v in pairs(AMMO_TYPES) do local ammo = pl:GetAmmoCount(k) local plus = 0 if ITEM_CONV_TYPES[k] then if pl:HasWeapon(ITEM_CONV_TYPES[k]) then plus = pl:GetWeapon(ITEM_CONV_TYPES[k]):Clip1() end end if (ammo+plus) > v then pl:RemoveAmmo((ammo+plus)-v, k) end end end end) [/lua][/QUOTE] Thanks a ton!
Does that really need to be in a think hook? It seems rather expensive, why not put it on a timer that runs every 0.5 seconds.
Sorry, you need to Log In to post a reply to this thread.