Making NPC

I'll teach you how to create your very own custom NPC for Gmod2007. It's not very hard, quite simple, actually.

So I'll start out with a default citizen NPC:

Citizen NPC

local Category = "Your NPC Category"

local NPC = { Name = "Your NPC",

            Class = "npc_citizen",      
            Model = "models/yourmodelname.mdl",
            Health = "100",
            KeyValues = { citizentype = 4 },
            Category = Category    }

list.Set( "NPC", "npc_yourfirstNPC", NPC )

Then I'll go over what each one is:

local NPC = { Name = "Your NPC",

//This is your NPC's name, shown on the spawnmenu. Just replace 'Your NPC" with the name you want.

Class = "npc_citizen",

// This is the class of your NPC ( combine, citizen, vortigaunt, etc.)

You can't make any NPC type. You can only make NPCs with the following classes. This is because the rest of the npcs ( gman, fast zombie, others I didn't mention) do not have preset keyvalues.

npc_combine_s //Combine Soldier npc_vortigaunt //Vortigaunt ( pretty self explanatory) npc_alyx //Alyx npc_strider // Strider npc_citizen // A basic citizen who can follow you.

Model = "models/yourmodelname.mdl",

// This is the NPC's model directory. Make sure it's right or your NPC will spawn as a big whopping ERROR sign. Oh, and one very important thing:

MAKE SURE YOUR MODEL HAS THE CORRECT ANIMATIONS.

If your model does not have the correct animations they will spawn in a T shape and not move whatsoever. If you want to modify a ragdoll to have animations, you must decompile the model and edit the .qc file's animations( I will soon make a tut of this later).

Health = "100",

//This is already quite self-explanatory, no need to go over this.

KeyValues = { citizentype = 4 },

//This part of the code only applies to citizens. These are the keyvalues of the citizen to show what type of citizen it is ( If I can remember, i think it was Citizen, DownTrodden, Rebel, and medic). Experiment with those to see if I am right.

Category = Category }

//This part validates the NPC so it's in the category.

list.Set( "NPC", "npc_yourfirstNPC", NPC )

// Finally, this will set the NPC into the list and this creates the NPC's in-name game ( not the one in the spawnlist, just the "console" name. just change "Npcyourfirstnpc" to anything, but make sure npc is there at all times.

That's it! Stick it all together and you've got your first NPC done!

Combine NPC ( enemy NPC)

local NPC = { Name = "Enemy",

            Class = "npc_combine_s",
            Model = "models/enemy.mdl",
            Squadname = "squad",
            Numgrenades = "4",
            Category = Category    }

list.Set( "NPC", "npc_enemy", NPC )

I won't go over the first 2 or the ones I've gone over, but I'll go over the ones you haven't seen:

Squadname = "squad",

//The squad name. If 2 have the same, I think both NPCS will stick together at all times. You can change it to anything you like, or not have it.

Numgrenades = "4",

//The number of grenades the enemy has. Change the number to anything you like.

That should do it. Well, have fun creating NPCS!

Oh noes! You're not a Member!

Want access to cool stuff? As a member you can:

  • Post. Give the submitter your thoughts on this Tutorial.
  • Say Thanks. Show your appreciation by sending the submitter points.
  • Stamp Posts. Let other posters know what you think of their posts.
  • Rate. Give this Tutorial a rating out of 10.
  • Flag. Alert moderators and warn members of a problem with this Tutorial.
  • Vote. Vote the submitter for the Monthly Awards.
  • Subscribe. Get notified when this submitter submits again.

Interested? Register or Login

Comments

  • shcfyd avatar
    Availability
    Offline
    Points Level
    Beggar Points Level icon
    Beggar
    2 points
    Account Age Level
    Graduate Age Level icon
    Graduate
    3 years old
    Clearance Level
    Member Clearance Level icon
    Member
    • Report icon
    2 years ago:

    Posted by LucasHenkel When I try to make a zombie npc but with a different model it always has the same thing, everything works but it doesn't use the model I inserted. Can someone help?

    As the tutorial says, you are limited to npc_combine_s, npc_citizen, vortiguant and so on. Zombie, metropolice and some others can not have their model swapped via lua. I think you will need to compile a new Zombie model in order to make a custom npc_zombie

    Bananite
  • LucasHenkel avatar
    Availability
    Offline
    Points Level
    Beggar Points Level icon
    Beggar
    438 points
    Account Age Level
    Graduate Age Level icon
    Graduate
    3 years old
    Clearance Level
    Member Clearance Level icon
    Member
    • Report icon
    2 years ago:

    When I try to make a zombie npc but with a different model it always has the same thing, everything works but it doesn't use the model I inserted. Can someone help?

    LucasGodzilla
  • asteroidrules avatar
    Availability
    Offline
    Points Level
    Drudge Points Level icon
    Drudge
    4,577 points
    Account Age Level
    Veteran Age Level icon
    Veteran
    4 years old
    Clearance Level
    Member Clearance Level icon
    Member
    • Report icon
    4 years ago:

    The category thing doesn't change no matter what you type in. It also doesn't work with custom models.

  • asteroidrules avatar
    Availability
    Offline
    Points Level
    Drudge Points Level icon
    Drudge
    4,577 points
    Account Age Level
    Veteran Age Level icon
    Veteran
    4 years old
    Clearance Level
    Member Clearance Level icon
    Member
    • Report icon
    4 years ago:

    What do you save the file as and where do you put it? I'm trying to make a scanner.

  • zeppoking avatar
    Availability
    Offline
    Account Age Level
    Veteran Age Level icon
    Veteran
    5 years old
    Clearance Level
    Member Clearance Level icon
    Member
    • Report icon
    4 years ago:

    When I spawn my Npc they are invisible

    Bananite
  • chrisspyb avatar
    Availability
    Offline
    Account Age Level
    Veteran Age Level icon
    Veteran
    5 years old
    Clearance Level
    Member Clearance Level icon
    Member
    • Report icon
    4 years ago:

    Great tutorial man!

    The cake is a lie- IS A LIE!
  • Ghost07 avatar
    Availability
    Offline
    Account Age Level
    Veteran Age Level icon
    Veteran
    4 years old
    Clearance Level
    Member Clearance Level icon
    Member
    • Report icon
    4 years ago:

    ¿Can I open LUA, with wordpad?

    Bananite
  • Dot. avatar
    Availability
    Offline
    Points Level
    Beggar Points Level icon
    Beggar
    115 points
    Exemplary Feedback Level
    Helper Exemplary Feedback Level icon
    Helper
    1 EF's
    Account Age Level
    Veteran Age Level icon
    Veteran
    6 years old
    Clearance Level
    Member Clearance Level icon
    Member
    • Report icon
    5 years ago:

    This is all great info that could be useful if you added a few more things for the average n00bs as myself:

    o Where are we putting all this? Do we create a file? If so what do we name it? Also, where are we putting this file?

    o Do we structure the file just like you have it? Are there no brackets () , {}, [] ?

    28RL.NET avatar
    User Title
    28RL.NET
  • Corhunger avatar
    Availability
    Offline
    Account Age Level
    Elder Age Level icon
    Elder
    6 years old
    Clearance Level
    Member Clearance Level icon
    Member
    • Report icon
    5 years ago:

    Is there any kleiner npc that fights? If not can i just take his normal model and throw it on a citizen/rebel? and where do i put all that text, in lua as a txt file?

    Bananite
  • juggalo83 avatar
    Availability
    Offline
    Points Level
    Drudge Points Level icon
    Drudge
    5,456 points
    Account Age Level
    Elder Age Level icon
    Elder
    8 years old
    Clearance Level
    Treehouse VIP Clearance Level icon
    Treehouse VIP
    • Report icon
    6 years ago:
    Posted by zaks88
    Posted by juggalo83 Good work on this but im still having trouble finding them ingame
    Make sure you put the lua file in lua/autorun and if it still doesnt work make sure u have no spaces in the name , instead of spaces use _

    no i figured it out, it was a case of the misspelling of a word that was giving me a problem but its fixed now

    donate points to the poor avatar
    User Title
    donate points to the poor

Credits

Key Authors
Pwnz0r
Unknown

Submitter

Pwnz0r avatar
Availability
Offline
Points Level
Beggar Points Level icon
Beggar
241 points
Account Age Level
Elder Age Level icon
Elder
7 years old
Clearance Level
Member Clearance Level icon
Member

Pwnz0r
(Creator/Co-creator)

Rating

8.9/10
Based off 2 rating(s)

Details

Genre
Coding/Scripting
Difficulty Level
Intermediate

Stats

Post Count
19
ViewCount
50,233
Date Added
7 years ago
Date Modified
7 years ago

Share

Code to use:

More embeddable images

Bookmark and Share