Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3.  
  4. // - From nvault.h -
  5. #define VAULT_MAGIC 0x6E564C54 //nVLT
  6. #define VAULT_VERSION 0x0200 //a doua versiune
  7.  
  8. /*
  9. nVault Format //
  10.  
  11. VAULT_MAGIC (uint32)
  12. VAULT_VERSION (uint16)
  13. ENTRIES (int32)
  14. [
  15. TimeStamp (int32)
  16. KeyLen (uint8)
  17. ValLen (uint16)
  18. KeyData ([])
  19. ValData ([])
  20. ]
  21. */
  22.  
  23. new const Version[] = "0.1";
  24.  
  25. const MaxKeyLen = 255; //Max 255
  26. const MaxValLen = 512; //Max 65535
  27. const DataBuffer = 128; //Make this the greater of (MaxKeyLen / 4) or (MaxValLen / 4)
  28.  
  29. public plugin_init()
  30. {
  31. register_plugin( "nVReadEr" , Version , "Sticks" );
  32.  
  33. ReadVault( "TheVaultFile" );
  34. }
  35.  
  36. public ReadVault( const szVault[] )
  37. {
  38. new szFile[ 64 ] , iFile;
  39. new iVaultMagic , iVaultVersion , iVaultEntries;
  40. new iKeyLen , iValLen , iTimeStamp;
  41. new szKey[ MaxKeyLen + 1 ] , szVal[ MaxValLen + 1 ] , RawData[ DataBuffer ];
  42.  
  43. formatex( szFile[ get_datadir( szFile , charsmax( szFile ) ) ] , charsmax( szFile ) , "/vault/%s.vault" , szVault );
  44.  
  45. iFile = fopen( szFile , "rb" );
  46.  
  47. if ( !iFile )
  48. return 0;
  49.  
  50. // Vault Magic
  51. fread_raw( iFile , RawData , 1 , BLOCK_INT );
  52. iVaultMagic = RawData[ 0 ];
  53.  
  54. if ( iVaultMagic != VAULT_MAGIC )
  55. set_fail_state( "Error reading nVault: Vault Magic" );
  56.  
  57. // Vault Version
  58. fread_raw( iFile , RawData , 1 , BLOCK_SHORT );
  59. iVaultVersion = RawData[ 0 ] & 0xFFFF;
  60.  
  61. if ( iVaultVersion != VAULT_VERSION )
  62. set_fail_state( "Error reading nVault: Vault Version" );
  63.  
  64. // Vault Entries
  65. fread_raw( iFile , RawData , 1 , BLOCK_INT );
  66. iVaultEntries = RawData[ 0 ];
  67.  
  68. server_print( "nVault | Magic=%d Version=%d Entries=%d" , iVaultMagic , iVaultVersion , iVaultEntries );
  69. server_print( " " );
  70.  
  71. for ( new iEntry = 0 ; iEntry < iVaultEntries ; iEntry++ )
  72. {
  73. // TimeStamp
  74. fread_raw( iFile , RawData , 1 , BLOCK_INT );
  75. iTimeStamp = RawData[ 0 ];
  76.  
  77. // Key Length
  78. fread_raw( iFile , RawData , 1 , BLOCK_BYTE );
  79. iKeyLen = RawData[ 0 ] & 0xFF;
  80.  
  81. // Val Length
  82. fread_raw( iFile , RawData , 1 , BLOCK_SHORT );
  83. iValLen = RawData[ 0 ] & 0xFFFF;
  84.  
  85. // Key Data
  86. fread_raw( iFile , RawData , iKeyLen , BLOCK_CHAR );
  87. ReadString( szKey , iKeyLen , charsmax( szKey ) , RawData );
  88.  
  89. // Val Data
  90. fread_raw( iFile , RawData , iValLen , BLOCK_CHAR );
  91. ReadString( szVal , iValLen , charsmax( szVal ) , RawData );
  92.  
  93. server_print( "Entry=%d KeyLen=%d ValLen=%d TimeStamp=%d" , iEntry , iKeyLen , iValLen , iTimeStamp );
  94. server_print( "Key=^"%s^"" , szKey );
  95. server_print( "Val=^"%s^"" , szVal );
  96. server_print( " " );
  97. }
  98.  
  99. fclose( iFile );
  100.  
  101. return iVaultEntries;
  102. }
  103.  
  104. ReadString( szDestString[] , iLen , iMaxLen , SourceData[] )
  105. {
  106. new iStrPos = -1;
  107. new iRawPos = 0;
  108.  
  109. while ( ( ++iStrPos < iLen ) && ( iStrPos < iMaxLen ) && ( iRawPos < DataBuffer ) )
  110. {
  111. szDestString[ iStrPos ] = ( SourceData[ iRawPos ] >> ( ( iStrPos % 4 ) * 8 ) ) & 0xFF;
  112.  
  113. if ( iStrPos && ( ( iStrPos % 4 ) == 3 ) )
  114. iRawPos++
  115. }
  116.  
  117. szDestString[ iStrPos ] = EOS;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement