John icon

[GTA] TriggerScriptEvent - cleaned up

John | PRO | 12/21/17 12:17:09 PM UTC | 0 ⭐ | 1366 👁️ | Never ⏰ | []
C++ |

800 B

|

None

|

0 👍

/

0 👎

typedef union ScriptArg { 
    unsigned int ui; 
    float f; 
    int i; 
    char *str;
};
void _triggerScriptEvent(ScriptArg* Args, int ArgCount, int BitsetPlayer) {
    int Bitset = 0;
    SET_BIT(&Bitset, BitsetPlayer);
    if (Bitset != 0) {
        TRIGGER_SCRIPT_EVENT(1, Args, ArgCount, Bitset);
    }
}
void ToArray(ScriptArg *out, int n, ...) {
    va_list vl;
    va_start(vl, n);
    for (int i = 0; i<n; i++) {
        ScriptArg num = va_arg(vl, ScriptArg);
        out[i] = num;
    }
    va_end(vl);
}
#define TriggerScriptEvent(player, nargs, ...) \
    do { \
        ScriptArg *args = (ScriptArg *)calloc(nargs, sizeof(ScriptArg));    \
        ToArray(args, nargs, __VA_ARGS__); \
        _triggerScriptEvent(args, nargs, player); \
        free(args); \
    } \
    while(0);
 
Usage:
int playerIdx = 0;
TriggerScriptEvent(playerIdx, 3, 0xD8, playerIdx, 10000);

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎