Browse Source

Spieler die offline sind, werden jetzt ignoriert

Kolja Strohm 4 years ago
parent
commit
e0a8886c9c
2 changed files with 16 additions and 15 deletions
  1. 13 12
      StickmanWorldOnline/Spiel.cpp
  2. 3 3
      StickmanWorldOnline/Spieler.cpp

+ 13 - 12
StickmanWorldOnline/Spiel.cpp

@@ -198,7 +198,8 @@ void Spiel::run()
     time( &t );
     srand( (unsigned int)t );
     log->schreibe( (char *)& spielerAnzahl, 4 );
-    for( int i = 0; i < spielerAnzahl; i++ )
+    int anz = spieler.getEintragAnzahl();
+    for( int i = 0; i < anz; i++ )
     {
         Spieler *tmp = spieler.z( i );
         if( tmp && tmp->zKlient() )
@@ -230,7 +231,7 @@ void Spiel::run()
     double ausgleich = 0;
     double sZ = 0;
     gameTicks = -1;
-    for( int i = 0; i < spielerAnzahl; i++ )
+    for( int i = 0; i < anz; i++ )
     {
         Spieler *tmp = spieler.z( i );
         if( tmp && tmp->zKlient() )
@@ -260,7 +261,7 @@ void Spiel::run()
     }
     zeit->messungEnde();
     zeit->release();
-    for( int i = 0; i < spielerAnzahl; i++ )
+    for( int i = 0; i < anz; i++ )
     {
         if( spieler.z( i ) && spieler.z( i )->zKlient() )
         {
@@ -284,7 +285,7 @@ void Spiel::run()
             spielerStatus.set( 3, i );
     }
     psqldb->setSpielStatusBeendet( spielId, 5 );
-    for( int i = 0; i < spielerAnzahl; i++ )
+    for( int i = 0; i < anz; i++ )
     {
         Spieler *tmp = spieler.z( i );
         if( tmp )
@@ -300,7 +301,7 @@ void Spiel::run()
 // call 7
 void Spiel::klientOffline( int accountId )
 {
-    for( int i = 0; i < spielerAnzahl; i++ )
+    for( int i = 0; i < spieler.getEintragAnzahl(); i++ )
     {
         if( spieler.z( i )->getAccountId() == accountId )
             spieler.z( i )->zKlient()->offline();
@@ -309,7 +310,7 @@ void Spiel::klientOffline( int accountId )
 
 void Spiel::klientOnline( int accountId, SSKlientV *zKlient )
 {
-    for( int i = 0; i < spielerAnzahl; i++ )
+    for( int i = 0; i < spieler.getEintragAnzahl(); i++ )
     {
         if( spieler.z( i )->getAccountId() == accountId )
         {
@@ -344,7 +345,7 @@ void Spiel::nachricht( int accountId, int len, char *bytes )
     case 0: // key press
         bytes++;
         len--;
-        for( int i = 0; i < spielerAnzahl; i++ )
+        for( int i = 0; i < spieler.getEintragAnzahl(); i++ )
         {
             Spieler *tmp = spieler.z( i );
             if( tmp && tmp->getAccountId() == accountId )
@@ -359,7 +360,7 @@ void Spiel::nachricht( int accountId, int len, char *bytes )
                 e->addParameter( "Betroffene Taste", new String( buff ) );
                 e->addParameter( "Ausführender Spieler", tmp->getThis() );
                 throwEvent( e );
-                for( int j = 0; j < spielerAnzahl; j++ )
+                for( int j = 0; j < spieler.getEintragAnzahl(); j++ )
                 {
                     Spieler *s = spieler.z( j );
                     if( s && s->zKlient() )
@@ -372,7 +373,7 @@ void Spiel::nachricht( int accountId, int len, char *bytes )
     case 1: // key release
         bytes++;
         len--;
-        for( int i = 0; i < spielerAnzahl; i++ )
+        for( int i = 0; i < spieler.getEintragAnzahl(); i++ )
         {
             Spieler *tmp = spieler.z( i );
             if( tmp && tmp->getAccountId() == accountId )
@@ -387,7 +388,7 @@ void Spiel::nachricht( int accountId, int len, char *bytes )
                 e->addParameter( "Betroffene Taste", new String( buff ) );
                 e->addParameter( "Ausführender Spieler", tmp->getThis() );
                 throwEvent( e );
-                for( int j = 0; j < spielerAnzahl; j++ )
+                for( int j = 0; j < spieler.getEintragAnzahl(); j++ )
                 {
                     Spieler *s = spieler.z( j );
                     if( s && s->zKlient() )
@@ -404,7 +405,7 @@ void Spiel::nachricht( int accountId, int len, char *bytes )
             Text *txt = psqldb->getAccountRufName( accountId );
             txt->append( ": " );
             txt->append( bytes, len );
-            for( int i = 0; i < spielerAnzahl; i++ )
+            for( int i = 0; i < spieler.getEintragAnzahl(); i++ )
             {
                 Spieler *tmp = spieler.z( i );
                 if( tmp && tmp->zKlient() )
@@ -426,7 +427,7 @@ void Spiel::nachricht( int accountId, int len, char *bytes )
         char c = 1;
         log->schreibe( &c, 1 );
         int spielerNum = 0;
-        for( int i = 0; i < spielerAnzahl; i++ )
+        for( int i = 0; i < spieler.getEintragAnzahl(); i++ )
         {
             Spieler *tmp = spieler.z( i );
             if( tmp && tmp->getAccountId() == msgAccount )

+ 3 - 3
StickmanWorldOnline/Spieler.cpp

@@ -581,7 +581,7 @@ void Spieler::addGemachterSchaden( float schaden, Spiel *zSpiel )
 // zieht die rüstung ab
 void Spieler::nimmSchaden( float schaden, Spieler *zVerursacher, Richtung r, Spiel *zSpiel )
 {
-    if( !isVerwundbar( r ) || !amLeben )
+    if( !isVerwundbar( r ) || !istAmLeben() )
         return;
     if( zVerursacher )
         schaden += schaden / 100 * zVerursacher->getSchadenBonus();
@@ -614,7 +614,7 @@ void Spieler::nimmSchaden( float schaden, Spieler *zVerursacher, Richtung r, Spi
 
 void Spieler::heilung( float heal, Spiel *zSpiel )
 {
-    if( amLeben )
+    if( istAmLeben() )
     {
         lebenGeheilt += heal;
         leben += heal;
@@ -769,7 +769,7 @@ int Spieler::getPunkte() const
 
 bool Spieler::istAmLeben() const
 {
-    return amLeben;
+    return amLeben && accountId;
 }
 
 float Spieler::getLaufTempo() const