Index: /branches/network/src/lib/network/network_game_manager.cc
===================================================================
--- /branches/network/src/lib/network/network_game_manager.cc	(revision 6705)
+++ /branches/network/src/lib/network/network_game_manager.cc	(revision 6706)
@@ -527,5 +527,5 @@
         PNode *p = dynamic_cast<PNode*>(b);
         p->setAbsCoor(pos);
-        //p->updateNode(0);
+        p->updateNode(0);
         pos += Vector(1000.0, 1000.0, 1000.0);
       }
Index: /branches/network/src/world_entities/space_ships/space_ship.cc
===================================================================
--- /branches/network/src/world_entities/space_ships/space_ship.cc	(revision 6705)
+++ /branches/network/src/world_entities/space_ships/space_ship.cc	(revision 6706)
@@ -289,5 +289,5 @@
   this->weaponAction();
 
-  if( xMouse != 0 || yMouse != 0)
+  if( ( xMouse != 0 || yMouse != 0 ) && this->getOwner()==this->getHostID() )
    {
     if (xMouse > controlVelocityX) xMouse = controlVelocityX;
@@ -528,34 +528,48 @@
 
   byte b;
-  SYNCHELP_READ_BYTE( b );
-
-  if ( b == DATA_state /*&& (this->getHostID()!=this->getOwner() || sender==0)*/ )
-  {
-    PRINTF(0)("GOT STATE %d\n", this->getUniqueID());
-    setRequestedSync( false );
-    setIsOutOfSync( false );
-    SYNCHELP_READ_FKT( WorldEntity::writeState );
-    //SYNCHELP_READ_FLOAT( cycle );
-
-    return SYNCHELP_READ_N;
-  }
-
-
-  if ( b == DATA_flags /*&& this->getHostID()!=this->getOwner()*/ )
-  {
-    int flags = 0;
-    SYNCHELP_READ_INT( flags );
-
-    bUp = (flags & MASK_bUp) != 0;
-    bDown = (flags & MASK_bDown) != 0;
-    bLeft = (flags & MASK_bLeft) != 0;
-    bRight = (flags & MASK_bRight) != 0;
-    bAscend = (flags & MASK_bAscend) != 0;
-    bDescend = (flags & MASK_bDescend) != 0;
-    bFire = (flags & MASK_bFire) != 0;
-    bRollL = (flags & MASK_bRollL) != 0;
-    bRollR = (flags & MASK_bRollR) != 0;
-
-  }
+  
+  do 
+  {
+    SYNCHELP_READ_BYTE( b );
+
+    if ( b == DATA_state /*&& (this->getHostID()!=this->getOwner() || sender==0)*/ )
+    {
+     PRINTF(0)("GOT STATE %d\n", this->getUniqueID());
+     setRequestedSync( false );
+     setIsOutOfSync( false );
+     SYNCHELP_READ_FKT( WorldEntity::writeState );
+     //SYNCHELP_READ_FLOAT( cycle );
+
+      return SYNCHELP_READ_N;
+    }
+
+
+    //TODO: do not recieve data if you are the owner
+    if ( b == DATA_flags /*&& this->getHostID()!=this->getOwner()*/ )
+    {
+      int flags = 0;
+      SYNCHELP_READ_INT( flags );
+
+      bUp = (flags & MASK_bUp) != 0;
+      bDown = (flags & MASK_bDown) != 0;
+      bLeft = (flags & MASK_bLeft) != 0;
+      bRight = (flags & MASK_bRight) != 0;
+      bAscend = (flags & MASK_bAscend) != 0;
+      bDescend = (flags & MASK_bDescend) != 0;
+      bFire = (flags & MASK_bFire) != 0;
+      bRollL = (flags & MASK_bRollL) != 0;
+      bRollR = (flags & MASK_bRollR) != 0;
+
+    }
+    
+    //TODO: do not recieve data if you are the owner
+    if ( b == DATA_mouse /*&& this->getHostID()!=this->getOwner()*/ )
+    {
+      SYNCHELP_READ_FLOAT( mouseDir.w );
+      SYNCHELP_READ_FLOAT( mouseDir.v.x );
+      SYNCHELP_READ_FLOAT( mouseDir.v.y );
+      SYNCHELP_READ_FLOAT( mouseDir.v.z );
+    }
+  } while( b != 0 );
 
   /*if ( b == DATA_mouse && this->getHostID()!=this->getOwner() )
@@ -634,24 +648,23 @@
       SYNCHELP_WRITE_INT( mask );
     }
-    else
-    {
-      SYNCHELP_WRITE_BYTE( 0 );
-    }
-
-    /*if ( oldxMouse != xMouse || oldyMouse != yMouse )
-    {
-      oldxMouse = xMouse;
-      oldyMouse = yMouse;
+#define __OFFSET_ROT 0.05
+    if ( fabs( oldMouseDir.w - mouseDir.w ) > __OFFSET_ROT ||
+         fabs( oldMouseDir.v.x - mouseDir.v.x ) > __OFFSET_ROT ||
+         fabs( oldMouseDir.v.y - mouseDir.v.y ) > __OFFSET_ROT ||
+         fabs( oldMouseDir.v.z - mouseDir.v.z ) > __OFFSET_ROT )
+    {
+      oldMouseDir = mouseDir;
+      
       SYNCHELP_WRITE_BYTE( DATA_mouse );
-      SYNCHELP_WRITE_FLOAT( xMouse );
-      SYNCHELP_WRITE_FLOAT( yMouse );
-      SYNCHELP_WRITE_FLOAT( mouseSensitivity );
-      SYNCHELP_WRITE_FLOAT( cycle );
-    }*/
-  }
-  else
-  {
-    SYNCHELP_WRITE_BYTE( 0 );
-  }
+      SYNCHELP_WRITE_FLOAT( mouseDir.w );
+      SYNCHELP_WRITE_FLOAT( mouseDir.v.x );
+      SYNCHELP_WRITE_FLOAT( mouseDir.v.y );
+      SYNCHELP_WRITE_FLOAT( mouseDir.v.z );
+    }
+
+  }
+
+  SYNCHELP_WRITE_BYTE( 0 );
+
 
   if ( this->getOwner() == this->getHostID() )
Index: /branches/network/src/world_entities/space_ships/space_ship.h
===================================================================
--- /branches/network/src/world_entities/space_ships/space_ship.h	(revision 6705)
+++ /branches/network/src/world_entities/space_ships/space_ship.h	(revision 6706)
@@ -72,4 +72,5 @@
     Vector                velocity;           //!< the velocity of the player.
     Quaternion            mouseDir;           //!< the direction where the player wants to fly
+    Quaternion            oldMouseDir;        //!< the direction where the player wanted to fly
     float                 shipInertia;        //!< the inertia of the ship(how fast the ship reacts to a mouse input)
     Quaternion            rotQuat;
Index: /branches/network/src/world_entities/weapons/weapon_manager.cc
===================================================================
--- /branches/network/src/world_entities/weapons/weapon_manager.cc	(revision 6705)
+++ /branches/network/src/world_entities/weapons/weapon_manager.cc	(revision 6706)
@@ -217,5 +217,6 @@
 bool WeaponManager::addWeapon(Weapon* weapon, int configID, int slotID)
 {
-  assert(weapon != NULL);
+  if ( weapon == NULL )
+    return false;
 
   if (unlikely(configID >= WM_MAX_CONFIGS || slotID >= (int)this->slotCount))
