EntityPlus - A single player Q3 mod
Re: Here's a wild idea: EntityPlus
I've made a target_botspawn.
It spawns a specific or a random bot into the game. I'm going to try and figure out if I can spawn the bot to a specific position but because spawning a bot appears to go through the .exe code, I'm not sure how much control I have there.
It spawns a specific or a random bot into the game. I'm going to try and figure out if I can spawn the bot to a specific position but because spawning a bot appears to go through the .exe code, I'm not sure how much control I have there.
-
- Posts: 4022
- Joined: Sat Mar 12, 2005 6:24 pm
Re: Here's a wild idea: EntityPlus
You can intercept the bot in ClientSpawn() in g_client.c.
Re: Here's a wild idea: EntityPlus
If you play this map,
Lo sota Olt
there is a bot included with the entities already existing in q3a. Afaik it's just an entity command for the info_player_deathmatch called nobot 1 or 0... don't know right now.
Dmeat also sent me a testmap in which he let spawn several bots after each one got fragged. Afterwards a door opened if you got 5 frags.
Lo sota Olt
there is a bot included with the entities already existing in q3a. Afaik it's just an entity command for the info_player_deathmatch called nobot 1 or 0... don't know right now.
Dmeat also sent me a testmap in which he let spawn several bots after each one got fragged. Afterwards a door opened if you got 5 frags.
Re: Here's a wild idea: EntityPlus
Yes there are nobot and nohuman keys you can set for info_player_deathmatch to prevent either bots or humans from spawning there.
The "5 frags opens a door" think is an interesting one. Any idea how he did this?
The "5 frags opens a door" think is an interesting one. Any idea how he did this?
Re: Here's a wild idea: EntityPlus
nohuman causes q3 to crash (try \kill in Lo sota Olt). it was removed in later pointreleases as far as i know.
Re: Here's a wild idea: EntityPlus
Here's a nooby map I made a while ago testing that out: http://q3a.ath.cx/map/10_frags/Eraser wrote:Yes there are nobot and nohuman keys you can set for info_player_deathmatch to prevent either bots or humans from spawning there.
The "5 frags opens a door" think is an interesting one. Any idea how he did this?
If you decompile it you will see how easy it is to do with items; the same principles should apply with buttons.
Here's a tutorial: http://q3a.ath.cx/level_design/frags_filter/
[url=http://www.xfire.com/profile/vlnoheaven/][img]http://i105.photobucket.com/albums/m231/Lowerboy444/xfire.png[/img][/url]
[url=http://teameventhorizon.com/]Team Event -O- Horizon[/url]
[url=http://mapping.maverickservers.com/]NoGhost Map Making Competition 2 (June 2010)[/url]
[url=http://teameventhorizon.com/]Team Event -O- Horizon[/url]
[url=http://mapping.maverickservers.com/]NoGhost Map Making Competition 2 (June 2010)[/url]
Re: Here's a wild idea: EntityPlus
Sorry but, "target_fragsFilter"? Really?
edit:
oh right, you're linking to a Defrag tutorial. It's part of the Defrag mod, so it's no vanilla Quake 3 feature.
edit:
oh right, you're linking to a Defrag tutorial. It's part of the Defrag mod, so it's no vanilla Quake 3 feature.
Re: Here's a wild idea: EntityPlus
Well, I tested it out on another map as well - meant for TDM a la King of the Hill (where the teams would attempt to control a certain area in the center of the map that would cause them to score a point if there was a player from the team within that area). It worked in vanilla 1.32 q3, so I say give it a try.
[url=http://www.xfire.com/profile/vlnoheaven/][img]http://i105.photobucket.com/albums/m231/Lowerboy444/xfire.png[/img][/url]
[url=http://teameventhorizon.com/]Team Event -O- Horizon[/url]
[url=http://mapping.maverickservers.com/]NoGhost Map Making Competition 2 (June 2010)[/url]
[url=http://teameventhorizon.com/]Team Event -O- Horizon[/url]
[url=http://mapping.maverickservers.com/]NoGhost Map Making Competition 2 (June 2010)[/url]
Re: Here's a wild idea: EntityPlus
Yes but that is a different thing. You can have a trigger_multiple set up to only be triggered by players from a specific team (the RED_ONLY/BLUE_ONLY spawnflags) which aims at a target_score. That is indeed possible in vanilla Quake 3. Now that you mention this, I wonder why no one has thought of making a King of the Hill type of map this way before. It sounds like a bloody good idea to me.Anthem wrote:Well, I tested it out on another map as well - meant for TDM a la King of the Hill (where the teams would attempt to control a certain area in the center of the map that would cause them to score a point if there was a player from the team within that area). It worked in vanilla 1.32 q3, so I say give it a try.
Re: Here's a wild idea: EntityPlus
Ok, this is possible now. I've implemented a target_disable entity. This can be targetted by any triggerable entity (such as trigger_multiple or func_button). When it's triggered it will toggle the enabled status of all trigger_ entities it targets. So you could make a button that targets a target_disable which would target a trigger_push. This allows you to make a jumppad that can be toggled on and off.DaEngineer wrote:Something like a controllable timer that activates or deactivates other entities would also be great. This would allow to create - for example - jumppads that are disabled and activate every 20 seconds for 5 seconds.
In combination with the func_timer entity (that already exists in vQ3) you could create the set up you want. It's still a bit fidding around, but I think this should work:

00: trigger_always fires target_disable 2 to disable trigger_push
00: trigger_always fires func_timer 1
00: JUMPPAD DISABLED
20: func_timer 1 fires target_disable 1 to enable trigger_push
20: func_timer 1 fires func_relay
20: func_relay fires func_timer 2
20: JUMPPAD ENABLED
25: func_timer 2 fires target_disable 1 to disable trigger_push
25: func_timer 2 fires func_relay
25: func_relay fires func_timer 2 which stops counting
25: JUMPPAD DISABLED
45: func_timer 1 fires target_disable 1 to enable trigger_push
45: func_timer 1 fires func_relay
45: func_relay fires func_timer 2
45: JUMPPAD ENABLED
50: func_timer 2 fires target_disable 1 to disable trigger_push
50: func_timer 2 fires func_relay
50: func_relay fires func_timer 2 which stops counting
50: JUMPPAD DISABLED
etc etc
Note that I haven't made an actual test set up for this so I've done it only on paper. Maybe I've overlooked something but I think this should work. It is important to note that func_timer entities already have their built-in enabled/disabled functionality whenever they're targeted by a trigger.
edit:
the func_relay is there because entities are not allowed to target themselves, so I need an intermediary step.
-
- Posts: 4022
- Joined: Sat Mar 12, 2005 6:24 pm
Re: Here's a wild idea: EntityPlus
So here is an awesome idea:
https://github.com/bnoordhuis/entityplus/compare/movers
https://github.com/bnoordhuis/entityplu ... vers.patch
Now kick the source onto GH so I can simply fork it next time.
Color diff and patch:Add new key 'type' to func_rotating, func_bobbing and func_pendulum. Configures the type of movement, allowed values 'linear', 'sine' and 'gravity'.
https://github.com/bnoordhuis/entityplus/compare/movers
https://github.com/bnoordhuis/entityplu ... vers.patch
Now kick the source onto GH so I can simply fork it next time.
Re: Here's a wild idea: EntityPlus
You're welcome to pull the most recent version out of SVN, import it into some github account somewhere and explain to me how that shit works 

Re: Here's a wild idea: EntityPlus
Funnily I've been playing around with those TR_GRAVITY, TR_LINEAR and TR_SINE constants as well for func_rotating but if I set
ent->s.apos.trType
to anything other than TR_LINEAR weird things happen. With TR_SINE the brush simply disappears, with TR_GRAVITY my brush starts spinning around a different axis like a madman.
So I'm not exactly sure how that's supposed to work...
ent->s.apos.trType
to anything other than TR_LINEAR weird things happen. With TR_SINE the brush simply disappears, with TR_GRAVITY my brush starts spinning around a different axis like a madman.
So I'm not exactly sure how that's supposed to work...
-
- Posts: 4022
- Joined: Sat Mar 12, 2005 6:24 pm
Re: Here's a wild idea: EntityPlus
Actually, that's exactly what I did.Eraser wrote:You're welcome to pull the most recent version out of SVN, import it into some github account somewhere and explain to me how that shit works
1. Clone your repository with `git svn clone http://entityplus.googlecode.com/svn`
2. Create a new repository on GH and push to it: `git remote add origin git@github.com:username/entityplus.git`, followed by `git push origin master`
3. Done!
git-svn is a perl script so how well that works on Windows, I don't know. If you create a project under your account and add me, I'll push the Subversion export to it.
EDIT: I can add you to my copy too. Whatever floats your boat.
Last edited by ^misantropia^ on Tue Mar 22, 2011 4:15 pm, edited 1 time in total.
-
- Posts: 4022
- Joined: Sat Mar 12, 2005 6:24 pm
Re: Here's a wild idea: EntityPlus
Ah, maybe it's ent->s.pos.trType that needs to be set.Eraser wrote:Funnily I've been playing around with those TR_GRAVITY, TR_LINEAR and TR_SINE constants as well for func_rotating but if I set
ent->s.apos.trType
to anything other than TR_LINEAR weird things happen. With TR_SINE the brush simply disappears, with TR_GRAVITY my brush starts spinning around a different axis like a madman.
So I'm not exactly sure how that's supposed to work...
Re: Here's a wild idea: EntityPlus
Don't think that's correct either? It doesn't seem to make a difference. In the original source, s.pos.trType is set to TR_LINEAR for func_rotating and TR_SINE for func_bobbing.
-
- Posts: 2237
- Joined: Sat Mar 12, 2005 10:49 pm
Re: Here's a wild idea: EntityPlus
To make things easier, here's a script I wrote today I use at work when dealing with git:
Automatically adds all modified files, echos a status on what's staged, the commits the changes after getting a commit message from you.
It then proceeds to push the freshly committed changes to the remote branch based on the local branch you currently have checked out.
Automatically adds all modified files, echos a status on what's staged, the commits the changes after getting a commit message from you.
It then proceeds to push the freshly committed changes to the remote branch based on the local branch you currently have checked out.
Code: Select all
git add .;
git status;
echo 'Commit Message:';
read msg;
git commit -m "\"$msg\"";
current_branch=`git branch 2>/dev/null | grep -e '^*' | sed -E 's/^\* (.+)$/\1 /'`;
git push origin $current_branch;
Re: Here's a wild idea: EntityPlus
I went ahead and wrapped things up for a 0.2 release. A few new features have been added, of which a list can be found here:
https://code.google.com/p/entityplus/wiki/EntityPlus
Most notable new additions are:
Something I failed to mention before is that the mod comes with an example map which shows the new features in a basic, isolated set up.
If you use the entityplus.bat that comes in the ZIP package to start the mod, the map will automatically be loaded.
Enjoy!
https://code.google.com/p/entityplus/wiki/EntityPlus
Most notable new additions are:
- the target_botspawn entity, which spawns a new bot into the game.
- the target_disable entity, which can disable or enable trigger entities
- the target_playerspeed entity, which can set the triggering player's base movement speed.
Something I failed to mention before is that the mod comes with an example map which shows the new features in a basic, isolated set up.
If you use the entityplus.bat that comes in the ZIP package to start the mod, the map will automatically be loaded.
Enjoy!
Re: Here's a wild idea: EntityPlus
This is just great.
Can I trigger something from a bots death and/or spawn?
So, when I spawn him, I can disable the spawn. And when I kill him, I can open a door?
Also, a "key" item would be super, that can be spawned, picked up and used for triggering something.
But already now, I see great potential for great puzzle levels.
Can I trigger something from a bots death and/or spawn?
So, when I spawn him, I can disable the spawn. And when I kill him, I can open a door?
Also, a "key" item would be super, that can be spawned, picked up and used for triggering something.
But already now, I see great potential for great puzzle levels.
Q3Map2 2516 -> http://www.zfight.com/misc/files/q3/q3map_2.5.16_win32_x86.zip
Q3Map2 FS_20g -> http://www.zfight.com/misc/files/q3/q3map2_fs_20g.rar
GtkRadiant 140 -> http://www.zfight.com/misc/files/q3/GtkRadiantSetup-1.4.0-Q3RTCWET.exe
Q3Map2 FS_20g -> http://www.zfight.com/misc/files/q3/q3map2_fs_20g.rar
GtkRadiant 140 -> http://www.zfight.com/misc/files/q3/GtkRadiantSetup-1.4.0-Q3RTCWET.exe
Re: Here's a wild idea: EntityPlus
love it! its great work eraser. One thing: I get huge lags when a bot spawns.
An entity that would force holdable_teleporter to a specific spot would be fun.
An entity that would force holdable_teleporter to a specific spot would be fun.

-
- Posts: 392
- Joined: Fri Sep 17, 2010 1:53 am
Re: Here's a wild idea: EntityPlus
Just took a look at it today, very nice work! There were a few things I noticed, however:
- When you first approach the jump pad, it`s not playing it`s flashy effect, which is cool when you turn it on and it starts flashing. However, if you restart the map (which some players will inevitably do if they are stuck) it`s still playing the effect even when it is off. It`s a pretty minor visual issue but I thought I`d let you know.
- The green armor skin is way too bright and oversaturated. Reduce the brightness and saturation a bit, so that it resembles QL`s green armor entity a bit more. (of course don`t rip the actual skin from QL, you might get into some legal trouble for that) Once again, purely aesthetic.
- If you spawn the bots and you restart the level, the bots will still be there, fighting. Probably won`t always be a bad thing but in some cases this could be unwanted if the player is supposed to backtrack and shouldn`t meet the monsters until after he comes back.
Other than these issues (all except the third being of little importance) it`s starting to take the baby steps of possibly being the first true single player Q3 mod. I like how you implemented my shooter_bfg idea btw. ;-)
Here`s some more suggestions, once again you don`t have to use them, these are just to spark your creativity:
- If someone wants to make a multi-level mission where the player may have to travel back and forth between maps, ala Quake 2, I think it would be neat to make it so that it would be possible to go back to a map and have all the entities be what they were as you left, i.e dead bots are still dead, weapons that you collected don`t respawn (unless you specify them to), etc. I`m not sure how difficult it would be to implement though - if this is out of reach you could always do a info_player_checkpoint entity which saves your current position so you don`t have to start all the way over if you die / get stuck.
- What if you want a bot to fight on your side, as with the case of assisted missions? Perhaps have a goodguy spawnflag similar to the one in Lazarus. It could use code similar to what makes teams in TDM / CTF function, but without the ugly blue / red skins, etc.
- func_conveyor - Self-explanatory, makes brushes move along the func_conveyor in a mapper-specified direction and speed. Could be great for warehouse environments.
- func_pushable - Basically a brush in which force can be applied to make it move; affected by gravity. Level designer can specify the mass of the brush, which will affect how fast it can be pushed. Perhaps you can "recycle" the code that makes gravity work upon the player and apply it to brush geometry. You can also specify whether getting hit on the head by a falling func_pushable will result in death. (indiana jones style? lol)
- Cooperative mode?
Good luck with your project, I just know it`s going to be the next big thing.
- When you first approach the jump pad, it`s not playing it`s flashy effect, which is cool when you turn it on and it starts flashing. However, if you restart the map (which some players will inevitably do if they are stuck) it`s still playing the effect even when it is off. It`s a pretty minor visual issue but I thought I`d let you know.
- The green armor skin is way too bright and oversaturated. Reduce the brightness and saturation a bit, so that it resembles QL`s green armor entity a bit more. (of course don`t rip the actual skin from QL, you might get into some legal trouble for that) Once again, purely aesthetic.
- If you spawn the bots and you restart the level, the bots will still be there, fighting. Probably won`t always be a bad thing but in some cases this could be unwanted if the player is supposed to backtrack and shouldn`t meet the monsters until after he comes back.
Other than these issues (all except the third being of little importance) it`s starting to take the baby steps of possibly being the first true single player Q3 mod. I like how you implemented my shooter_bfg idea btw. ;-)
Here`s some more suggestions, once again you don`t have to use them, these are just to spark your creativity:

- If someone wants to make a multi-level mission where the player may have to travel back and forth between maps, ala Quake 2, I think it would be neat to make it so that it would be possible to go back to a map and have all the entities be what they were as you left, i.e dead bots are still dead, weapons that you collected don`t respawn (unless you specify them to), etc. I`m not sure how difficult it would be to implement though - if this is out of reach you could always do a info_player_checkpoint entity which saves your current position so you don`t have to start all the way over if you die / get stuck.
- What if you want a bot to fight on your side, as with the case of assisted missions? Perhaps have a goodguy spawnflag similar to the one in Lazarus. It could use code similar to what makes teams in TDM / CTF function, but without the ugly blue / red skins, etc.
- func_conveyor - Self-explanatory, makes brushes move along the func_conveyor in a mapper-specified direction and speed. Could be great for warehouse environments.
- func_pushable - Basically a brush in which force can be applied to make it move; affected by gravity. Level designer can specify the mass of the brush, which will affect how fast it can be pushed. Perhaps you can "recycle" the code that makes gravity work upon the player and apply it to brush geometry. You can also specify whether getting hit on the head by a falling func_pushable will result in death. (indiana jones style? lol)
- Cooperative mode?
Good luck with your project, I just know it`s going to be the next big thing.

[color=#00FF00][b]EmeraldProductions[/b][/color]
http://emeraldproductions.weebly.com/index.html
http://emeraldproductions.weebly.com/index.html
Re: Here's a wild idea: EntityPlus
You use func_train now.EmeraldTiger wrote: - func_conveyor - Self-explanatory, makes brushes move along the func_conveyor in a mapper-specified direction and speed. Could be great for warehouse environments.
A func_conveyor should make the player move when he stands on a surface.
Q3Map2 2516 -> http://www.zfight.com/misc/files/q3/q3map_2.5.16_win32_x86.zip
Q3Map2 FS_20g -> http://www.zfight.com/misc/files/q3/q3map2_fs_20g.rar
GtkRadiant 140 -> http://www.zfight.com/misc/files/q3/GtkRadiantSetup-1.4.0-Q3RTCWET.exe
Q3Map2 FS_20g -> http://www.zfight.com/misc/files/q3/q3map2_fs_20g.rar
GtkRadiant 140 -> http://www.zfight.com/misc/files/q3/GtkRadiantSetup-1.4.0-Q3RTCWET.exe
Re: Here's a wild idea: EntityPlus
The mod needs a display text thing too... or maybe that's already possible.
like info_text or something.
Crist, we can keep counting up good things to have in a SP mode, soon the mod can be called Quake2.
like info_text or something.
Crist, we can keep counting up good things to have in a SP mode, soon the mod can be called Quake2.
Q3Map2 2516 -> http://www.zfight.com/misc/files/q3/q3map_2.5.16_win32_x86.zip
Q3Map2 FS_20g -> http://www.zfight.com/misc/files/q3/q3map2_fs_20g.rar
GtkRadiant 140 -> http://www.zfight.com/misc/files/q3/GtkRadiantSetup-1.4.0-Q3RTCWET.exe
Q3Map2 FS_20g -> http://www.zfight.com/misc/files/q3/q3map2_fs_20g.rar
GtkRadiant 140 -> http://www.zfight.com/misc/files/q3/GtkRadiantSetup-1.4.0-Q3RTCWET.exe
Re: Here's a wild idea: EntityPlus
Not yet, but I was planning on having some entity that's triggered by a player's death or a player making a frag. This will definitely be part of a next version.Hipshot wrote:This is just great.
Can I trigger something from a bots death and/or spawn?
So, when I spawn him, I can disable the spawn. And when I kill him, I can open a door?
I'm planning on doing this as well. I was thinking about this earlier but wasn't sure how to exactly implement this on a functional level. But I'll get around to doing this for a next release as well.Hipshot wrote: Also, a "key" item would be super, that can be spawned, picked up and used for triggering something.
Yep, it simply calls an addbot command to the server, just like you would when you add a bot through the menu or the console. The thing is that the game has to load the assets for the bot (model, sounds, etc). I could look into preloading assets for target_botspawns that spawn a specific bot but it's probably a bit tricky to do that.neoplan wrote:love it! its great work eraser. One thing: I get huge lags when a bot spawns.
I could probably do that.neoplan wrote:An entity that would force holdable_teleporter to a specific spot would be fun.
I see. I used Q3's own targetshader and targetnewshader functionality for this, it's nothing I added with EntityPlus, so it's a problem with Q3 itself. I'll look into seeing if this can be fixed.EmeraldTiger wrote:- When you first approach the jump pad, it`s not playing it`s flashy effect, which is cool when you turn it on and it starts flashing. However, if you restart the map (which some players will inevitably do if they are stuck) it`s still playing the effect even when it is off. It`s a pretty minor visual issue but I thought I`d let you know.
That's my lousy hue recolor skillz at work thereEmeraldTiger wrote:- The green armor skin is way too bright and oversaturated. Reduce the brightness and saturation a bit, so that it resembles QL`s green armor entity a bit more. (of course don`t rip the actual skin from QL, you might get into some legal trouble for that) Once again, purely aesthetic.

Hmm, I'll have to come up with a good solution for this one.EmeraldTiger wrote:If you spawn the bots and you restart the level, the bots will still be there, fighting. Probably won`t always be a bad thing but in some cases this could be unwanted if the player is supposed to backtrack and shouldn`t meet the monsters until after he comes back.
Ideas are always welcome.EmeraldTiger wrote:Here`s some more suggestions, once again you don`t have to use them, these are just to spark your creativity:
Sounds complex but probably not impossibleEmeraldTiger wrote: If someone wants to make a multi-level mission where the player may have to travel back and forth between maps, ala Quake 2, I think it would be neat to make it so that it would be possible to go back to a map and have all the entities be what they were as you left, i.e dead bots are still dead, weapons that you collected don`t respawn (unless you specify them to), etc. I`m not sure how difficult it would be to implement though - if this is out of reach you could always do a info_player_checkpoint entity which saves your current position so you don`t have to start all the way over if you die / get stuck.

An idea for having an entity that switches to a different level is a good idea though.
Maybe I could port over Daikatana's sidekick codeEmeraldTiger wrote:What if you want a bot to fight on your side, as with the case of assisted missions? Perhaps have a goodguy spawnflag similar to the one in Lazarus. It could use code similar to what makes teams in TDM / CTF function, but without the ugly blue / red skins, etc.

These are good ideas.EmeraldTiger wrote:- func_conveyor - Self-explanatory, makes brushes move along the func_conveyor in a mapper-specified direction and speed. Could be great for warehouse environments.
- func_pushable - Basically a brush in which force can be applied to make it move; affected by gravity. Level designer can specify the mass of the brush, which will affect how fast it can be pushed. Perhaps you can "recycle" the code that makes gravity work upon the player and apply it to brush geometry. You can also specify whether getting hit on the head by a falling func_pushable will result in death. (indiana jones style? lol)
Technically speaking that's already possible. You could play with a friend in one level. Only thing I might have to do is disable friendly fire.EmeraldTiger wrote: - Cooperative mode?
ThanksEmeraldTiger wrote: Good luck with your project, I just know it`s going to be the next big thing.

Right now I'm actually thinking of ditching the whole deathmatch basis of Quake 3 altogether and see if I can force all of this into being a single player (with coop!

Re: Here's a wild idea: EntityPlus
Erm, there has always been target_print...Hipshot wrote:The mod needs a display text thing too... or maybe that's already possible.
like info_text or something.
