#include public Plugin:myinfo = { name = "File test", author = "AlliedModders LLC", description = "Tests file functions", version = "1.0.0.0", url = "http://www.sourcemod.net/" }; public void OnPluginStart() { RegServerCmd("test_fread1", Test_ReadBinStr); } File OpenFile2(const String:path[], const String:mode[]) { File file = OpenFile(path, mode); if (!file) PrintToServer("Failed to open file %s for %s", path, mode); else PrintToServer("Opened file handle %x: %s", file, path); return file; } public Action Test_ReadBinStr(args) { int items[] = {1, 3, 5, 7, 0, 92, 193, 26, 0, 84, 248, 2}; File of = OpenFile2("smbintest", "wb"); if (!of) return Plugin_Handled; of.Write(items, sizeof(items), 1); of.Close(); File inf = OpenFile2("smbintest", "rb"); char buffer[sizeof(items)]; inf.ReadString(buffer, sizeof(items), sizeof(items)); inf.Seek(0, SEEK_SET); int items2[sizeof(items)]; inf.Read(items2, sizeof(items), 1); inf.Close(); for (new i = 0; i < sizeof(items); i++) { if (buffer[i] != items[i]) { PrintToServer("FAILED ON INDEX %d: %d != %d", i, buffer[i], items[i]); return Plugin_Handled; } else if (items2[i] != items[i]) { PrintToServer("FAILED ON INDEX %d: %d != %d", i, items2[i], items[i]); return Plugin_Handled; } } inf = OpenFile2("smbintest", "rb"); for (new i = 0; i < sizeof(items); i++) { new item; if (!inf.ReadInt8(item) || item != items[i]) { PrintToServer("FAILED ON INDEX %d: %d != %d", i, item, items[i]); return Plugin_Handled; } } PrintToServer("Test passed!"); return Plugin_Handled; }