Entité NPC Basique

Ce tutoriel va vous apprendre à créer une entité NPC basique.

► Préparation de votre entité

1. Vous devez réfléchir afin de choisir un nom pour votre entité qu'il soit unique à votre projet et à ce qu'il représente.
    Pour l'exemple de ce tutoriel on va appeler notre entité "ent_tutoriel".

2. Vous devez maintenant créer le dossier de votre entité avec ce nom à cet endroit : "lua/entities/ent_tutoriel".

3. Vous devez créer 3 fichiers dans ce dossier de votre entité : "shared.lua, init.lua, cl_init.lua".

► Les scripts des 3 fichiers de votre entité

1. Vous devez mettre ce script dans le fichier shared.lua :

ENT.Type         = "ai"
ENT.Base         = "base_ai"

ENT.Author       = "David"
ENT.Contact      = "_David_#3780"
ENT.PrintName    = "Un NPC"
ENT.Category     = "Tutoriels Modding-Source"
ENT.Purpose      = "Jouez avec ce NPC."
ENT.Instructions = "Faite ce que vous voulez avec ce NPC."

ENT.Spawnable    = true
ENT.AdminOnly    = true

--ENT.RenderGroup  = RENDERGROUP_BOTH

ENT.AutomaticFrameAdvance = true

function ENT:SetupDataTables()
	--self:NetworkVar("Entity", 0, "owning_ent")
end

function ENT:SetAutomaticFrameAdvance(bUsingAnim)
	self.AutomaticFrameAdvance = bUsingAnim
end

2. Vous devez mettre ce script dans le fichier init.lua :

AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include("shared.lua")

function ENT:Initialize()
	self:SetModel("models/gman_high.mdl")
	self:SetHullType(HULL_HUMAN)
	self:SetHullSizeNormal()
	self:SetNPCState(NPC_STATE_SCRIPT)
	self:SetSolid(SOLID_BBOX)
	self:SetUseType(SIMPLE_USE)
	self:SetBloodColor(BLOOD_COLOR_RED)
	self:CapabilitiesAdd(CAP_ANIMATEDFACE, CAP_TURN_HEAD)
	self:SetMaxYawSpeed(90)
	self:DropToFloor()
end

function ENT:SpawnFunction(ply, tr, class)
	if not tr.Hit then return end
	
	local spawnAng = ply:EyeAngles()
	spawnAng.p = 0
	spawnAng.y = spawnAng.y + 180

	local ent = ents.Create(class)
	ent:SetPos(tr.HitPos + tr.HitNormal * 16)
	ent:SetAngles(spawnAng)
	ent:Spawn()
	ent:Activate()

	return ent
end

function ENT:AcceptInput(name, activator, caller)
	if name == "Use" and caller:IsPlayer() then
		-- TODO
	end
end

3. Vous devez mettre ce script dans le fichier cl_init.lua :

include("shared.lua")

function ENT:Draw()
	self:DrawModel()
end

function ENT:DrawTranslucent()
	self:Draw()
end

► Utiliser votre entité en jeu

1. Il vous reste plus qu'a bien enregistrer vos 3 fichiers et démarrer/redémarrer votre serveur de jeu.

2. Le serveur de jeu est bien démarré; vous pouvez maintenant lancer votre jeu et de vous y connecter.

3. Une fois connecté dans votre serveur de jeu, vous pouvez ouvrir le panneau des props (+menu).

4. Dirigez-vous dans l'onglet Entities puis dans votre catégorie, pour ce tutoriel ça sera "Tutoriels Modding-Source".

5. Enfin vous pourrez lui cliquer dessus pour le spawn en jeu et à vous les joies de votre nouvelle entité 😉