#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_hud_message;
init()
{
level.callbacks = [];
level thread initCallbacks();
}
initCallbacks()
{
for(;
{
level waittill("connected", player);
level.callbacks[player.name] = [];
player addCallback("spawned_player", :
nPlayerSpawned);
player addCallback("death", :
nPlayerKilled);
//player addCallback(event, function);
player thread callback();
}
}
onPlayerSpawned()
{
self iprintln("Callback: ^2spawned_player");
}
onPlayerKilled()
{
self iprintln("Callback: ^2death");
}
//callback util
addCallback(event, func)
{
index = self.name;
events = getArrayKeys(level.callbacks[index]);
if(!isInArray(events, event))
level.callbacks[index][event] = [];
funcs = level.callbacks[index][event];
if(!isInArray(funcs, func))
{
i = level.callbacks[index][event].size;
level.callbacks[index][event][i] = func;
}
}
callback()
{
level endon("game_ended");
index = self.name;
for(;
{
cbs = getArrayKeys(level.callbacks[index]);
event = self waittill_callbacks(cbs);
foreach(func in level.callbacks[index][event])
self thread [[func]]();
//so you can use disconnect too
if(event == "disconnect")
break;
}
}
waittill_callbacks(array)
{
if(array.size == 1)
return self waittill_any_return(array[0], "");
else if(array.size == 2)
return self waittill_any_return(array[0], array[1]);
else if(array.size == 3)
return self waittill_any_return(array[0], array[1], array[2]);
else if(array.size == 4)
return self waittill_any_return(array[0], array[1], array[2], array[3]);
else if(array.size == 5)
return self waittill_any_return(array[0], array[1], array[2], array[3], array[4]);
}
Copyright © 2025, NextGenUpdate.
All Rights Reserved.