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
0 B
|👍
/👎