Easzy's Ammo NPC

Easzy's Ammo NPC 1.0.0

Inscrivez-vous et acheter une licence pour 1.99 EUR
  • Initiateur de la discussion Easzy
  • Date de début
  • Initiateur de la discussion
Easzy

Easzy

Dev Glua
Messages
105
Score réaction
9
Points
115
Easzy a posté une nouvelle ressource :

Easzy's Ammo NPC - NPC depuis lequel on peut acheter des munitions.

PRÉSENTATION

Cet addon permet d'acheter des munitions à partir d'un NPC.
L'accès au NPC peut être restreint afin qu'uniquement le vendeur d'armes ne puisse y accéder.
Il est aussi possible de désactiver le texte au-dessus du NPC.

IMAGES

Voici le NPC avec un texte de description au dessus.

Regarde la pièce jointe 67546

Voici le menu :

Regarde la pièce jointe 67545

Erreur si le joueur n'est pas vendeur d'armes :

Regarde la pièce jointe 67547...
En savoir plus sur cette ressource...
 
SkyviewRL

SkyviewRL

Directeur ZONE FIRE
Messages
80
Score réaction
27
Points
60
Pourquoi ne crée tu pas un système de NPC personnalisable a la place de sortir plein d'addons pour un même pnj modifié
 
  • J'aime
Réactions: Geriel
W

WesbeauYT

Geek
Messages
68
Score réaction
1
Points
90
possible de savoir pk il fait une erreur meme je les pas config juste mi sur le serv il souvre pas il fait un erreur directement
 
W

WesbeauYT

Geek
Messages
68
Score réaction
1
Points
90
[ez_ammo_npc] addons/ez_ammo_npc/lua/ezammonpc/client/open_ammo_menu.lua:24: attempt to index field 'tablet' (a nil value)
1. openAmmoMenu - addons/ez_ammo_npc/lua/ezammonpc/client/open_ammo_menu.lua:24
2. func - addons/ez_ammo_npc/lua/ezammonpc/client/open_ammo_menu.lua:86
3. unknown - lua/includes/extensions/net.lua:38 (x3)
 
W

WesbeauYT

Geek
Messages
68
Score réaction
1
Points
90
allor lereur je les regler sans laide du dev car impossible davoire une reponsse faut remplacer le fichier open_ammo_menu.lua faite copier coller des ligne suivante:

local function closeAmmoMenu()
if easzy.ammonpc.ammoMenu then easzy.ammonpc.ammoMenu:Remove() end
end

local function canBuyAmmo(item)
local ply = LocalPlayer()

if item.customCheck and not item.customCheck(ply) then return false, true end

local canbuy, suppress, message, price = hook.Call("canBuyAmmo", nil, ply, item)
local cost = price or item.getPrice and item.getPrice(ply, item.price) or item.price
if not ply:canAfford(cost) then return false, false, message, cost end

if canbuy == false then
return false, suppress, message, price
end

return true, nil, message, price
end

local function openAmmoMenu()
local frameWide = easzy.ammonpc.respX(900)
local frameTall = easzy.ammonpc.respY(600)
local itemMargin = (ScrH() / 1080) * 40
local itemSize = (frameWide - 2*itemMargin)/4 - 3/4*itemMargin

local frame = vgui.Create('EZAmmoFrame')
frame:SetSize(frameWide, frameTall)
frame:Center()
frame:SetTitle('Munitions')
frame:MakePopup()
frame.Paint = function(s, w, h)
draw.RoundedBox(10, 0, 0, w, h, easzy.ammonpc.colors.gray30)
end

local scroll = vgui.Create('DScrollPanel', frame)
scroll:Dock(FILL)
scroll:DockMargin(itemMargin, itemMargin/4, itemMargin, itemMargin)
scroll:GetVBar():SetWide(0)

local iconLayout = vgui.Create('DIconLayout', scroll)
iconLayout:Dock(FILL)
iconLayout:SetLayoutDir(TOP)
iconLayout:SetSpaceY(itemMargin)
iconLayout:SetSpaceX(itemMargin)

local ammoItems = {}

for _, ammoCategorie in ipairs(DarkRP.getCategories().ammo) do
table.Add(ammoItems, ammoCategorie.members)
end

-- if easzy.ammonpc.config.sortByRatioEnergyPrice then
-- table.sort(ammoItems, function(a, b)
-- return a.energy/a.price > b.energy/b.price
-- end)
-- end

for _, ammo in ipairs(ammoItems) do
if not canBuyAmmo(ammo) then continue end

local button = vgui.Create('DButton', iconLayout)
button:SetSize(itemSize, itemSize)
button.Paint = function(s, w, h)
draw.RoundedBox(10, 0, 0, w, h, easzy.ammonpc.colors.gray40)
draw.SimpleText(DarkRP.formatMoney(ammo.price), 'EZGidole18', w/2, h*0.8, easzy.ammonpc.colors.white, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM)
draw.SimpleText(ammo.name .. ' - ' .. ammo.category, 'EZGidole18', w/2, h*0.95, easzy.ammonpc.colors.white, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM)
return true
end
button.DoClick = function()
RunConsoleCommand('DarkRP', 'buyammo', ammo.id)
end

local modelMargin = button:GetWide()/3
local model = vgui.Create('ModelImage', button)
model:SetSize(itemSize*2/3, itemSize*2/3)
model:SetPos(itemSize*1/6, 0)
model:SetMouseInputEnabled(false)
model:SetModel(ammo.model)
end

easzy.ammonpc.ammoMenu = frame
end

net.Receive('ezammonpc_open_ammo_menu', function()
openAmmoMenu()
end)
 
W

WesbeauYT

Geek
Messages
68
Score réaction
1
Points
90
a la place des emojii mettez deux point comme seci : avec les deux L sa a compter comme un emojii dsl
 
Yoh Sambre ♪

Yoh Sambre ♪

Shaman Fou
Messages
15 806
Score réaction
9 514
Points
1 845
WesbeauYT à dit:
allor lereur je les regler sans laide du dev car impossible davoire une reponsse faut remplacer le fichier open_ammo_menu.lua faite copier coller des ligne suivante:

local function closeAmmoMenu()
if easzy.ammonpc.ammoMenu then easzy.ammonpc.ammoMenu:Remove() end
end

local function canBuyAmmo(item)
local ply = LocalPlayer()

if item.customCheck and not item.customCheck(ply) then return false, true end

local canbuy, suppress, message, price = hook.Call("canBuyAmmo", nil, ply, item)
local cost = price or item.getPrice and item.getPrice(ply, item.price) or item.price
if not ply:canAfford(cost) then return false, false, message, cost end

if canbuy == false then
return false, suppress, message, price
end

return true, nil, message, price
end

local function openAmmoMenu()
local frameWide = easzy.ammonpc.respX(900)
local frameTall = easzy.ammonpc.respY(600)
local itemMargin = (ScrH() / 1080) * 40
local itemSize = (frameWide - 2*itemMargin)/4 - 3/4*itemMargin

local frame = vgui.Create('EZAmmoFrame')
frame:SetSize(frameWide, frameTall)
frame:Center()
frame:SetTitle('Munitions')
frame:MakePopup()
frame.Paint = function(s, w, h)
draw.RoundedBox(10, 0, 0, w, h, easzy.ammonpc.colors.gray30)
end

local scroll = vgui.Create('DScrollPanel', frame)
scroll:Dock(FILL)
scroll:DockMargin(itemMargin, itemMargin/4, itemMargin, itemMargin)
scroll:GetVBar():SetWide(0)

local iconLayout = vgui.Create('DIconLayout', scroll)
iconLayout:Dock(FILL)
iconLayout:SetLayoutDir(TOP)
iconLayout:SetSpaceY(itemMargin)
iconLayout:SetSpaceX(itemMargin)

local ammoItems = {}

for _, ammoCategorie in ipairs(DarkRP.getCategories().ammo) do
table.Add(ammoItems, ammoCategorie.members)
end

-- if easzy.ammonpc.config.sortByRatioEnergyPrice then
-- table.sort(ammoItems, function(a, b)
-- return a.energy/a.price > b.energy/b.price
-- end)
-- end

for _, ammo in ipairs(ammoItems) do
if not canBuyAmmo(ammo) then continue end

local button = vgui.Create('DButton', iconLayout)
button:SetSize(itemSize, itemSize)
button.Paint = function(s, w, h)
draw.RoundedBox(10, 0, 0, w, h, easzy.ammonpc.colors.gray40)
draw.SimpleText(DarkRP.formatMoney(ammo.price), 'EZGidole18', w/2, h*0.8, easzy.ammonpc.colors.white, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM)
draw.SimpleText(ammo.name .. ' - ' .. ammo.category, 'EZGidole18', w/2, h*0.95, easzy.ammonpc.colors.white, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM)
return true
end
button.DoClick = function()
RunConsoleCommand('DarkRP', 'buyammo', ammo.id)
end

local modelMargin = button:GetWide()/3
local model = vgui.Create('ModelImage', button)
model:SetSize(itemSize*2/3, itemSize*2/3)
model:SetPos(itemSize*1/6, 0)
model:SetMouseInputEnabled(false)
model:SetModel(ammo.model)
end

easzy.ammonpc.ammoMenu = frame
end

net.Receive('ezammonpc_open_ammo_menu', function()
openAmmoMenu()
end)
si l'auteur de la ressource ne répond pas il faudrait peux étre signaler la ressource pour éviter que les gens soit dans la méme situation que toi ;)
 
W

WesbeauYT

Geek
Messages
68
Score réaction
1
Points
90
Yoh Sambre ♪ à dit:
si l'auteur de la ressource ne répond pas il faudrait peux étre signaler la ressource pour éviter que les gens soit dans la méme situation que toi ;)
ses sur mais la jai reffait a laide dun amie a reffaire tout le code et il fonctionne bien donc esque ses nécessaire si oui allor je signalerais
 
Yoh Sambre ♪

Yoh Sambre ♪

Shaman Fou
Messages
15 806
Score réaction
9 514
Points
1 845
WesbeauYT à dit:
ses sur mais la jai reffait a laide dun amie a reffaire tout le code et il fonctionne bien donc esque ses nécessaire si oui allor je signalerais
il est préférabler de signaler a la modération que la ressource est complétement broken , ça évitera au autres de se faire arnaquer ;p
 
Discord d'entraide
Rejoignz-nous sur Discord