rendered paste bodystatic stock YSI_g_sDBCurrentTag[MAX_INI_TAG];stock DB_Open(name[]){ new DB:dbHnd = db_open(name); if (dbHnd) { db_query(dbHnd, "BEGIN;"); } return dbHnd;}stock DB_Close(DB:dbHnd){ if (dbHnd) { db_query(dbHnd, "END;"); db_close(dbHnd); return 1; } return 0;}#define DB_SetTag DB_SetTablestock DB_SetTable(DB:dbHnd, table[]){ if (dbHnd) { new query[64]; format(query, sizeof (query), "CREATE TABLE IF NOT EXISTS %s(key integer NOT NULL PRIMARY KEY AUTOINCREMENT);", table); strcpy(YSI_g_sDBCurrentTag, table, sizeof (YSI_g_sDBCurrentTag)); db_query(dbHnd, query); return 1; } return 0;}stock DB_SetRow(DB:dbHnd, row = -1){ if (dbHnd) { new query[64]; if (row == -1) { format(query, sizeof (query), "INSERT INTO %s (_ROWID_) VALUES (last_insert_rowid() + 1)", YSI_g_sDBCurrentTag); db_query(dbHnd, query); } format(query, sizeof (query), "CREATE TABLE IF NOT EXISTS %s(key integer NOT NULL PRIMARY KEY AUTOINCREMENT);", table); strcpy(YSI_g_sDBCurrentTag, table, sizeof (YSI_g_sDBCurrentTag)); return row; } return -1;}stock DB_WriteString(DB:dbHnd, name[], data[]){ if (dbHnd) { DB_AddColumn(dbHnd, name, "varchar(" #MAX_INI_ENTRY_TEXT ")"); return 1; } return 0;}stock DB_WriteInt(DB:dbHnd, name[], data){ if (dbHnd) { DB_AddColumn(dbHnd, name, "integer"); return 1; } return 0;}stock DB_WriteFloat(DB:dbHnd, name[], Float:data){ if (dbHnd) { DB_AddColumn(dbHnd, name, "real"); return 1; } return 0;}static stock DB_AddColumn(DB:dbHnd, name[], type[]){ new query[256]; format(query, sizeof (query), "SELECT sql FROM sqlite_master WHERE tbl_name = '%s';", YSI_g_sDBCurrentTag); new DBResult:dbResult = db_query(dbHnd, query); if (dbResult) { db_get_field(dbResult, 0, query, sizeof (query)); db_free_result(dbResult); if (wordfind(name, query, chrfind('(', query)) != -1) { return 1; } } format(query, sizeof (query), "ALTER TABLE %s ADD COLUMN %s %s; VACUUM;", YSI_g_sDBCurrentTag, name, type); db_query(dbHnd, query); return 0;}