Pshb And What's Going On.

2456710

Comments

  • WirheWirhe Join Date: 2003-06-22 Member: 17610Members
    <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> The ball is in Valve's court now.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
    Oh, god, no... This will take forever...

    *Gets a headache*
  • SinSpawnSinSpawn Harbinger of Suffering Join Date: 2002-11-12 Member: 8359Members
    ..I see to do good in ns..often I join the server last-ish...would explain that.

    Good job for NS team to find this out, i hope Valve will make this a top priority thing, although honestly, i don't think they will be able to fix it and this will be stuck for half life forever!

    noes!!!
  • Soylent_greenSoylent_green Join Date: 2002-12-20 Member: 11220Members, Reinforced - Shadow
    edited July 2004
    <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->The little mistakes are ALWAYS the hardest to find, so that would come as no surprise I'm sure....

    Someone will be beating their head against thge desk for hours over this one XD
    <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->

    Yeah I know, my favorite is that inconspicously placed semicolon at the end of if statements and for-loops, and the or(||) instead of bitwise or (|) when setting flags, which shouldn't give you any compile errors since you either get 1 or 0, which turns off all flags except possibly the flag using that least significant bit.

    e.g.

    for (int i = 0 ; i < 10 ; i++ );
    {
    //some code
    }

    or
    ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN| DDSCAPS_VIDEOMEMORY || DSCAPS_LOCALVIDMEM;

    I've done those silly mistakes so many times it's not funny anymore.

    But when doing such an important thing like this I would have dodecaduple checked it just to be sure.
  • cortexcortex Join Date: 2003-11-28 Member: 23707Members
    <!--QuoteBegin-Soylent green+Jul 25 2004, 10:20 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Soylent green @ Jul 25 2004, 10:20 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--><!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->The little mistakes are ALWAYS the hardest to find, so that would come as no surprise I'm sure....

    Someone will be beating their head against thge desk for hours over this one XD
    <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->

    Yeah I know, my favorite is that inconspicously placed semicolon at the end of if statements and for-loops, and the or(||) instead of bitwise or (|) when setting flags, which shouldn't give you any compile errors since you either get 1 or 0, which turns off all flags except possibly the flag using that least significant bit.

    e.g.

    for (int i = 0 ; i < 10 ; i++ );
    {
    //some code
    }

    or
    ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN| DDSCAPS_VIDEOMEMORY || DSCAPS_LOCALVIDMEM;

    I've done those silly mistakes so many times it's not funny anymore.

    But when doing such an important thing like this I would have dodecaduple checked it just to be sure.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
    :S wth is all that??

    Anyway very very good work on the bug !!!!111!! its existed for the life-span of HL and noone has created sufficient evidence until now. Again, awesome work everyone who tried hard to shed some light on this <!--emo&:D--><img src='http://www.unknownworlds.com/forums/html//emoticons/biggrin.gif' border='0' style='vertical-align:middle' alt='biggrin.gif' /><!--endemo-->:D.

    all we can do now is pray that valve do something to fix this asap.. or we could all send weekly e-mails complaining about it <!--emo&;)--><img src='http://www.unknownworlds.com/forums/html//emoticons/wink.gif' border='0' style='vertical-align:middle' alt='wink.gif' /><!--endemo-->
  • SixsixoneSixsixone Join Date: 2004-07-25 Member: 30104Members
    Well at least we know now if we want to do some ownage at NS, just make sure you join last. <!--emo&::asrifle::--><img src='http://www.unknownworlds.com/forums/html//emoticons/asrifle.gif' border='0' style='vertical-align:middle' alt='asrifle.gif' /><!--endemo-->
  • cortexcortex Join Date: 2003-11-28 Member: 23707Members
    i dont think any of the server Admin's like people that exploit PSHB.
  • SinSpawnSinSpawn Harbinger of Suffering Join Date: 2002-11-12 Member: 8359Members
    <!--QuoteBegin-cortex+Jul 25 2004, 01:39 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (cortex @ Jul 25 2004, 01:39 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> i dont think any of the server Admin's like people that exploit PSHB. <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd-->
    but how can you stop it? kick the last player, thats not really fair, even if the player doesn't know about it, i didn't know until today :O
  • Head_crabHead_crab Join Date: 2004-06-22 Member: 29468Members
    edited July 2004
    Well until it's fixed:
    AMX:
    <a href='http://www.modns.org/forums/index.php?showtopic=660' target='_blank'>http://www.modns.org/forums/index.php?showtopic=660</a>

    Metamod:
    <a href='http://www.modns.org/forums/index.php?showtopic=661' target='_blank'>http://www.modns.org/forums/index.php?showtopic=661</a>

    Mahnsawce has attempted to make a version adding a bot to hold the bugged slot, but it causes important issues with AMX, so there is no "bot" version of the fix. Just consider these as temporary fixes for server admins who wish to use them on their server until an official fix comes out.

    Edit: Also, note that reserved slot plugins will <u>not</u> stop <u>any</u> player from getting the last slot and these fix plugins can work <u>with</u> reserved slot plugins, but the amount of reserved slot has to be increased by 2. So a server with 2 reserved slots will need have to have 4 reserved slots to compensate for the 2 hidden and unused slots. We probably have tried all the possible temporary fixes imaginable and these were the only ones that work at 100%.
  • SixsixoneSixsixone Join Date: 2004-07-25 Member: 30104Members
    Well something like that is already in place, the resevred slot, kicks the player with the least time there.
  • ekimboekimbo Join Date: 2004-07-25 Member: 30106Members
    <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->For those who aren't familiar with the PSHB, it's a bug that affects player #N on a #N player server. For instance, if you're on a 10 player server and type "status" in your console, you'll find that player 10 will be harder to kill, seem invincible, or completely own you and never seem to die.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->

    By "player 10" do you mean the tenth person on the list? Does "#N play server" refer to the number of player slots on the server or the number of players on the server at a given time?

    Does this imply either that the bug only happens when every slot is full or that the last player to connect is ALWAYS "bugged"? If other players disconnect or connect and cause the "bugged" player not to occupy the nth position in the list, does the bug effect switch to affect a different player? What effect does the "bugged" player retrying have, if any?
  • SolusSolus Join Date: 2003-05-02 Member: 16015Members, NS1 Playtester
    Read the entire first post in this thread. For more understanding, also read the document attached to the first post.

    <a href='http://www.unknownworlds.com/forums/index.php?showtopic=70356&hl=' target='_blank'>http://www.unknownworlds.com/forums/in...topic=70356&hl=</a>
  • PlasmaPlasma Join Date: 2003-04-26 Member: 15855Members, Constellation, Squad Five Blue
    ns_unlag is a boolean variable (0 or 1), the <= and < signs wont make any difference here, thats not whats being referenced in code...

    Its not related to that variable <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html//emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->
  • Norml_E_HighNorml_E_High Join Date: 2003-03-30 Member: 15055Members
    edited July 2004
    I'm not sure if I understand this correctly. So, lets say you have a 16 person server, full. Player number 16 (checking the status, number 16) will be bugged. Ok, I get that pretty much. So if it was 15/16 would player 15 be bugged? What I'm saying is, is it just the last player number on the server? If not, a sort of gimpy workaround could possibly be making the server 16/17, where slot 17 would just be some obscure reservation slot that nobody could use. Obviously this would be annoying on steam and such, with the auto-retry feature, but it might be a worthwhile tradeoff to not have gimpy players running around every server not dying. Though, thats mainly why I asked the first question, because this would not work if the next highest player number would be bugged.
  • KaineKaine Join Date: 2002-08-07 Member: 1096Members, Constellation
    ... how has this not been properly picked up on before?
    <img src='http://kaine.kod.gotlag.com/de_nuke0000%20copy.jpg' border='0' alt='user posted image' />
  • BJayDBJayD Join Date: 2002-09-02 Member: 1263Members
    <!--QuoteBegin-Plasma+Jul 25 2004, 01:39 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Plasma @ Jul 25 2004, 01:39 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> ns_unlag is a boolean variable (0 or 1), the <= and < signs wont make any difference here, thats not whats being referenced in code...

    Its not related to that variable <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html//emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--> <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd-->
    We weren't referring to the code that reads the variable "sv_unlag", but the code that actually DOES what the variable is there to do.
    By < or <= we also aren't referring to the 0 or 1 boolean value of the variable.

    The fact that disabling sv_unlag causes the bug for every player suggests to me that sv_unlag is related to the bug.
    The fact that only the last slot is affected when it is enabled, suggests to me the < instead of <= idea.

    Take some made up code for example:

    for (int i = 1 ; i < 10 ; i++ );
    {
    // apply sv_unlag code to player "i"
    }

    This will apply the code to players 1, 2, 3... up to 9. Then stop.
    If the intention was to apply the code up to and including 10, then <= should have been used.

    for (int i = 1 ; i <= 10 ; i++ );
    {
    // apply sv_unlag code to player "i"
    }

    This code would apply to 1, 2, 3 all the way to and including 10.

    Imagine that 10 is the number of slots on a server, imagine the mistake of < being used, the result is sv_unlag being applied to everyone except slot 10.

    Of course this is all theory, I've never set eyes upon the SDK or NS code, but I've encountered the < and <= error in my code plenty of times and this is a similar characteristic.
  • HolymightHolymight Join Date: 2004-04-07 Member: 27785Members
    edited July 2004
    <!--QuoteBegin-Norml E. High+Jul 25 2004, 08:48 AM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Norml E. High @ Jul 25 2004, 08:48 AM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> I'm not sure if I understand this correctly. So, lets say you have a 16 person server, full. Player number 16 (checking the status, number 16) will be bugged. Ok, I get that pretty much. So if it was 15/16 would player 15 be bugged? What I'm saying is, is it just the last player number on the server? If not, a sort of gimpy workaround could possibly be making the server 16/17, where slot 17 would just be some obscure reservation slot that nobody could use. Obviously this would be annoying on steam and such, with the auto-retry feature, but it might be a worthwhile tradeoff to not have gimpy players running around every server not dying. Though, thats mainly why I asked the first question, because this would not work if the next highest player number would be bugged. <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
    The bugged person always occupy the last slot. So on a 17 player server whoever has slot 17 will be bugged. On a 32 player server, player with the id 32 will be bugged. If the server is 10/17 then nobody will be bugged, except if one of the players occupies slot 17.

    You cannot simply fix this by creating a 17 player server. On a 17 player server like Lunixmonster which only allows 16 people in the game, it is still possible to get slot 17. If you type in status you will usually notice that there is no player 16, or 15. Some servers have set up a script to auto-kick the player in the last slot. Seems like the most effective fix for now.
  • FlayraFlayra Game Director, Unknown Worlds Entertainment San Francisco Join Date: 2002-01-22 Member: 3Super Administrators, NS2 Developer, Subnautica Developer
    edited July 2004
    Fantastic work guys. I can't believe you have figured out how to reproduce this, and narrowed it down so well. You guys are incredible!

    I dropped VALVe an e-mail about this just to see if that helps. Hopefully we'll get a response.
  • KaineKaine Join Date: 2002-08-07 Member: 1096Members, Constellation
    HE LIVES!!!!!!

    **huggles flayra excessively**
  • cortexcortex Join Date: 2003-11-28 Member: 23707Members
    rofl, whenever Flayra drops a post it feels like jesus is among us <!--emo&::nerdy::--><img src='http://www.unknownworlds.com/forums/html//emoticons/nerd.gif' border='0' style='vertical-align:middle' alt='nerd.gif' /><!--endemo-->
  • RandomEngyRandomEngy Join Date: 2002-11-03 Member: 6146Members, Reinforced - Shadow
    <!--QuoteBegin-Vo0do0-MoNk3h+Jul 25 2004, 02:24 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Vo0do0-MoNk3h @ Jul 25 2004, 02:24 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> <!--QuoteBegin-Plasma+Jul 25 2004, 01:39 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Plasma @ Jul 25 2004, 01:39 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> ns_unlag is a boolean variable (0 or 1), the <= and < signs wont make any difference here, thats not whats being referenced in code...

    Its not related to that variable <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html//emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--> <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
    We weren't referring to the code that reads the variable "sv_unlag", but the code that actually DOES what the variable is there to do.
    By < or <= we also aren't referring to the 0 or 1 boolean value of the variable.

    The fact that disabling sv_unlag causes the bug for every player suggests to me that sv_unlag is related to the bug.
    The fact that only the last slot is affected when it is enabled, suggests to me the < instead of <= idea.

    Take some made up code for example:

    for (int i = 1 ; i < 10 ; i++ );
    {
    // apply sv_unlag code to player "i"
    }

    This will apply the code to players 1, 2, 3... up to 9. Then stop.
    If the intention was to apply the code up to and including 10, then <= should have been used.

    for (int i = 1 ; i <= 10 ; i++ );
    {
    // apply sv_unlag code to player "i"
    }

    This code would apply to 1, 2, 3 all the way to and including 10.

    Imagine that 10 is the number of slots on a server, imagine the mistake of < being used, the result is sv_unlag being applied to everyone except slot 10.

    Of course this is all theory, I've never set eyes upon the SDK or NS code, but I've encountered the < and <= error in my code plenty of times and this is a similar characteristic. <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd-->
    Well maybe it should actually look like this:

    <!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1-->for (int i = 1; i <= max_players; i++ )
    {
    // apply sv_unlag code to player "i"
    }<!--c2--></td></tr></table><div class='postcolor'><!--ec2-->

    But yes that sounds quite plausible as an error.

    Anyway, nice detective work on the bug! As I read the post I felt a mystery was unfolding and being solved. It even had a plot twist: it happens in every mod! <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html//emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->
  • SlayerPLSlayerPL Join Date: 2004-07-01 Member: 29660Members
    Omg it him, eeek (runs for flayra, faints)

    (big croud) "WE LOVE YOU" (everyone giggles like school girls)

    <!--emo&:D--><img src='http://www.unknownworlds.com/forums/html//emoticons/biggrin.gif' border='0' style='vertical-align:middle' alt='biggrin.gif' /><!--endemo-->
  • NolSinklerNolSinkler On the Clorf Join Date: 2004-02-15 Member: 26560Members, Constellation
    OMG ITS HIM!!1

    ITS JESUSSS...ermh FLAYRA!

    lol

    BTW great work everyone for finding this bug, and figuring out why it happens. It is a very serious bug, I just hope valve can fix it...
  • FireStormFireStorm Join Date: 2002-11-06 Member: 7390Members
    hey, if you place a semicoon after a for like this:

    for(int i=0; i <= max; ++i);
    {
    // code
    }

    your compilator should generate a WARNING.......... and you shouldn't leave any warnings as usual <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html//emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->
  • Diablo_fxDiablo_fx Join Date: 2003-02-21 Member: 13793Members
    Thanks for your time in "looking" into this bug.
  • ForlornForlorn Join Date: 2002-11-01 Member: 2634Banned
    Even still, I'm almost certain there are ways to make a pshb player without the last slots.


    Also, how come this wasn't as noticed in the WON versions, if it indeed exsisted there?

    Sounds rather fishy to me. What exactly did Vavle do to the netcode in STEAM over WON?
  • semipsychoticsemipsychotic Join Date: 2003-07-09 Member: 18061Members
    <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Also, how come this wasn't as noticed in the WON versions, if it indeed exsisted there?

    Sounds rather fishy to me. What exactly did Vavle do to the netcode in STEAM over WON? <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
    There have been many small updates and tweaks to the HL engine since steam has been released. I think one of them might be to blame, or it might be the way they tie the games into steam.

    Hey, many thanks to those who have been tracking this bug. Nice tombstone, Tyr. <!--emo&:D--><img src='http://www.unknownworlds.com/forums/html//emoticons/biggrin.gif' border='0' style='vertical-align:middle' alt='biggrin.gif' /><!--endemo-->

    Server admins: there are a few plugins out there to sidestep the last slot, so those can be added to servers until Valve fixes this.
  • RueRue Join Date: 2002-10-21 Member: 1564Members
    At this very moment in time I am making an UberCookie for the whole NS community

    Well done to all the people involved and its nice to see our leader back on the boards

    /me bows down

    If this was the CS forums we would have a flame war by now about

    '()Mg \/4L\/3 J0o 15 teh Cr4p!!!'

    I mean have you guys seen <a href='http://www.steampowered.com/forums/showthread.php?threadid=109749' target='_blank'>this</a> post? I mean what the hell..

    If you dont want to clik on the above link click <a href='http://www.steampowered.com/forums/showthread.php?threadid=109749' target='_blank'>here</a> or <a href='http://www.steampowered.com/forums/showthread.php?threadid=109749' target='_blank'>here</a>
  • amarcamarc Guide Scribe Join Date: 2003-06-03 Member: 16982Members, Constellation, Reinforced - Supporter
    This explains so much...
  • WirheWirhe Join Date: 2003-06-22 Member: 17610Members
    <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> rofl, whenever Flayra drops a post it feels like jesus is among us<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
    Yea, how did the lore go? "Buried and risen in the..." <!--emo&;)--><img src='http://www.unknownworlds.com/forums/html//emoticons/wink.gif' border='0' style='vertical-align:middle' alt='wink.gif' /><!--endemo-->

    Or maybe someone just found the 'secret' code of his account; "Ch1k1n4Br3akfast." <!--emo&:p--><img src='http://www.unknownworlds.com/forums/html//emoticons/tounge.gif' border='0' style='vertical-align:middle' alt='tounge.gif' /><!--endemo-->
  • MopMop Join Date: 2003-06-26 Member: 17707Members
    Does anyone actually think that the steam will fix this bug? i dont really think they will with HL2 round the corner and one hell of a buggy client.

    Ive seen this happen before but ive always really classed it as 'lag'. its nice to hear that people with fast connections (like me on PURE 100Mbit) wont be able to exploit this bug because the server will see more or less what i do. Ping 12 is starting to suck ****...
This discussion has been closed.