#include <sourcemod> public Plugin:myinfo = { name = "FakeNative Testing Lab #1", author = "AlliedModders LLC", description = "Test suite #1 for dynamic natives", version = "1.0.0.0", url = "http://www.sourcemod.net/" }; public bool:AskPluginLoad(Handle:myself, bool:late, String:error[], err_max) { CreateNative("TestNative1", __TestNative1); CreateNative("TestNative2", __TestNative2); CreateNative("TestNative3", __TestNative3); CreateNative("TestNative4", __TestNative4); CreateNative("TestNative5", __TestNative5); return true; } public __TestNative1(Handle:plugin, numParams) { PrintToServer("TestNative1: Plugin: %x params: %d", plugin, numParams); if (numParams == 4) { ThrowNativeError(SP_ERROR_NATIVE, "Four parameters ARE NOT ALLOWED lol"); } return 5; } public __TestNative2(Handle:plugin, numParams) { new String:buffer[512]; new bytes; GetNativeString(1, buffer, sizeof(buffer), bytes); for (new i=0; i<bytes; i++) { buffer[i] = buffer[i] + 1; } SetNativeString(1, buffer, bytes+1); } public __TestNative3(Handle:plugin, numParams) { new val1 = GetNativeCell(1); new val2 = GetNativeCellRef(2); SetNativeCellRef(2, val1+val2); } public __TestNative4(Handle:plugin, numParams) { new size = GetNativeCell(3); new local[size]; GetNativeArray(1, local, size); SetNativeArray(2, local, size); } public __TestNative5(Handle:plugin, numParams) { new local = GetNativeCell(1); if (local) { FormatNativeString(2, 4, 5, GetNativeCell(3)); } else { new len = GetNativeCell(3); new fmt_len; new String:buffer[len]; GetNativeStringLength(4, fmt_len); new String:format[fmt_len]; GetNativeString(2, buffer, len); GetNativeString(4, format, fmt_len); FormatNativeString(0, 0, 5, len, _, buffer, format); } }