Как сделать так, чтобы при покупки донат пистолета/винтовки и т.д, выдавались бесконечные патроны?
если не сложно, дайте код =(
Привет, не проверял, но работать должно
Это помести в sv часть
function InfiniteAmmo()
local v = LocalPlayer()
if v:HasPurchase("infiniteammo") then
weapon = v:GetActiveWeapon()
if IsValid(weapon) then
local maxClip = weapon:GetMaxClip1()
local maxClip2 = weapon:GetMaxClip2()
local primAmmoType = weapon:GetPrimaryAmmoType()
local secAmmoType = weapon:GetSecondaryAmmoType()
if maxClip == -1 and maxClip2 == -1 then
maxClip = 100
maxClip2 = 100
end
if maxClip <= 0 and primAmmoType ~= -1 then
maxClip = 1
end
if maxClip2 == -1 and secAmmoType ~= -1 then
maxClip2 = 1
end
if maxClip > 0 then
weapon:SetClip1(maxClip)
end
if maxClip2 > 0 then
weapon:SetClip2(maxClip2)
end
if primAmmoType ~= -1 then
v:SetAmmo( maxClip, primAmmoType, true)
end
if secAmmoType ~= -1 and secAmmoType ~= primAmmoType then
v:SetAmmo( maxClip2, secAmmoType, true)
end
end
end
end
hook.Add("Think", "InfiniteAmmo", InfiniteAmmo)
ох, спасибо Тебе Товарищ =)))))
а sv создавать нужно?
да, в igs_modification в папке autorun создай папку server, а там создаешь файл, например, sv_infiniteammo.lua, и туда вставляешь код, если не будет работать - пиши о багах в консоли, там все пишется, жду)
p.s. это для отдельной привилегии, если у пользователя куплен предмет с ID infiniteammo в автодонате, то будут бесконечные патроны, если надо сразу с покупкой оружия в донате - пиши в дс Decoder#1915, помогу
Понятно, помощь пригодилась бы Твоя Дружище
Фикшенная версия:
function InfiniteAmmo()
for k,v in pairs (player.GetAll()) do
if v:HasPurchase("infiniteammo") then
weapon = v:GetActiveWeapon()
if IsValid(weapon) then
local maxClip = weapon:GetMaxClip1()
local maxClip2 = weapon:GetMaxClip2()
local primAmmoType = weapon:GetPrimaryAmmoType()
local secAmmoType = weapon:GetSecondaryAmmoType()
if maxClip == -1 and maxClip2 == -1 then
maxClip = 100
maxClip2 = 100
end
if maxClip <= 0 and primAmmoType ~= -1 then
maxClip = 1
end
if maxClip2 == -1 and secAmmoType ~= -1 then
maxClip2 = 1
end
if maxClip > 0 then
weapon:SetClip1(maxClip)
end
if maxClip2 > 0 then
weapon:SetClip2(maxClip2)
end
if primAmmoType ~= -1 then
v:SetAmmo( maxClip, primAmmoType, true)
end
if secAmmoType ~= -1 and secAmmoType ~= primAmmoType then
v:SetAmmo( maxClip2, secAmmoType, true)
end
end
end
end
end
hook.Add("Think", "InfiniteAmmo", InfiniteAmmo)
Для работы нужно создать в IGS предмет с ID infiniteammo
Предупреждение от себя. В скрипте сверху используется Think хук, а в нем тяжелый цикл прохода по всем игрокам на сервере с хорошим наборчиком инструкций
Добавил в IGS метод ITEM:SetInfAmmo()
, который более оптимизированный и делает то же самое
Пример:
IGS("Бесконечные патроны", "infammo", 100)
:SetInfAmmo()
:SetTerm(10)
Нашел более рабочий способ только выдает не всегда и приходится покупать патроны чтобы он выдал 999
IGS("999 патронов", "ammos")
:SetPrice(299)
:SetDescription("При каждом спавне выдает вам патроны\n\nЕсли патроны не выдались то просто купите 1 коробку")
:SetTerm(30)
:SetCategory("Прочее")
hook.Add("PlayerLoadout", "IGS.Ammo", function(pl)
if pl:HasPurchase("ammos") then
for k, v in pairs(game.GetAmmoTypes()) do
pl:GiveAmmo(999,k)
end
end
end)
hook.Add("PlayerAmmoChanged", "IGS.Ammo", function(pl, id, old, new)
if pl:HasPurchase("ammos") and new <= 900 then
pl:GiveAmmo(999, id)
end
end)
Этот способ выдаст много патронов, но один раз, хотя в целом, решение более подходящее в большинстве случаев.