Browse Source

Ein paar fehler bei der übergabe von parametern behoben

Kolja Strohm 5 years ago
parent
commit
6358299ae8

+ 10 - 9
StickmanWorldOnline/Aktionen.cpp

@@ -48,7 +48,7 @@ bool Aktion::runNext( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory,
             return 0;
         }
         Variable *result = zReturn;
-        if( ( !result && erlaubteTypen.get( i ) != NICHTS ) || result->getVariableTyp() != erlaubteTypen.get( i ) )
+        if( ( !result && erlaubteTypen.get( i ) != NICHTS ) || ( result && result->getVariableTyp() != erlaubteTypen.get( i ) ) )
         {
             zPC->stepOut();
             return 1;
@@ -146,7 +146,7 @@ void KonstantVariable::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMe
     if( zMemory->zVariable( name ) )
         setReturn( zMemory->getVariable( name ) );
     else if( zEreignis->zParameter( name ) )
-        setReturn( zEreignis->zParameter( name ) );
+        setReturn( zEreignis->getParameter( name ) );
     else if( zSpiel->zVariable( name ) )
         setReturn( zSpiel->getVariable( name ) );
     else
@@ -341,7 +341,7 @@ void SpielEnde::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, P
     Variable *t = zParam( 0 );
     if( t->getVariableTyp() != NICHTS && t->getVariableTyp() != TEAM )
         t = 0;
-    zSpiel->setEnde( t->getVariableTyp() == NICHTS ? 0 : (Team *)t );
+    zSpiel->setEnde( ( !t || t->getVariableTyp() == NICHTS ) ? 0 : (Team *)t );
 }
 
 
@@ -652,7 +652,7 @@ BariereSetTeam::BariereSetTeam( RCArray< Aktion > *subActions )
 
 void BariereSetTeam::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
 {
-    ( (Bariere *)zParam( 1 ) )->setTeam( ( (Team *)zParam( 0 ) ) );
+    ( (Bariere *)zParam( 1 ) )->setTeam( ( (Team *)getParam( 0 ) ) );
 }
 
 
@@ -757,7 +757,7 @@ BaseSetTeam::BaseSetTeam( RCArray< Aktion > *subActions )
 
 void BaseSetTeam::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
 {
-    ( (Base *)zParam( 1 ) )->setTeam( ( (Team *)zParam( 0 ) ), zSpiel );
+    ( (Base *)zParam( 1 ) )->setTeam( ( (Team *)getParam( 0 ) ), zSpiel );
 }
 
 
@@ -770,7 +770,7 @@ BaseStartTeamChange::BaseStartTeamChange( RCArray< Aktion > *subActions )
 
 void BaseStartTeamChange::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
 {
-    ( (Base *)zParam( 1 ) )->startChange( ( (Team *)zParam( 0 ) ) );
+    ( (Base *)zParam( 1 ) )->startChange( ( (Team *)getParam( 0 ) ) );
 }
 
 
@@ -906,7 +906,7 @@ GeschossSetPlayer::GeschossSetPlayer( RCArray< Aktion > *subActions )
 
 void GeschossSetPlayer::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemory, ProgramCounter *zPC, double &waitCount )
 {
-    ( (Geschoss *)zParam( 1 ) )->setBesitzer( ( (Spieler *)zMemory->getVariable( zPC->getUniqueString() + "R0__" ) ) );
+    ( (Geschoss *)zParam( 1 ) )->setBesitzer( ( (Spieler *)getParam( 0 ) ) );
 }
 
 
@@ -1037,7 +1037,8 @@ void DropZuletztGedropt::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *z
 
 
 IntegerRechnen::IntegerRechnen( RCArray< Aktion > *subActions, Operator op )
-    : Aktion( INTEGER_RECHNEN, subActions )
+    : Aktion( INTEGER_RECHNEN, subActions ),
+    op()
 {
     erlaubteTypen.add( INTEGER );
     erlaubteTypen.add( INTEGER );
@@ -1133,7 +1134,7 @@ void IntegerZufall::run( Spiel *zSpiel, Ereignis *zEreignis, LocalMemory *zMemor
 {
     int mi = ( (Integer *)zParam( 0 ) )->getValue();
     int ma = ( (Integer *)zParam( 1 ) )->getValue();
-    setReturn( new Integer( (int)( zSpiel->getRand() * ( ma - mi ) + mi ) ) );
+    setReturn( new Integer( (int)( zSpiel->getRand() * ( (__int64)ma - mi ) + mi ) ) );
 }
 
 

+ 1 - 1
StickmanWorldOnline/Gegenstand.cpp

@@ -124,7 +124,7 @@ float abklingzeit( GegenstandTyp typ )
 
 bool storable( GegenstandTyp typ )
 {
-    return typ == RWEISHEIT || typ == RSTRENGTH || typ == RBOSHEIT || typ == RLEBEN || typ == RTEMPO;
+    return !(typ == RWEISHEIT || typ == RSTRENGTH || typ == RBOSHEIT || typ == RLEBEN || typ == RTEMPO);
 }
 
 bool brauchtRichtung( GegenstandTyp typ )

+ 1 - 1
StickmanWorldOnline/Spiel.cpp

@@ -900,8 +900,8 @@ void Spiel::spielerActivate( Spieler *zSpieler )
     {
         if( items.z( i )->intersectsWith( zSpieler ) )
         {
-            items.remove( i );
             zSpieler->addItem( items.z( i )->getTyp(), 1, this );
+            items.remove( i );
             i--;
         }
     }