Browse Source

Spieler die offline sind werden jetzt ignoriert

Kolja Strohm 4 years ago
parent
commit
8395ed4af0
2 changed files with 21 additions and 15 deletions
  1. 6 3
      StickmanWorldOnline/Spiel.cpp
  2. 15 12
      StickmanWorldOnline/Spieler.cpp

+ 6 - 3
StickmanWorldOnline/Spiel.cpp

@@ -634,9 +634,12 @@ void Spiel::stknVerarbeitung()
                     if( s->getId() == sId )
                     {
                         s->setAccount( aId );
-                        Text *t = infoKlient->getSpielerName( aId );
-                        s->setName( t->getText() );
-                        t->release();
+                        if( aId != 0 )
+                        {
+                            Text *t = infoKlient->getSpielerName( aId );
+                            s->setName( t->getText() );
+                            t->release();
+                        }
                         break;
                     }
                 }

+ 15 - 12
StickmanWorldOnline/Spieler.cpp

@@ -551,17 +551,20 @@ void Spieler::tick( double zeit, Spiel *zSpiel )
 
 void Spieler::render( Bild &rObj )
 {
-    GameObject::render( rObj );
-    if( rObj.setDrawOptions( (int)x, (int)y, (int)w, (int)h ) )
+    if( istAmLeben() )
     {
-        if( showHeilung )
-            rObj.alphaBildSkall( (int)x, (int)y, (int)w, (int)h, *heilungR->zImage( heilungImage ) );
-        if( showSchaden )
-            rObj.alphaBildSkall( (int)x, (int)y, (int)w, (int)h, *schadenR->zImage( schadenImage ) );
-        rObj.releaseDrawOptions();
+        GameObject::render( rObj );
+        if( rObj.setDrawOptions( (int)x, (int)y, (int)w, (int)h ) )
+        {
+            if( showHeilung )
+                rObj.alphaBildSkall( (int)x, (int)y, (int)w, (int)h, *heilungR->zImage( heilungImage ) );
+            if( showSchaden )
+                rObj.alphaBildSkall( (int)x, (int)y, (int)w, (int)h, *schadenR->zImage( schadenImage ) );
+            rObj.releaseDrawOptions();
+        }
+        for( auto e = effekte.getIterator(); e; e++ )
+            e->renderSpieler( rObj );
     }
-    for( auto e = effekte.getIterator(); e; e++ )
-        e->renderSpieler( rObj );
 }
 
 void Spieler::useItem( Spiel *zSpiel )
@@ -705,7 +708,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();
@@ -745,7 +748,7 @@ void Spieler::nimmSchaden( float schaden, Spieler *zVerursacher, Richtung r, Spi
 
 void Spieler::heilung( float heal, Spiel *zSpiel, bool show )
 {
-    if( amLeben )
+    if( istAmLeben() )
     {
         lebenGeheilt += heal;
         leben += heal;
@@ -897,7 +900,7 @@ int Spieler::getPunkte() const
 
 bool Spieler::istAmLeben() const
 {
-    return amLeben;
+    return amLeben && accountId;
 }
 
 float Spieler::getLaufTempo() const