static cell_t PrepSDKCall_SetFromConf(IPluginContext *pContext, const cell_t *params) { IGameConfig *conf; if (params[1] == BAD_HANDLE) { conf = g_pGameConf; } else { HandleError err; if ((conf = gameconfs->ReadHandle(params[1], pContext->GetIdentity(), &err)) == NULL) { return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err); } } char *key; pContext->LocalToString(params[3], &key); switch (params[2]) { case SDKConf_Virtual: if (conf->GetOffset(key, &s_vtbl_index)) { return 1; } break; case SDKConf_Signature: if (conf->GetMemSig(key, &s_call_addr) && s_call_addr) { return 1; } break; case SDKConf_Address: if (conf->GetAddress(key, &s_call_addr) && s_call_addr) { return 1; } break; } return 0; }