Garry's Mod

Garry's Mod

44 ratings
Como hacer SNPCs (DrGBase)
By Joelías_N1
Bienvenidos a estas guías que estare haciendo sobre como hacer SNPCs, ya que, si no llego hacer muchas cosas con esto de Trevor Henderson, pueden hacer sus propias criaturas por su cuenta xd
   
Award
Favorite
Favorited
Unfavorite
Parte 1: Creando a un NPC simple
1. Necesitamos el archivo .lua y caracteristicas NPC
En nuestro caso usaremos DrGBase para hacer nuestro primer nextbot
https://github.com/Dragoteryx/drgbase/wiki/Nextbot-template-file
esa sera su plantilla nextbot, puede copiar y pegar todo eso en un bloc de notas.

RECUERDA: EL ARCHIVO DEBE SER .lua y debe ser algo así como "drg_anxious_dog" o "npc_the_guardian" no lo escriban por separado
tambien el archivo debe estar ubicado en C:\Program Files (x86)\Steam\steamapps\common\GarrysMod\garrysmod\lua\entities\

-- Misc --
ENT.PrintName = "Anxious Dog" -- El nombre del personaje
ENT.Category = "Trevor Henderson" -- En que categoría estara en el spawnmenu
ENT.Models = {"models/trevor_henderson/anxious_dog.mdl"} -- El o Los modelos que tendra el personaje
ENT.Skins = {0} -- Si nuestro personaje usa skins, podemos agregar sus variantes aqui
ENT.ModelScale = 1 -- Que tan grande es el modelo, algunos de mis modelos suelen tener errores al importarse, por eso suelo usar esta variable xd
ENT.CollisionBounds = Vector(10, 20, 72) -- Las colisiones del NPC 10 = X, 20 = Y, 72 = Z
ENT.BloodColor = BLOOD_COLOR_RED -- Color de la sangre, aun no le veo algo util, pero te recomiendo poner el color de sangre que tiene tu personaje
ENT.RagdollOnDeath = true -- El personaje puede morir con ragdoll?

-- Stats --
ENT.SpawnHealth = 3500 -- Vida del personaje
ENT.HealthRegen = 0 -- Si quieres puedes hacer que el personaje pueda regenerar su vida
ENT.MinPhysDamage = 10 -- Cuanto va ser el daño que pueda recibir por la fisica
ENT.MinFallDamage = 10 -- Cuanto daño puede sufrir por caida


2. Modelos y animaciones
Necesitamos un modelo, prueba con algo simple, quizas algo que ya exista.
Si quiere usar algun modelo que ya tiene en gmod, solo debe hacer click derecho sobre eso, y luego copiarlo al portapapeles.
Cuando pegue el date vera que es algo así como "models/..." significa que lo hizo bien, puede elegir las animaciones que quiera, si es un player model, entonces las animaciones de "CAMINAR" y "CORRER" serían "ACT_WALK" y "ACT_RUN" esto no siempre es así con todas las animaciones, pero las más comunes suelen ser esas.

Sí quiere hacer un modelo por su cuenta, debe saber que esta no es su guía xd, basicamente es como hacer un playermodel, puede buscar guías sobre eso aqui, o en youtube.
O si simplemente quiere modelar una criatura nueva, debera buscar tutoriales de como modelar en Blender(recomendado)

-- Animations --
ENT.WalkAnimation = ACT_WALK
ENT.WalkAnimRate = 1
ENT.RunAnimation = ACT_RUN
ENT.RunAnimRate = 1
ENT.IdleAnimation = ACT_IDLE
ENT.IdleAnimRate = 1
ENT.JumpAnimation = ACT_JUMP
ENT.JumpAnimRate = 1

-- Movements --
ENT.UseWalkframes = false
ENT.WalkSpeed = 100
ENT.RunSpeed = 200

3. El ataque
El ataque es lo más importante del personaje, para hacer esto deberemos tener una funcion que sea así

RECUERDEN: Las funciones de un personaje comienzan así "function ENT:ComerCadaver()" y si quieres usarla en otra funcion debes llamarla así "self:ComerCadaver()"

function ENT:AttackFunction()
self:Attack({
damage = 75,
viewpunch = Angle(40, 0, 0),
type = DMG_CRUSH,range=100,angle=135,
}, function(self, hit)
end)
end

ahora vamos a crear la funcion de "OnMeleeAttack" que sera de esta manera

function ENT:OnMeleeAttack(enemy)
self:AttackFunction()
self:PlaySequenceAndMove("seq_baton_swing")
end

como pueden ver, a diferencia de la funcion anterior, esta funcion tiene entre parentesis "enemy" que quiere decir que al usar la funcion atacara al enemigo. Dentro de la funcion llamaremos a dos funciones "self:AttackFunction()" que es la funcion del ataque, y tambien "self:PlaySequenceAndMove("seq_baton_swing")" esta funcion se encargara de reproducir la animacion de ataque, quiere decir que si cambiamos "seq_baton_swing" por "attack_01" entonces reproducira la animacion con ese nombre

Ultimo. Si no entendiste muy bien lo que debes hacer, puedes escribir tus dudas en los comentarios, no soy el mejor haciendo tutoriales, pero intentare responder todo lo que pueda

Puedes descargar un NPC base, ya que, si no te sale crearlo puedes descargar el npc base aqui
https : / / mega . nz /file/yGwxxK5I#Lf6EnTrjlDD3Fqz29vmTLRj0CyCkYQFZCNsLSImPMtY

este es el modelo: https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=1096799708
31 Comments
damonlycan13 29 May @ 8:28am 
goob job
Diva 21 Sep, 2024 @ 10:53am 
mejora la guia :steamthis: :steamsalty:
omniversal devourer the dud 6 Jul, 2024 @ 11:11am 
joel spanish
hkbcdid07 22 Jun, 2024 @ 1:00am 
Me too!
Public Enemy #1 31 May, 2023 @ 7:03pm 
sorry but i did not understand your spanish language
Joelías_N1  [author] 3 May, 2023 @ 5:45pm 
@jojos.51

function ENT:OnSpawn()
self:PlaySequenceAndMove("animacion")
end

en animacion le deberias poner el nombre de la animacion que quieras, pero algo así deberia ser
ModdedProp_SNERD 22 Apr, 2023 @ 10:31am 
Como agrego que cuando spawnee el npc repoduzca una animacion personalizada?
Crazy-Spider 1 Apr, 2023 @ 4:04pm 
y como agrego sonidos como de rugido o de ataque?
hkbcdid07 22 Oct, 2022 @ 11:32pm 
he makes more Trevor Henderson
SPIKEWALL-CH4N 7 Jun, 2022 @ 3:04pm 
Para cuando el tutorial de Youtube?