YashasSamaga

Untitled

Feb 1st, 2017
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. bool ExecuteFunctionBC1O2(AMX *amx, functionID *fid, cell cparam, cell oparam[])
  2. {
  3. cell retval = 0;
  4.  
  5. switch (fid->type)
  6. {
  7. case FUNCTION_ID_TYPE_PUBLIC:
  8. {
  9. switch (fid->argc)
  10. {
  11. case 1:
  12. amx_Push(amx, cparam);
  13. break;
  14. case 2:
  15. if (fid->IsFlagSet(FUNCTION_FLAG_BIND1))
  16. {
  17. amx_Push(amx, oparam[0]);
  18. amx_Push(amx, cparam);
  19. }
  20. else if (fid->IsFlagSet(FUNCTION_FLAG_BIND2))
  21. {
  22. amx_Push(amx, cparam);
  23. amx_Push(amx, oparam[1]);
  24. }
  25. break;
  26. }
  27. amx_Exec(amx, &retval, fid->funcidx);
  28. break;
  29. }
  30. case FUNCTION_ID_TYPE_DEFAULT:
  31. {
  32. switch (fid->argc)
  33. {
  34. case 1:
  35. retval = unary_functions[fid->funcidx].second(cparam);
  36. break;
  37. case 2:
  38. if (fid->IsFlagSet(FUNCTION_FLAG_BIND1))
  39. retval = binary_functions[fid->funcidx].second(oparam[0], cparam);
  40. else if (fid->IsFlagSet(FUNCTION_FLAG_BIND2))
  41. retval = binary_functions[fid->funcidx].second(cparam, oparam[1]);
  42. break;
  43. }
  44. break;
  45. }
  46. }
  47. if (fid->IsFlagSet(FUNCTION_FLAG_NOT)) return !retval;
  48. return retval;
  49. }
  50. cell AMX_NATIVE_CALL algo_all_of(AMX* amx, cell* params)
  51. {
  52. cell* start = NULL;
  53. amx_GetAddr(amx, params[1], &start);
  54.  
  55. cell* end = start + params[2];
  56.  
  57. cell* func = NULL;
  58. amx_GetAddr(amx, params[3], &func);
  59.  
  60. functionID fid(*func++);
  61. while (start != end)
  62. {
  63. if (!ExecuteFunctionBC1O2(amx, &fid, *start, func)) return false;
  64. start++;
  65. }
  66. return false;
  67. }
Add Comment
Please, Sign In to add comment