Page 1 of 2

add custom entities to map?

Posted: Thu May 14, 2009 12:49 pm
by Freemanoid
How can I add custom entities to my map? Maybe I need to modify engine code of map editor? Or I have another way? It's all going to be happening in original quake for ppc.

Posted: Thu May 14, 2009 2:31 pm
by scar3crow
It depends on the map editor you're using, I'm only familiar with GTKRadiant, in that case you're adding an existing entity, and then going into the properties and changing the entity name, and its fields.

Posted: Thu May 14, 2009 5:15 pm
by Freemanoid
Ok, so i need a gtkradiant? I can use any map editor.
If you know how to add new entity in gtkradiant, can you tell me how?

Posted: Thu May 14, 2009 5:26 pm
by ceriux
in worldcraft all u do is open the fgd and add it. (after you've coded it)

Posted: Thu May 14, 2009 5:28 pm
by MeTcHsteekle
i do the same with QuArK

just drop in, say a monster_wizard if its a flying enemy, go to is options or it might be called sicifics and so there should be something in somewhere [eh?] where it has a read out if its flags nad name and shit like that, you just change the name from monster_wizard to monster_moncodename and blammo! it will be there [giving that you have the progs.dat and etc there

...im sure this made no sense possibly

..edit: just listen to Cerv hes worldcraftian i guess

Posted: Thu May 14, 2009 5:31 pm
by ceriux
MeTcHsteekle wrote:i do the same with QuArK

just drop in, say a monster_wizard if its a flying enemy, go to is options or it might be called sicifics and so there should be something in somewhere [eh?] where it has a read out if its flags nad name and shit like that, you just change the name from monster_wizard to monster_moncodename and blammo! it will be there [giving that you have the progs.dat and etc there

...im sure this made no sense possibly

..edit: just listen to Cerv hes worldcraftian i guess
same thing ur sayin man. it should all work the same if not similar. just code your entity then compile your mod. add it to the fgd load up your editor and it should be in your entity list.

Posted: Fri May 15, 2009 7:58 am
by Freemanoid
Ok. But what is fgd? Progs.dat? Or something else?

Posted: Fri May 15, 2009 8:05 am
by Spirit
fgd is the file some editor (I guess Worldcraft) gets the entity information from.

You can use custom entities with ANY decent editor I know of, without having to go through such strains. What editor do you use?

Posted: Fri May 15, 2009 11:38 am
by avirox
EntEd (full version) will do the trick fairly well if you don't need to actually see your map while editing stuff.

Posted: Fri May 15, 2009 3:56 pm
by MauveBib
All map editors allow you to edit the fields of an entity, in order to set spawnflags, targets etc. Just place any old entity then edit the "classname" field to whatever custom entity you want to use.

Posted: Fri May 15, 2009 4:32 pm
by Freemanoid
Ok, Thanks :D
I use Quark

Posted: Sat May 16, 2009 1:59 pm
by Freemanoid
damn, it doesn't working. Maby I doing something wrong?
Ok, here is my code for object computer :

void() SpawnComputer =
{
local entity computer;

computer = spawn();
computer.classname = "object_computer";
computer.think = ObjectComputer;
computer.nextthink = time + 0.1;
};

void() ObjectComputer =
{
precache_model ("progs/computer.mdl");
setmodel(self, "progs/computer.mdl");
setorigin(self, self.origin);
self.solid = SOLID_NOT;
setsize (self, '-16 -16 0', '16 32 40');
};

In field "classname" I past "object_computer" (in Quark).
Then I compile map. And when I run it in quake, there is no such object.

Posted: Sat May 16, 2009 2:04 pm
by c0burn
Well you haven't coded anything called "object_computer".
SOLID_NOT is probably a problem too. You probably don't need to reinvent the wheel too much, use the handy StartItem code already in items.qc!

Try putting this at the bottom of items.qc, and removing your code so far...

void() computer_touch =
{
if (!other.flags & FL_CLIENT)
return;

if (time < self.radtime)
return;

self.radtime = time + 1;

sprint(other, "What's up bitches!\n");
};

void() object_computer =
{
self.touch = computer_touch;
precache_model ("progs/computer.mdl");
setmodel (self, "progs/computer.mdl");
setsize (self, '-16 -16 0', '16 32 40');
StartItem ();
};

Posted: Sat May 16, 2009 4:58 pm
by frag.machine
The custom entity "classname" value in the map MUST match EXACTLY the entity spawn function in your QC. So, either rename the entity spawn function to "object_computer" OR change the "classname" value to "ObjectComputer" and things must work as expected.

Posted: Sat May 16, 2009 5:43 pm
by Freemanoid
Yipeee! It's working now!
BIG THANK's to frag.machine and other's :D

But now I have some problems with model - I can walk trough it .