PHP Code:
// Here is an exampe.(The code about reading nvault data is copied from Bugsy)
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <sqlx>
#define PLUGIN_NAME "nVault2MySQL"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "Csoldjb"
new const szNURL[]="addons/amxmodx/data/vault/blacklist.vault"
// BlackList
// Sheet format
/*
BlackName Info
sbbaobao sb123
hzqst 456
... ...
*/
new Handle:hDbTuple
new g_ERROR[512]
const MaxKeyLen = 50
const MaxValLen = 110
const DataBuffer = 128
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
register_concmd("test","test")
hDbTuple=SQL_MakeDbTuple("127.0.0.1","root","12345","cssql")
new iErrorCode
new Handle:hSqlConnection = SQL_Connect(hDbTuple,iErrorCode,g_ERROR,511)
if(hSqlConnection == Empty_Handle)
{
console_print(1,"[SQL]SQL Connect Failed!")
set_fail_state("SQL Connect Failed!")
}
new Handle:hQuery
hQuery=SQL_PrepareQuery(hSqlConnection,"CREATE TABLE IF NOT EXISTS BlackList (BlackName char(40),Info CHAR(100))")
if(!SQL_Execute(hQuery))
{
SQL_QueryError(hQuery,g_ERROR,511)
console_print(1,"[SQL]SQL TABLE QUERY Failed For Reason:%s",g_ERROR)
set_fail_state("[SQL]SQL TABLE QUERY Failed!")
}
SQL_FreeHandle(hQuery)
SQL_FreeHandle(hSqlConnection)
}
public test(id)
{
client_print(1,print_chat,"[ID:%i] MySQL Test Started",id)
new iErrorCode
new Handle:hSqlConnection = SQL_Connect(hDbTuple,iErrorCode,g_ERROR,511)
if(hSqlConnection == Empty_Handle)
{
console_print(1,"[SQL]SQL Connect Failed!")
set_fail_state("SQL Connect Failed!")
}
new iFile
new iVaultMagic , iVaultVersion , iVaultEntries
new iKeyLen , iValLen , iTimeStamp
new szKey[ MaxKeyLen + 1 ] , szVal[ MaxValLen + 1 ] , RawData[ DataBuffer ]
iFile = fopen(szNURL,"rb")
if ( !iFile )
{
client_print(1,print_chat,"[nVault]File Read Failed!")
return
}
fread_raw( iFile , RawData , 1 , BLOCK_INT)
iVaultMagic = RawData[0]
if ( iVaultMagic != 0x6E564C54 )
{
client_print(1,print_chat,"[nVault]Magic Vault!")
return
}
fread_raw( iFile , RawData , 1 , BLOCK_SHORT )
iVaultVersion = RawData[0] & 0xFFFF
if ( iVaultVersion != 0x0200 )
{
client_print(1,print_chat,"[nVault]Vault Version!")
return
}
fread_raw( iFile , RawData , 1 , BLOCK_INT )
iVaultEntries = RawData[0]
client_print(1,print_chat,"[nVault] Entries Found:%d",iVaultEntries)
for ( new iEntry = 0 ; iEntry < iVaultEntries ; iEntry++ )
{
fread_raw( iFile , RawData , 1 , BLOCK_INT )
iTimeStamp = RawData[ 0 ]
fread_raw( iFile , RawData , 1 , BLOCK_BYTE )
iKeyLen = RawData[ 0 ] & 0xFF
fread_raw( iFile , RawData , 1 , BLOCK_SHORT )
iValLen = RawData[ 0 ] & 0xFFFF
fread_raw( iFile , RawData , iKeyLen , BLOCK_CHAR )
ReadString( szKey , iKeyLen , charsmax( szKey ) , RawData )
fread_raw( iFile , RawData , iValLen , BLOCK_CHAR );
ReadString( szVal , iValLen , charsmax( szVal ) , RawData )
//server_print( "Entry=%d KeyLen=%d ValLen=%d TimeStamp=%d" , iEntry , iKeyLen , iValLen , iTimeStamp )
client_print(1,print_chat,"[DATA][Key:%s][Value:%s]",szKey,szVal)
new Handle:Query
new szQuery[256]
format(szQuery,255,"INSERT BlackList VALUES (^'%s^',^'%s^')",szKey,szVal)
Query = SQL_PrepareQuery(hSqlConnection,szQuery)
if(!SQL_Execute(Query))
{
client_print(1,print_chat,"[DATA] Convery Failed!")
continue
}
client_print(1,print_chat,"[DATA] Convery Success!")
SQL_FreeHandle(Query)
}
fclose( iFile )
}
stock ReadString( szDestString[] , iLen , iMaxLen , SourceData[] )
{
new iStrPos = -1;
new iRawPos = 0;
while ( ( ++iStrPos < iLen ) && ( iStrPos < iMaxLen ) && ( iRawPos < DataBuffer ) )
{
szDestString[ iStrPos ] = ( SourceData[ iRawPos ] >> ( ( iStrPos % 4 ) * 8 ) ) & 0xFF;
if ( iStrPos && ( ( iStrPos % 4 ) == 3 ) ) iRawPos++
}
szDestString[ iStrPos ] = EOS
}