Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- __forceinline cell ExecuteFunctionCC1O2(AMX *amx, functionID *fid, cell cparam)
- {
- cell retval = 0;
- switch (fid->type)
- {
- case FUNCTION_ID_TYPE_NATIVE:
- cell params[4];
- cell (*func)(AMX *amx, cell params[]) = (cell(*)(AMX *amx, cell params[]))(fid->address);
- switch (fid->argc)
- {
- case 1:
- params[0] = 4;
- params[1] = cparam;
- break;
- case 2:
- params[0] = 8;
- if (fid->IsFlagSet(FUNCTION_FLAG_BIND1))
- {
- params[1] = fid->params[0];
- params[2] = cparam;
- }
- else if (fid->IsFlagSet(FUNCTION_FLAG_BIND2))
- {
- params[1] = cparam;
- params[2] = fid->params[1];
- }
- break;
- case 3:
- params[0] = 12;
- params[1] = fid->params[0];
- params[2] = fid->params[1];
- break;
- }
- retval = func(amx, params);
- break;
- case FUNCTION_ID_TYPE_PUBLIC:
- {
- switch (fid->argc)
- {
- case 1:
- amx_Push(amx, cparam);
- break;
- case 2:
- if (fid->IsFlagSet(FUNCTION_FLAG_BIND1))
- {
- amx_Push(amx, cparam);
- amx_Push(amx, fid->params[0]);
- }
- else if (fid->IsFlagSet(FUNCTION_FLAG_BIND2))
- {
- amx_Push(amx, fid->params[1]);
- amx_Push(amx, cparam);
- }
- break;
- case 3:
- amx_Push(amx, fid->params[0]);
- amx_Push(amx, fid->params[1]);
- amx_Push(amx, cparam);
- break;
- }
- amx_Exec(amx, &retval, fid->address);
- break;
- }
- case FUNCTION_ID_TYPE_DEFAULT:
- {
- switch (fid->argc)
- {
- case 1:
- retval = unary_functions[fid->address](cparam);
- break;
- case 2:
- if (fid->IsFlagSet(FUNCTION_FLAG_BIND1))
- retval = binary_functions[fid->address](fid->params[0], cparam);
- else if (fid->IsFlagSet(FUNCTION_FLAG_BIND2))
- retval = binary_functions[fid->address](cparam, fid->params[1]);
- break;
- }
- break;
- }
- }
- if (fid->IsFlagSet(FUNCTION_FLAG_NOT)) return !retval;
- return retval;
- }
Add Comment
Please, Sign In to add comment