Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
no more white disc!!
#1
yep, i think it's fixed...and the best part is the person who falls at the wrong time won't be penalized a loss carrying over to the next round.

here it is:
just comment out the original CountDownThink() in DiscArena.cpp and put this there below it...

////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CDiscArena::CountDownThink( void )
{
// Freeze everyone until there's 3 seconds to go
if ( m_iSecondsTillStart == 3 )
{
for ( int i = 0; i < (m_iPlayersPerTeam * 2); i++ )
{
//.ASM : white disc haxxx...
// if the player is "dead" during the round countdown,
// then bring the bastard back...:)
if(!m_hCombatants[i]->IsAlive())
m_hCombatants[i]->Spawn();
// end .ASM


if (m_hCombatants[i])
((CBaseEntity*)m_hCombatants[i])->pev->maxspeed = 320;
}
}

m_iSecondsTillStart--;

// Play countdown VOX
if (m_iSecondsTillStart < 5)
{
// Speech
for ( int i = 0; i < (m_iPlayersPerTeam * 2); i++ )
{
if (m_hCombatants[i])
((CBasePlayer*)(CBaseEntity*)m_hCombatants[i])->ClientHearVox( g_szCountDownVox[ m_iSecondsTillStart ] );
}
}

// Send the message to the clients in the arena
for ( int i = 1; i <= gpGlobals->maxClients; i++ )
{
CBasePlayer *pPlayer = (CBasePlayer *)UTIL_PlayerByIndex( i );

if (pPlayer && (pPlayer->pev->groupinfo & pev->groupinfo) && pPlayer->m_bHasDisconnected != TRUE)
{
MESSAGE_BEGIN( MSG_ONE, gmsgStartRnd, NULL, pPlayer->edict() );
WRITE_BYTE( m_iCurrRound );
WRITE_BYTE( m_iSecondsTillStart );
WRITE_BYTE( 0 );
MESSAGE_END();
}
}

if (m_iSecondsTillStart)
{
pev->nextthink = gpGlobals->time + 1.0;
}
else
{
m_iArenaState = ARENA_BATTLE_IN_PROGRESS;

// Enable powerups
CBaseEntity *pFunc = NULL;
while ((pFunc = UTIL_FindEntityByClassname( pFunc, "item_powerup" )) != NULL)
{
((CDiscwarPowerup*)pFunc)->Enable();
}

pev->nextthink = gpGlobals->time + 1.0;
SetThink( BattleThink );
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////

i would like to do some more tests and get people's opinion...it's worked great so far w/ the bots.

another rediculously simple solution...<_<...just proves i have no actual talent at this...lol
Reply
#2
gj!
Reply
#3
Nice work. I hope to see it in place soon.
[Image: b_560x95.png]
Reply
#4
// if the player is "dead" during the round countdown,
// then bring the bastard back...

Good work. Now all that's left is to fix the spectator bugs (yes, that is plural).

This may sound cocky, but it's good to know I was right about it. Though I must concede that I don't see the correlation to rc_2v2's white discs (although I don't remember that map to well).
Reply
#5
that was something i was just going to give up on wha...but maybe with your help, we can get that done sooner than later. if we can fix this and maybe figure out the 'use' thing...we will almost have a quality game...as far as arena goes anyways.

i dl'ed hullu's "no_use.dll" plug-in...i think that's what grits uses for disabling the 'use' key...and i looked at the source but i didn't really gain any new insight looking at it. hullu's a pro, btw, who works for united admins, so i'm not surprised. his knowledge of the hl engine seems vast and extensive and i would value his assistance.

what's strange is that me and rush disabled the entire PlayerUse() player class function in client.cpp and it didn't fix the blocking problem...but, of course, you couldn't trigger events w/ 'use' either. so the problem seems deeper than i anticipated and i feel it must arise before PlayerUse() is called...but where?

i have one more week of school, then i get three weeks off, so it's a good time.

i'm still not sure how to exploit the spectator bug(s), so maybe i'll stop by on irc and get some information.
Reply
#6
The use thing sounds simple enough superficially. You said tons of math was being processed when the PlayerUse() player class function was called, it seems to me the smartest way to take a load of yourself (roleplaying as the responsible valve programmer), is to make the player stop dead in their tracks, and that is what gets exploited (duh). Finding the stopping code and keeping the PlayerUse() from flipping out when the player doesnt stop is the logical step, but can you make the function break out of itself if/when the player +using it gets hit (prior to the getting thrown), and subsequently disable the key while the fall-still-counts-as-a-kill timer is on? That would make the key useable as a stopping technique, but still let you get killed.
Reply
#7
as soon as i catch a break, i'll do so some digging for that stopping code and see about implementing your ideas.

btw, thanks for the accolades guys. i appreciate it after the rotten sunday i had...:). i can't wait to test the fix w/ some real players. the good thing, this time, was i got to write to my own code...even if it was only two lines...lol.
Reply
#8
I will take your code, .asm, and compile it and put it on my server. I also
made the 'male model default and that is working fine. I will post when I have it up for testing.

Good job.


Regarding the USE key block, Valve stated months ago when I asked about blocking the USE key that they would include that in the next big update...I have heard recently that an update is coming....so maybe it will be there. If I recall, Valve also sent me the area of the code to address so I will dig that out this evening and post it. I just remembered that.
Reply
#9
I added the "White Disk" fix from .asm, compiled and it is now on my
Windows Ricochet server, running rc_arena only.

The server is:

_Enter Here 2

IP: 24.73.66.182:27016

Try it out and give us feedback.

Thanks to .ASM
Reply
#10
Kermie if you are going to keep fixing things we are going to have to start using your real name to denote them.....asm sounds like a type of language fix plus we cant have everything being called the asm fix we will forget which is which:P(no offense to those of you that are fixing other things I am just playing with asm)

so share....please
Reply
#11
I was looking at the player.cpp and I think I may have fixed the USE key issue on arena maps. I went ahead and put it in with the white disk fix so we can test both on arena.


BTW, I think .asm fix is great..... B)
Reply
#12
i wish i could do more...but i have a final exam friday...so i won't get around to doing any more work on it until friday night unfortunately. it drives me mad cause i see all these potential fixes in my mind and i want to get it out there.

it would be nice if we can get everything fixed soon, so that valve could maybe actually use the results as an official patch release. that would be amazing for me...it would be like actually working for valveB)...w/o the pay though...so more like interning i guess^_^.

thanks again for the comments.
Reply
#13
evil_admin,Jul 30 2003, 01:35 AM Wrote:I was looking at the player.cpp and I think I may have fixed the USE key issue on arena maps. I went ahead and put it in with the white disk fix so we can test both on arena.


BTW, I think .asm fix is great..... B)
What did you do to fix it? Oh, and did you look at the respawn kill code?
Reply
#14
I haven't looked at the respawn kill code yet...while I was looking at the USE key issue I saw the code for the model sequences and had to hold myself back from studying those.

For the USE key fix I added to an 'If' statement to check if the map was not arena in order for it to work. I was thinking the that so far we have never needed the USE key in an arena map (is that right Pique?) so I disabled it when the map is arena.
Reply
#15
I think I posted the spawn kill code in a seperate thread anyway:)
Reply
#16
I asked Pique and there are no known arena maps that need the use key. so that avenue might work alright
Reply
#17
GRITS and I tested the new fix on the server and it works great.
Reply
#18
i'm really glad to hear that...thanks apex and grits!:)

and ty evil for giving others the chance to test it.
Reply
#19
OMG it is such a rush... I couldn't stop grinning and both of us were 'lol' a lot

APEX and I did just about every variation of a fall trying to get white disked and it just wouldn't happen...we must have suicided about 80 times and every time we were placed in game together with red and blue disk raring to go. It was so cool and it alleviates one of the fears of falling that you may not have even realized you had.
Thanks again .asm for the fix and evil for putting it on his server so quickly so we could test it out....hope he has plans to compile it for our other servers real soon...

go to _Enter_here2
evil_admin's server to test it out it was a lot of fun :thumb:
Reply
#20
Is the fix on Vad's yet? I know I did something and ended up with a world spawn kill... where I come back and the other guy gets killed.
Reply
#21
Quote:evil for putting it on his server so quickly so we could test it out....hope he has plans to compile it for our other servers real soon...

hasn't been compiled for our servers yet but I believe desNotes is working on it this weekend
I think the 'world spawn' problem might automatically be fixed with the white disk fix, it appears that way
Reply
#22
I compiled the white disc fix on Linux and am running it on my Linux Ricochet server. If there are no glitches today (and I doubt there will be) I will put it on GRITS' servers and GRITS will contact Stefan at Holdout's to install.

Way to go .asm
Reply
#23
White disk dll were installed last night on all GRITS' Rico servers. By now the servers have all restarted so should be active with the latest fix.
Reply
#24
OH YEAH and it feels soooo good
Turtle and I tried it on every server and it is amazing....thanks you guys
asm and desNotes and anyone else who helped get that fix on our servers...truly amazing:thumb:
Reply
#25
I can't remember doing it, except on 2vs2, but I"m glad its on.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)