Editing and Customization > Community Content

New mode

(1/10) > >>

John Doom:
UPDATE:
Check the attachment for the current build :)

ORIGINAL POST:
:) Hello, there, I'm new to this forum!

I programmed a new mode and I was wondering if you're interested in adding it to Goldeneye Source. The idea was to recreate a typical 007 mission:
-one player is randomly selected to be an MI6 agent, the others are put in the Janus Team;
-the MI6 agent has to collect 5 tokens on a time limit to win, the others have to kill him;
-the MI6 agent starts with a silenced gun and the armor, the others start with a rifle;
-the MI6 agent can't respawn, but the others deal much less damage, depending on their number.
I didn't choose its name yet. Maybe "00 Agent"? Here's a preview from the MI6 side:

That said, I could only test it using bots, so it may need additional work to find the right balance. There are also a few things I'd like you to implement or teach me how to implement:
-how to disable team selection so I can force a player to a specific team? Right now I implemented a custom solution which works, but it's not ideal;
-how to get if a player hit (not killed) another one? I need it to register who hit the MI6 agent and survived when he died, so I can reward him with one more point;
-how to force the radar off? I tried using SetForceRadar(False), but it doesn't seem to make any difference;
-how to prevent equipping (not picking up) a token? It's not only useless, but it uses a glitchy hand texture;
-how to prevent picking up specific characters? I used "SetExcludedCharacters("boris,female_scientist,jaws,mayday,mishkin,oddjob,ourumov,baron_samedi,valentin")", but some of them, like samedi, still show up;
-how to destroy tokens, rather than picking them up? This one's not actually necessary, but I think it would be a nice addition :D

Shemp Howard:
this looks cool as hell. We'd gladly help test it!

GroundhogMoka:
Looks cool. Will have to test this at some point.

Entropy-Soldier:
Neat mode!  These days we're trying to keep the official modes rather straightforward and simple, so a fancy mode like this doesn't quite fit in our schema.  However, I'm sure there are a large number of community server owners who would love a mode like this, so releasing it as community content when it's done would no doubt get it lots of attention.

Also, if you've got any interest in level design it feels like this mode would really benefit from some custom maps geared around it.  Would perhaps need to be a bit grander in scale but would certainly enhance that single player experience you're going for.


Anyway, as for your questions:

-how to disable team selection so I can force a player to a specific team? Right now I implemented a custom solution which works, but it's not ideal;

Hate to say it but this just isn't supported yet, I'll add it to 5.1's todo list.


-how to get if a player hit (not killed) another one? I need it to register who hit the MI6 agent and survived when he died, so I can reward him with one more point;


--- Code: ---
    def CalculateCustomDamage( self, victim, info, health, armour ):
        if victim == None:
            return health, armour
        killer = GEPlayer.ToMPPlayer( info.GetAttacker() )

        # Do stuff with killer/victim here.
        # Be sure to return health, armour or modified values for them as this callback overrides the damage dealt
        # by every damage event.
--- End code ---


-how to force the radar off? I tried using SetForceRadar(False), but it doesn't seem to make any difference;

        Right now this is just done via the gameplay's config file, which is a file in the cfg directory called [name of gameplay].cfg

        Copy ltk's or put "ge_allowradar 0" inside this file.


-how to prevent equipping (not picking up) a token? It's not only useless, but it uses a glitchy hand texture;

It's been a little while but I think if you pass team=Glb.TEAM_OBS as an argument to the token setup function it will register that only observers can pick it up.  Generally though for objectives that aren't meant to be actually held by anyone, Capture Points are used.  Check out modes like Uplink and Die Another Day for examples on how to use capture points in this fashion.  You can spawn capture points on specific dying players, if you want them to "carry" the objective without actually having a token.


-how to prevent picking up specific characters? I used "SetExcludedCharacters("boris,female_scientist,jaws,mayday,mishkin,oddjob,ourumov,baron_samedi,valentin")", but some of them, like samedi, still show up;

This command wasn't originally meant to exclude so many characters, and sadly as a result is limited in how many it can block off.  5.1 will make it more flexible, and probably also include a way to just skip the character selection menu for modes where only one character is allowed for a given player.  For now though you'll probably just have to let people pick their characters and reassign them if necessary.


-how to destroy tokens, rather than picking them up? This one's not actually necessary, but I think it would be a nice addition :D

Calling

--- Code: ---
GERules.GetTokenMgr().RemoveTokenEnt( token, False )
--- End code ---
and then decreasing the desired count of that token type should do the trick.



Regardless, your mode is looking pretty interesting so far and I'm excited to see where you take it!  Good work so far and let me know if you have any other questions.  Also, feel free to use the community discord server if the response times around here aren't the best.  We've mostly migrated to that platform but keep the forums around for things like announcements and community releases.

John Doom:
:) Thanks for your support, guys. I'm going to put the finishing touches on this mode, then I'll release it.
btw, I was wondering if modes are only needed on the server side, since I found it takes editing some of the original files to add a new mode.
Just one more thing: is there a way to know if a token has been hit? So I can later "destroy" it as you suggested :D

UPDATE:
New video:
:) I'm ready to release a test build. It's still W.I.P., so can I make another topic in "Community Releases" and release it or do I have to wait for the final build, before?

Navigation

[0] Message Index

[#] Next page

Go to full version