- Initiateur de la discussion
E
Enne
Geek
- Messages
- 65
- Score réaction
- 4
- Points
- 90
Salut !
Je suis en train de crée un npc pour mon serveur gmod mais ya un soucis il n'apparait pas dans le menu des props dans etities vous pouvais m'aider ?
garrymod - addon - npcpanel - lua -entities - npc
cl_init.lua :
include('shared.lua')
net.Receive( "NPCPANEL", function()
local Frame = vgui.Create( "DFrame" )
Frame:SetPos( 5, 5 )
Frame:SetSize( 300, 150 )
Frame:Center()
Frame:SetTitle( "" )
Frame:SetVisible( true )
Frame:SetDraggable( false )
Frame:ShowCloseButton( false )
Frame:MakePopup()
Frame.Paint = function( self, w, h ) -- 'function Frameaint( w, h )' works too
draw.RoundedBox( 10, 0, 0, w, h, Color( 0,102,50,200 ) ) -- Draw a red box instead of the frame
end
local Button = vgui.Create( "DButton", Frame )
Button:SetText( "Workshop" )
Button:SetTextColor( Color( 255,255,255 ) )
Button:SetPos( 150, 50 )
Button:SetSize( 100, 30 )
Button.Paint = function( self, w, h )
draw.RoundedBox( 5, 0, 0, w, h, Color( 0,145,65 ) )
self:SetFontInternal( "HudHintTextLarge" )
self:SetFGColor( Color( 255, 255, 255 ) )
end
local Button = vgui.Create( "DButton", Frame )
Button:SetText( "Boutique" )
Button:SetTextColor( Color( 255, 255, 255 ) )
Button:SetPos( 40, 50)
Button:SetSize( 100, 30 )
Button.Paint = function( self, w, h )
draw.RoundedBox( 5, 0, 0, w, h, Color( 0,145,65 ) )
self:SetFontInternal( "HudHintTextLarge" )
self:SetFGColor( Color( 255, 255, 255 ) )
end
local Button = vgui.Create( "DButton", Frame )
Button:SetText( "Fermer" )
Button:SetTextColor( Color( 255,255,255 ) )
Button:SetPos( 90, 85)
Button:SetSize( 100, 30 )
Button.Paint = function( self, w, h )
draw.RoundedBox( 5, 0, 0, w, h, Color( 128,0,0 ) )
self:SetFontInternal( "HudHintTextLarge" )
self:SetFGColor( Color( 255, 255, 255 ) )
end
function ButtonoClick()
Frame:Remove()
end
local Button = vgui.Create( "DButton", Frame )
Button:SetText( "Workshop | Boutique" )
Button:SetTextColor( Color( 255,255,255 ) )
Button:SetPos( 0, 0)
Button:SetSize( 300, 30 )
Button.Paint = function( self, w, h )
draw.RoundedBox( 0, 0, 0, w, h, Color( 128,0,0 ) )
self:SetFontInternal( "HudHintTextLarge" )
self:SetFGColor( Color( 255, 255, 255 ) )
end
hook.Add("PostDrawOpaqueRenderables", "NPCPANEL", function()
for _, ent in pairs (ents.FindByClass("npc")) do
if ent:GetPos()istance(LocalPlayer():GetPos()) < 500 then
local Ang = ent:GetAngles()
Ang:RotateAroundAxis( Ang:Forward(), 90)
Ang:RotateAroundAxis( Ang:Right(), -90)
cam.Start3D2D(ent:GetPos()+ent:GetUp()*76, Ang, 0.10)
draw.SimpleTextOutlined( "NPC PANEL", "my_npc", 0, 0, Color(255,255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 0, Color(255,255,255,255) )
cam.End3D2D()
end
end
end)
-- NOUS ALLONS CRÉER UNE FONT UNIQUEMENT POUR LE NPC AFIN DE POUVOIR MODIFIER LA TAILLE DU TEXTE --
surface.CreateFont( "my_npc", { --< Nom que nous allons placer dans le DRAWSIMPLETEXTOUTLINED juste au dessus.
font = "Arial",
extended = true,
size = 50,
weight = 1000
} )
init.lua :
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include('shared.lua')
function ENT:Initialize()
self:SetModel("models/Humans/Group01/male_07.mdl") --< Modifier ici le skin de votre person
self:SetHullType(HULL_HUMAN) --< NE PAS TOUCHER
self:SetHullSizeNormal() --< NE PAS TOUCHER
self:SetNPCState(NPC_STATE_SCRIPT) --< NE PAS TOUCHER
self:SetSolid(SOLID_BBOX) --< NE PAS TOUCHER
self:CapabilitiesAdd(CAP_ANIMATEDFACE) --< NE PAS TOUCHER
self:SetUseType(SIMPLE_USE) --< NE PAS TOOUCHER
selfropToFloor() --< NE PAS TOUCHER
self:SetMaxYawSpeed(90) --< NE PAS TOUCHER
end
function ENT:OnTakeDamage()
return false
end
util.AddNetworkString( "NPCPANEL" ) --< Nom de la fonction ce trouvant dans le CL_INIT
function ENT:AcceptInput( name, activator, caller )
if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur
net.Start("NPCPANEL") --< Nom de la fonction ce trouvant dans le CL_INIT
net.Send(caller) --< Envoie l'information au serveur
end
end
shared.lua :
ENT.Base = "base_ai"
ENT.Type = "ai"
ENT.PrintName = "Workshop|Boutique"
ENT.Category = "My NPC"
ENT.Instructions = "Approchez vous du NPC et actionnez votre touche [USE]"
ENT.Spawnable = true
ENT.AdminSpawnable = true
ENT.AutomaticFrameAdvance = true
function ENT:SetAutomaticFrameAdvance(byUsingAnim)
self.AutomaticFrameAdvance = byUsingAnim
end
Merci de votra ide !
Je suis en train de crée un npc pour mon serveur gmod mais ya un soucis il n'apparait pas dans le menu des props dans etities vous pouvais m'aider ?
garrymod - addon - npcpanel - lua -entities - npc
cl_init.lua :
include('shared.lua')
net.Receive( "NPCPANEL", function()
local Frame = vgui.Create( "DFrame" )
Frame:SetPos( 5, 5 )
Frame:SetSize( 300, 150 )
Frame:Center()
Frame:SetTitle( "" )
Frame:SetVisible( true )
Frame:SetDraggable( false )
Frame:ShowCloseButton( false )
Frame:MakePopup()
Frame.Paint = function( self, w, h ) -- 'function Frameaint( w, h )' works too
draw.RoundedBox( 10, 0, 0, w, h, Color( 0,102,50,200 ) ) -- Draw a red box instead of the frame
end
local Button = vgui.Create( "DButton", Frame )
Button:SetText( "Workshop" )
Button:SetTextColor( Color( 255,255,255 ) )
Button:SetPos( 150, 50 )
Button:SetSize( 100, 30 )
Button.Paint = function( self, w, h )
draw.RoundedBox( 5, 0, 0, w, h, Color( 0,145,65 ) )
self:SetFontInternal( "HudHintTextLarge" )
self:SetFGColor( Color( 255, 255, 255 ) )
end
local Button = vgui.Create( "DButton", Frame )
Button:SetText( "Boutique" )
Button:SetTextColor( Color( 255, 255, 255 ) )
Button:SetPos( 40, 50)
Button:SetSize( 100, 30 )
Button.Paint = function( self, w, h )
draw.RoundedBox( 5, 0, 0, w, h, Color( 0,145,65 ) )
self:SetFontInternal( "HudHintTextLarge" )
self:SetFGColor( Color( 255, 255, 255 ) )
end
local Button = vgui.Create( "DButton", Frame )
Button:SetText( "Fermer" )
Button:SetTextColor( Color( 255,255,255 ) )
Button:SetPos( 90, 85)
Button:SetSize( 100, 30 )
Button.Paint = function( self, w, h )
draw.RoundedBox( 5, 0, 0, w, h, Color( 128,0,0 ) )
self:SetFontInternal( "HudHintTextLarge" )
self:SetFGColor( Color( 255, 255, 255 ) )
end
function ButtonoClick()
Frame:Remove()
end
local Button = vgui.Create( "DButton", Frame )
Button:SetText( "Workshop | Boutique" )
Button:SetTextColor( Color( 255,255,255 ) )
Button:SetPos( 0, 0)
Button:SetSize( 300, 30 )
Button.Paint = function( self, w, h )
draw.RoundedBox( 0, 0, 0, w, h, Color( 128,0,0 ) )
self:SetFontInternal( "HudHintTextLarge" )
self:SetFGColor( Color( 255, 255, 255 ) )
end
hook.Add("PostDrawOpaqueRenderables", "NPCPANEL", function()
for _, ent in pairs (ents.FindByClass("npc")) do
if ent:GetPos()istance(LocalPlayer():GetPos()) < 500 then
local Ang = ent:GetAngles()
Ang:RotateAroundAxis( Ang:Forward(), 90)
Ang:RotateAroundAxis( Ang:Right(), -90)
cam.Start3D2D(ent:GetPos()+ent:GetUp()*76, Ang, 0.10)
draw.SimpleTextOutlined( "NPC PANEL", "my_npc", 0, 0, Color(255,255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 0, Color(255,255,255,255) )
cam.End3D2D()
end
end
end)
-- NOUS ALLONS CRÉER UNE FONT UNIQUEMENT POUR LE NPC AFIN DE POUVOIR MODIFIER LA TAILLE DU TEXTE --
surface.CreateFont( "my_npc", { --< Nom que nous allons placer dans le DRAWSIMPLETEXTOUTLINED juste au dessus.
font = "Arial",
extended = true,
size = 50,
weight = 1000
} )
init.lua :
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include('shared.lua')
function ENT:Initialize()
self:SetModel("models/Humans/Group01/male_07.mdl") --< Modifier ici le skin de votre person
self:SetHullType(HULL_HUMAN) --< NE PAS TOUCHER
self:SetHullSizeNormal() --< NE PAS TOUCHER
self:SetNPCState(NPC_STATE_SCRIPT) --< NE PAS TOUCHER
self:SetSolid(SOLID_BBOX) --< NE PAS TOUCHER
self:CapabilitiesAdd(CAP_ANIMATEDFACE) --< NE PAS TOUCHER
self:SetUseType(SIMPLE_USE) --< NE PAS TOOUCHER
selfropToFloor() --< NE PAS TOUCHER
self:SetMaxYawSpeed(90) --< NE PAS TOUCHER
end
function ENT:OnTakeDamage()
return false
end
util.AddNetworkString( "NPCPANEL" ) --< Nom de la fonction ce trouvant dans le CL_INIT
function ENT:AcceptInput( name, activator, caller )
if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur
net.Start("NPCPANEL") --< Nom de la fonction ce trouvant dans le CL_INIT
net.Send(caller) --< Envoie l'information au serveur
end
end
shared.lua :
ENT.Base = "base_ai"
ENT.Type = "ai"
ENT.PrintName = "Workshop|Boutique"
ENT.Category = "My NPC"
ENT.Instructions = "Approchez vous du NPC et actionnez votre touche [USE]"
ENT.Spawnable = true
ENT.AdminSpawnable = true
ENT.AutomaticFrameAdvance = true
function ENT:SetAutomaticFrameAdvance(byUsingAnim)
self.AutomaticFrameAdvance = byUsingAnim
end
Merci de votra ide !