diff -Naur xmoto-0.5.2-old/src/DBuffer.cpp xmoto-0.5.2/src/DBuffer.cpp
--- xmoto-0.5.2-old/src/DBuffer.cpp	2009-08-10 19:56:39.000000000 +0300
+++ xmoto-0.5.2/src/DBuffer.cpp	2010-01-30 14:25:55.808290128 +0200
@@ -209,7 +209,19 @@
     *this >> sn;
     n = (unsigned int) sn;
   }
-  
+ 
+  void DBuffer::operator <<(unsigned long n) {
+    int sn;
+    sn = (int) (n);
+    *this << sn;
+  }
+
+  void DBuffer::operator >>(unsigned long &n) {
+    int sn;
+    *this >> sn;
+    n = (unsigned long) sn;
+  }
+
   void DBuffer::operator <<(float n) {
     writeBuf_LE((char *)&n, sizeof(float));
   }
diff -Naur xmoto-0.5.2-old/src/DBuffer.h xmoto-0.5.2/src/DBuffer.h
--- xmoto-0.5.2-old/src/DBuffer.h	2009-08-10 19:56:39.000000000 +0300
+++ xmoto-0.5.2/src/DBuffer.h	2010-01-30 14:23:26.154771601 +0200
@@ -69,6 +69,8 @@
       void operator >>(unsigned char &c);
       void operator <<(unsigned int n);
       void operator >>(unsigned int &n);
+      void operator <<(unsigned long n);
+      void operator >>(unsigned long &n);
       void operator <<(float n);
       void operator >>(float &n);
       void operator <<(std::string s);
