Gothic Online Forums
BitStreamFile - Printable Version

+- Gothic Online Forums (https://archive.gothic-online.com)
+-- Forum: Scripting (English) (https://archive.gothic-online.com/forum-11.html)
+--- Forum: Resources (https://archive.gothic-online.com/forum-14.html)
+---- Forum: Frameworks (https://archive.gothic-online.com/forum-16.html)
+---- Thread: BitStreamFile (/thread-2377.html)



BitStreamFile - Sative - 28.02.2018

Hello!

This module can be usable for people who want's to make file based saving on their servers just simply as packets.
Code:
Code:
/* Binary-based bit stream file class by Sative */

class BitStreamFile extends file
{
   function contructor(path, pattern)
   {
       base.constructor(path, pattern);
   }

   function writeBool(val)
   {
       base.writen(val.tointeger(), 'b');
   }

   function writeChar(val)
   {
       base.writen(val, 'c');
   }

   function writeInt8(val)
   {
       base.writen(val, 'c');
   }

   function writeUInt8(val)
   {
       base.writen(val, 'b');
   }

   function writeInt16(val)
   {
       base.writen(val, 's');
   }

   function writeUInt16(val)
   {
       base.writen(val, 'w');
   }

   function writeInt32(val)
   {
       base.writen(val, 'i');
   }

   function writeFloat32(val)
   {
       base.writen(val, 'f');
   }

   function writeFloat64(val)
   {
       base.writen(val, 'd');
   }

   function readBool()
   {
       return base.readn('b');
   }

   function readChar()
   {
       return base.readn('c');
   }

   function readInt8()
   {
       return base.readn('c');
   }

   function readUInt8()
   {
       return base.readn('b');
   }
   
   function readInt16()
   {
       return base.readn('s');
   }

   function readUInt16()
   {
       return base.readn('w');
   }

   function readInt32()
   {
       return base.readn('i');
   }

   function readFloat32()
   {
       return base.readn('f');
   }

   function readFloat64()
   {
       return base.readn('d');
   }

   function writeString(val)
   {
       local len = val.len();
       writeUInt16(len);
       for(local i = 0; i < len; i++)
           writeChar(val[i]);
   }

   function readString()
   {
       local len = readUInt16();
       local result = "";
       for(local i = 0; i < len; i++)
           result += format("%c", readChar());
       return result;
   }
}
Example:
Code:
addEventHandler("onInit", function()
{
  local myFile = BitStreamFile("test.txt", "wb+");
  myFile.writeBool(true);
  myFile.writeInt16(1650);
  myFile.writeString("Test!");
  myFile.close();

  myFile = BitStreamFile("test.txt", "rb");
  print(myFile.readBool());
  print(myFile.readInt16());
  print(myFile.readString());
  myFile.close();
});