1 #using scripts\codescripts\struct;
3 #insert scripts\shared\shared.gsh;
5 #precache( "material", "objpoint_default" );
38 function init(
id, playerBeginCallback, playerEndCallback)
40 handler = spawnstruct();
42 handler.playerBeginCallback = playerBeginCallback;
43 handler.playerEndCallback = playerEndCallback;
44 handler.enabled =
false;
49 level.handlerGlobalFlagVal = 0;
58 handler.enabled =
true;
60 level.handlerGlobalFlagVal++;
64 players = GetPlayers();
65 for (i = 0; i < players.size; i++)
66 players[i].handlerFlagVal = level.handlerGlobalFlagVal;
69 players = handler.players;
71 for (i = 0; i < players.size; i++) {
72 if (players[i].handlerFlagVal != level.handlerGlobalFlagVal)
75 if (players[i].handlers[handler.id].ready)
83 handler.enabled =
false;
85 level.handlerGlobalFlagVal++;
89 players = GetPlayers();
90 for (i = 0; i < players.size; i++)
91 players[i].handlerFlagVal = level.handlerGlobalFlagVal;
94 players = handler.players;
96 for (i = 0; i < players.size; i++) {
97 if (players[i].handlerFlagVal != level.handlerGlobalFlagVal)
100 if (players[i].handlers[handler.id].ready)
109 level waittill(
"connecting", player);
111 if (!isdefined(player.handlers))
112 player.handlers = [];
113 player.handlers[handler.id] = spawnstruct();
114 player.handlers[handler.id].ready =
false;
115 player.handlers[handler.id].handled =
false;
116 player.handlerFlagVal = -1;
118 handler.players[handler.players.size] = player;
130 self waittill(
"disconnect");
133 for (i = 0; i < handler.players.size; i++)
134 if (handler.players[i] !=
self)
135 newplayers[newplayers.size] = handler.players[i];
136 handler.players = newplayers;
143 self endon(
"disconnect");
147 self waittill(
"joined_team");
153 self endon(
"disconnect");
157 self waittill(
"joined_spectators");
163 self endon(
"disconnect");
167 self waittill(
"spawned_player");
173 self endon(
"disconnect");
177 self waittill(
"killed_player");
188 self.handlers[handler.id].ready =
true;
190 if (!handler.enabled)
194 if (
self.handlers[handler.id].handled)
196 self.handlers[handler.id].handled =
true;
198 self thread [[handler.playerBeginCallback]]();
202 if (!disconnected && unsetready)
203 self.handlers[handler.id].ready =
false;
208 if (!
self.handlers[handler.id].handled)
211 self.handlers[handler.id].handled =
false;
213 self thread [[handler.playerEndCallback]](disconnected);