Advertisement
John

[GTA] TriggerScriptEvent - cleaned up

Dec 21st, 2017
867
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.80 KB | None | 0 0
  1. typedef union ScriptArg {
  2.     unsigned int ui;
  3.     float f;
  4.     int i;
  5.     char *str;
  6. };
  7. void _triggerScriptEvent(ScriptArg* Args, int ArgCount, int BitsetPlayer) {
  8.     int Bitset = 0;
  9.     SET_BIT(&Bitset, BitsetPlayer);
  10.     if (Bitset != 0) {
  11.         TRIGGER_SCRIPT_EVENT(1, Args, ArgCount, Bitset);
  12.     }
  13. }
  14. void ToArray(ScriptArg *out, int n, ...) {
  15.     va_list vl;
  16.     va_start(vl, n);
  17.     for (int i = 0; i<n; i++) {
  18.         ScriptArg num = va_arg(vl, ScriptArg);
  19.         out[i] = num;
  20.     }
  21.     va_end(vl);
  22. }
  23. #define TriggerScriptEvent(player, nargs, ...) \
  24.     do { \
  25.         ScriptArg *args = (ScriptArg *)calloc(nargs, sizeof(ScriptArg));    \
  26.         ToArray(args, nargs, __VA_ARGS__); \
  27.         _triggerScriptEvent(args, nargs, player); \
  28.         free(args); \
  29.     } \
  30.     while(0);
  31.  
  32. Usage:
  33. int playerIdx = 0;
  34. TriggerScriptEvent(playerIdx, 3, 0xD8, playerIdx, 10000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement