Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool ExecuteFunctionBC1O2(AMX *amx, functionID *fid, cell cparam, cell oparam[])
- {
- cell retval = 0;
- switch (fid->type)
- {
- 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, oparam[0]);
- amx_Push(amx, cparam);
- }
- else if (fid->IsFlagSet(FUNCTION_FLAG_BIND2))
- {
- amx_Push(amx, cparam);
- amx_Push(amx, oparam[1]);
- }
- break;
- }
- amx_Exec(amx, &retval, fid->funcidx);
- break;
- }
- case FUNCTION_ID_TYPE_DEFAULT:
- {
- switch (fid->argc)
- {
- case 1:
- retval = unary_functions[fid->funcidx].second(cparam);
- break;
- case 2:
- if (fid->IsFlagSet(FUNCTION_FLAG_BIND1))
- retval = binary_functions[fid->funcidx].second(oparam[0], cparam);
- else if (fid->IsFlagSet(FUNCTION_FLAG_BIND2))
- retval = binary_functions[fid->funcidx].second(cparam, oparam[1]);
- break;
- }
- break;
- }
- }
- if (fid->IsFlagSet(FUNCTION_FLAG_NOT)) return !retval;
- return retval;
- }
- cell AMX_NATIVE_CALL algo_all_of(AMX* amx, cell* params)
- {
- cell* start = NULL;
- amx_GetAddr(amx, params[1], &start);
- cell* end = start + params[2];
- cell* func = NULL;
- amx_GetAddr(amx, params[3], &func);
- functionID fid(*func++);
- while (start != end)
- {
- if (!ExecuteFunctionBC1O2(amx, &fid, *start, func)) return false;
- start++;
- }
- return false;
- }
Add Comment
Please, Sign In to add comment