Pages: 1 [2] 3 4 5
  Print  
Author Topic: New mod: Elimination (Beta21)/OA 0.7.7+  (Read 169868 times)
sago007
Posts a lot
*

Cakes 62
Posts: 1664


Open Arena Developer


WWW
« Reply #25 on: July 31, 2007, 10:29:12 AM »

Some of the mentioned things are intentional, except:

You can't player-spectate after you die (you could in beta 4, but it had a nasty "get the score of the player you follow" bug)
You can't see who's dead already (this should be visible in the score menu, by writing *DEAD* behind the name)
Friendly fire is actually possible but the gamemode ignores the ordinary friendly fire and uses the CVAR "elimination_selfdamage" instead. (This is not possible by using the menu yet) (Haven't actually tested it, but should be 0 = off, 1 = self damage, 2 = self and team damage)
The CTF ELIMINATION sounds
Telefrags in some maps
There should be a default capture limit, but the UI currently has lots of bugs. I don't understand that part of the code :-(

The above things will be fixed sooner or later...

Some of the choices I made and why:
If a team has only one player, and it leaves, the other team gains a point.
     The leaving player is considered to surrender.
Only scores for kills in elimination and only for surviving in LMS
     People in team games should not be so point oriented and in Last Man Standing I guess it is the idea...
     How hard it is to kill someone is configurable using CVARs in all 3 gametypes
Logged

There are nothing offending in my posts.
sago007
Posts a lot
*

Cakes 62
Posts: 1664


Open Arena Developer


WWW
« Reply #26 on: August 04, 2007, 12:44:15 PM »

Beta 6 uploaded.

Changes:
The bugs Hieronymus reported about CTF Elimination are fixed (the others are not)
Bots no longer select a leader in LMS
Shorter respawn time during warmup, between 0-0.8 seconds. In maps with only one respawn point like "Lost In Space" spawnfragging is still a problem.
Missionpack bug fixed (a signal 11 crash in the cgame draw code)

No diff file, sorry

The source packages makefile no longer compiles the engine. Only the changed 'game', 'cgame' and 'q3_ui' directories and the directories needed to compile the qvm files are included.




Added an early version of Double Domination as gametype 11. No bot support yet. No models or graphics (flags/quard models are used so far). No personal scoring or arward system.

Maps also need a bit changing as spawning in the bases is a bad idea. The gamemode uses a new 'info_player_dd' for spawning or 'info_player_deathmatch' if the other is not available. Point A is spawned at the red flag base, point B at the blue base.
This is the only gametype that bots really sucks at if they aren't modified, I don't see any need for better bots in Elim/CTF Elim/LMS
Logged

There are nothing offending in my posts.
hyp3rfocus
Guest
« Reply #27 on: August 04, 2007, 01:19:45 PM »

this is great stuff sago007. thank you so much. i've been looking for a gpl-based team elimination gametype for a while. i even considered attempting it myself despite my almost total lack of c programming skills. you're a lifesaver.  :-)
Logged
dmn_clown
Posts a lot
*

Cakes 1
Posts: 1324


« Reply #28 on: August 04, 2007, 05:17:41 PM »

Domination crashes in the Missionpack AND the neutral flag is being spawned.
Logged

sago007
Posts a lot
*

Cakes 62
Posts: 1664


Open Arena Developer


WWW
« Reply #29 on: August 04, 2007, 06:09:27 PM »

Domination crashes in the Missionpack AND the neutral flag is being spawned.

Ups, I can see the white flag now (I no longer keep up to date on the SVn version). Also the 'Ammo regen', 'Doubler', 'Scout' and 'Guard' are also gonna be removed.

However there do it crash for you because I experience no crash.
Logged

There are nothing offending in my posts.
dmn_clown
Posts a lot
*

Cakes 1
Posts: 1324


« Reply #30 on: August 04, 2007, 08:18:57 PM »

I don't know, I'm looking into it, also I just committed some ui changes so you may want to update your ui code (fixes some of the known bugs (thanks theBeast).

The gametype for double domination in arenas.txt is dd.

EDIT: It only seems to crash when using the shared libraries instead of the qvms in the pak

This array seems to be the biggest hurdle to the ui working as it should (from line 108 in ui_startserver.c)
Code:
static int gametype_remap2[] = {
0,  //ffa
2,  //team dm
0,  //tourney
1,  // ctf
3,  // elimination
4,  //ctf_elimination
5,  //lms
6,  //dd
7 }; //null

I'm stuck for a correct solution, sequential numbers provide bizarre results (ffa being shown as lms, ctf being shown as dd, etc.).
« Last Edit: August 05, 2007, 12:06:32 AM by dmn_clown » Logged

sago007
Posts a lot
*

Cakes 62
Posts: 1664


Open Arena Developer


WWW
« Reply #31 on: August 07, 2007, 04:40:53 PM »

Beta 7 is up

Changes:
Possible fixed the crash with the shared libraries if it was caused by GFind (but I could be wrong)
Personal scores in Double Domination (Might have to be increased in the missionpack that generally gives more points)
Cannot score if time has run out
Removed white flag and persistant powerups in DD
ui code copied from SVN
Logged

There are nothing offending in my posts.
beast
Lesser Nub


Cakes 0
Posts: 142



« Reply #32 on: August 08, 2007, 12:44:02 AM »

This array seems to be the biggest hurdle to the ui working as it should (from line 108 in ui_startserver.c)
Code:
static int gametype_remap2[] = {
0,  //ffa
2,  //team dm
0,  //tourney
1,  // ctf
3,  // elimination
4,  //ctf_elimination
5,  //lms
6,  //dd
7 }; //null

I'm stuck for a correct solution, sequential numbers provide bizarre results (ffa being shown as lms, ctf being shown as dd, etc.).

I looked into this a little and I'll describe what I have found. First off, you can't place the values for elimination, etc.where you did. You need to add a few other values in there first. I'll try to explain as best I can....

You can let me know if I have misinterpreted anything...

The variable g_gametype has a sequential list of game types. starting at 0 and incrementing to the last one.
s_serveroptions.gametype receives this value in menuinit.

The value for s_serveroptions.gametype is used as an index into the gametype_remap2 array. The value that is in gametype_remap2[ s_serveroptions.gametype ] is an index into the gametype_items array.

The gametype_items array is an array of strings that has the text name for each of the gametypes.  This is where the gametype gets converted to one of the four gametype strings (FFA, TD, Tourn, and CTF).

So the current code will print the string the is pointed to by gametype_items[gametype_remap2[ s_serveroptions.gametype ]].

Now the problems that I see... the values that are used (GT_TEAM, GT_CTF, etc.) are an enum. These have a sequential value form 0 to the last item in the enum list. Currently there are 8 gametypes defined by the enum. The remap2 array currently has 5 values in it. So, the only remapping that will occur are for GT_FFA, GT_TOURNAMENT, GT_SINGLE_PLAYER, GT_TEAM, and GT_CTF. In order to get new gametypes to display, entries have to be added into the gametype_remap2 array for each of the additional gametypes. Currently, the value must be between 0 and three since there are only 4 strings/values defined in the gametype_items array. If you want one of the new gametypes to be displayed as its own string, you would add the string to the gametype_items array and then point the appropriate index in gametype_remap2 to the new string... Here's a sample snippet...

So, if we want strings to display for elimination, ctf_elimination, lms, and dd, we need to do a couple of things... First make sure that the types are defined in the gametype_t enum in bg_public.h
Code:
typedef enum {
   GT_FFA,
   GT_TOURNAMENT,
   GT_SINGLE_PLAYER,
   GT_TEAM,
   GT_CTF,
   GT_1FCTF,
   GT_OBELISK,
   GT_HARVESTER,
   GT_ELIMINATION,
   GT_CTF_ELIMINATION,
   GT_LMS,
   GT_DD
} gametype_t;

Next, in ui_startserver.c make the following changes:

Code:
static const char *gametype_items[] = {
    "Free For All",
   "Team Deathmatch",
   "Tournament",
   "Capture the Flag",
   "Elimination",
   "CTF Elimination".
   "DD",
   NULL
};

static int gametype_remap2[] = {0, 2, 0, 1, 3, xx, xx, xx, 4, 5, 6, 7};


The xx in the remap are values that need to be defined for GT_1FCTF, GT_OBELISK, and GT_HARVESTER. Currently there are no values in the remap array for those types. Something must be in there in order to get the new gametypes in the correct place in the array....  FYI, you are probably going to have to modify the gametype_remap array also. This array is used to determine the g_gameType value to set before the call to UI_ServerOptionsMenu...

Hopefully I haven't totally misunderstood the problem. If so, let me know and I'll dig some more...

[Update]
I noticed in ui_servers2.c that there are more types defined there:
   "Rocket Arena 3", // Rocket Arena 3
   "Q3F",                // Q3F
   "Urban Terror",     // Urban Terror
   "OSP",                // Orange Smoothie Productions
   "Huh",                 // unknown

If these types are defined before Elimination, you will need to add values in the gametype_remap2 array for those also (right after the values that you choose for xx, xx, xx and before the Elimination value.)
« Last Edit: August 08, 2007, 02:34:57 AM by theBeast » Logged
dmn_clown
Posts a lot
*

Cakes 1
Posts: 1324


« Reply #33 on: August 08, 2007, 10:25:05 AM »

Hopefully I haven't totally misunderstood the problem. If so, let me know and I'll dig some more...

You have, if your changes are added to ui_startserver ctf is listed as tournament, elimination is listed as team deathmatch, etc...



Logged

beast
Lesser Nub


Cakes 0
Posts: 142



« Reply #34 on: August 08, 2007, 11:36:13 AM »

The  code that I looked at was from o.7.0. Is the problem in the mission pack code? If so, point me to the latest code that is having the problem and I'll dig through it.
Logged
dmn_clown
Posts a lot
*

Cakes 1
Posts: 1324


« Reply #35 on: August 08, 2007, 11:42:19 AM »

source/mods/expanded/ in the svn
Logged

beast
Lesser Nub


Cakes 0
Posts: 142



« Reply #36 on: August 08, 2007, 12:43:18 PM »

ok. I'm (hopefully) looking at the right code now... Try the following in ui_startserver.c

Code:
static int gametype_remap[] = {
GT_FFA, // GT_FFA
GT_TEAM, // GT_TOURNAMENT
GT_TOURNAMENT, // GT_SINGLE_PLAYER
GT_CTF, // GT_TEAM
GT_CTF, // GT_CTF
GT_CTF, // GT_1FCTF
GT_CTF, // GT_OBELISK
GT_CTF, // GT_HARVESTER
GT_ELIMINATION, // GT_ELIMINATION
GT_CTF_ELIMINATION, // GT_CTF_ELIMINATION
GT_LMS, // GT_LMS
GT_DOUBLE_D }; // GT_DOUBLE_D

static int gametype_remap2[] = {
0, // GT_FFA
2, // GT_TOURNAMENT
0, // GT_SINGLE_PLAYER
3, // GT_TEAM
3, // GT_CTF
3, // GT_1FCTF
3, // GT_OBELISK
4, // GT_ELIMINATION
5, // GT_CTF_ELIMINATION
6, // GT_LMS,
7, // GT_DOUBLE_D
}; //Dammit Jim, The array is b0rked!!

It's the same problem that I described below, my example just wasn't using the mission pack code so it was probably too confusing... The comments at the end of each line are obviously optional. I placed them there to show what gametype each item was describing... The problem arose because the original code assumed that anything after GT_TEAM was all the same type so no remapping was required. Therefore, they never put entries in the arrays for those items. Since we are adding gametypes after those, we need to fill in the array so that the correct location in the array will be chosen for the new gametypes.

Let me know if this doesn't do the trick...
« Last Edit: August 08, 2007, 12:52:26 PM by theBeast » Logged
dmn_clown
Posts a lot
*

Cakes 1
Posts: 1324


« Reply #37 on: August 08, 2007, 03:21:27 PM »

That doesn't do the trick.  Team DM gets listed as CTF and everything from elimination on is also listed as ctf.  Leaving my last comment in the code as still valid.
Logged

beast
Lesser Nub


Cakes 0
Posts: 142



« Reply #38 on: August 08, 2007, 04:45:53 PM »

Dang... Isn't coding fun.... Here's what appears to work on my system... Change the gametype_remap2 to the following:
Code:
static int gametype_remap2[] = {
0,
2,
0,
1,
3,
3,
3,
3,
4,
5,
6,
7}; //Dammit Jim, The array is b0rked!!

No other changes to the code as it currently sits in svn...

Here's a diff file...
« Last Edit: August 08, 2007, 05:03:05 PM by theBeast » Logged
dmn_clown
Posts a lot
*

Cakes 1
Posts: 1324


« Reply #39 on: August 08, 2007, 05:10:37 PM »

hehe... nope.  elimination is listed as ctf, ctf_elimination is ctf, etc.

C is fun.
Logged

beast
Lesser Nub


Cakes 0
Posts: 142



« Reply #40 on: August 08, 2007, 11:15:15 PM »

What screen is the problem on? The last suggestion seems to work on my system, but maybe I'm looking at the wrong place...(And I am only assuming that it is a visual problem and not something else... Hehe... Maybe I should have asked sooner...
Logged
dmn_clown
Posts a lot
*

Cakes 1
Posts: 1324


« Reply #41 on: August 09, 2007, 12:09:51 AM »

The second page of the "Game Server" skirmish menu.

It'd probably be easier to rip the arrays out and just define the gametypes changing the way the menu deals with gametypes, the current way it is done works fine if all of the high gametypes are team style, but LMS is gametype 10 and NOT a team gametype.
Logged

beast
Lesser Nub


Cakes 0
Posts: 142



« Reply #42 on: August 09, 2007, 12:55:58 AM »

I'll dig into it. It shouldn't be that difficult... I'm obviously having a brain fart... :-(
Logged
beast
Lesser Nub


Cakes 0
Posts: 142



« Reply #43 on: August 09, 2007, 01:02:20 PM »

Phew.... I finally found it... I'm totally new to the quake source, so it took me a while to figure it out... The gametype_remap2 array needs to be setup as per the previous post:

Code:
static int gametype_remap2[] = {
0,
2,
0,
1,
3,
3,
3,
3,
4,
5,
6,
7 }; //Dammit Jim, The array is b0rked!!

The real problem, once the array is setup correctly, is the call to Com_Clamp at the beginning of the ServerOptions_MenuInit function:

Code:
s_serveroptions.gametype = (int)Com_Clamp( 0, 5, trap_Cvar_VariableValue( "g_gameType" ) );

The second parameter puts a limit of 5 on the value for gametype. Therefore, everything above 5 was being set to 5, so everything above 5 became CTF. Change the line to the following:

Code:
s_serveroptions.gametype = (int)Com_Clamp( 0, GT_MAX_GAME_TYPE - 1, trap_Cvar_VariableValue( "g_gameType" ) );
Logged
dmn_clown
Posts a lot
*

Cakes 1
Posts: 1324


« Reply #44 on: August 09, 2007, 01:44:17 PM »

Thanks, that problem seems to be fixed.  On to the next...

@Sago007 the neutral flag is appearing in ctf_elimination in the missionpack.
« Last Edit: August 09, 2007, 03:05:40 PM by dmn_clown » Logged

Hieronymus
Nub


Cakes 0
Posts: 47


« Reply #45 on: August 09, 2007, 04:21:23 PM »

sago007, it'd be nice if next time you add a feature, you tell us what is is. I will try this "double dominitation", whatever it is, in the afternoon.

The mod Smokin' Guns (a.k.a. Western quake 3) has the dead talk in white, with [dead] before their name and a skull & bones icon in the score list. It also allows you to spectate your teammates when you're dead. They're working on a stand-alone with OA and ioq3 gfx and code which will be GPL-licensed. For now, they provide no source, but if you ask them nicely, they might help you. (It might be worth a try.) Btw, it's a very cool mod. It's a bit like counter-strike (buy menu, damage based on where you're hit) but with a western look and maps and a "bank robbery" mode for CTF.
Logged
beast
Lesser Nub


Cakes 0
Posts: 142



« Reply #46 on: August 09, 2007, 04:43:11 PM »

@Sago007 the neutral flag is appearing in ctf_elimination in the missionpack.

Do you want me to look into this or is someone already doing it?
Logged
dmn_clown
Posts a lot
*

Cakes 1
Posts: 1324


« Reply #47 on: August 09, 2007, 05:17:37 PM »

sago007 will get it as long as he sees the post.  The only thing he doesn't touch is the UI.

Also @ sago007 I made some changes to cgame/cg_info.c that go along with the ui.
Logged

sago007
Posts a lot
*

Cakes 62
Posts: 1664


Open Arena Developer


WWW
« Reply #48 on: August 10, 2007, 04:13:35 AM »

Also @ sago007 I made some changes to cgame/cg_info.c that go along with the ui.
Ok

@Sago007 the neutral flag is appearing in ctf_elimination in the missionpack.

Ok, let me guess... the persistant powerups spawn too (might not do so much damage since it is a base game). I don't have missionpack on the current computer but I can see the problem in the code.

sago007, it'd be nice if next time you add a feature, you tell us what is is. I will try this "double dominitation", whatever it is, in the afternoon.

It is almost unplayable at the moment (no bot support). Some of the gametypes and there rules might be so different that they will need an explanation. I might add one to the Wiki.

Logged

There are nothing offending in my posts.
sago007
Posts a lot
*

Cakes 62
Posts: 1664


Open Arena Developer


WWW
« Reply #49 on: August 11, 2007, 03:41:51 PM »

Beta 8 up

White flags removed from CTF elimination in missionpack
UI from svn
New LMS modes

The new LMS modes (selected by g_lms_mode):
0 = point to the sole survivor selected after overtime if more survivors
1 = point to the players that survives the round, no overtime
2 = point for each player eliminated. Points go to all survivors. Including overtime
3 = point for each elimination. No overtime

The mode is printed top right if scoreboard is showing

/*
I am currently bothered by a small thing:
If the server only has bots and they play a game to the end, the server wont let human players in for the time that corrosponds to an interval. This one didn't fix that but I believe that a player might have to spawn before he can click ready
*/
EDIT: I think I got it, if I do it is quite stupid mistake

Maybe this thread really belongs in the development forum. There is quite a lot of development in it right now
« Last Edit: August 11, 2007, 03:59:43 PM by sago007 » Logged

There are nothing offending in my posts.
Pages: 1 [2] 3 4 5
  Print  
 
Jump to: