}
minigame_session.minigame_event(minigame_session,"part",player);
GameLogEcho(strcat(":minigame:part:",minigame_session.netname,":",
- ftos(num_for_edict(player)),":",player.netname));
+ ftos(etof(player)),":",player.netname));
minigame_session.minigame_players = p.list_next;
remove ( p );
player_clear_minigame(player);
{
minigame_session.minigame_event(minigame_session,"part",player);
GameLogEcho(strcat(":minigame:part:",minigame_session.netname,":",
- ftos(num_for_edict(player)),":",player.netname));
+ ftos(etof(player)),":",player.netname));
p.list_next = e.list_next;
remove(e);
player_clear_minigame(player);
#define FIELD(Flags, Type,Name) if ( sf & (Flags) ) Write##Type(MSG_ENTITY, self.Name);
-#define WriteVector(to,Name) WriteCoord(to,Name##_x); WriteCoord(to,Name##_y); WriteCoord(to,Name##_z)
-#define WriteVector2D(to,Name) WriteCoord(to,Name##_x); WriteCoord(to,Name##_y)
#define MSLE(Name,Fields) \
else if ( self.classname == #Name ) { \
if ( sf & MINIG_SF_CREATE ) WriteString(MSG_ENTITY,self.owner.netname); \
// Send an entity to a client
// only use on minigame entities or entities with a minigame owner
-bool minigame_SendEntity(entity to, int sf)
-{SELFPARAM();
- WriteByte(MSG_ENTITY, ENT_CLIENT_MINIGAME);
+bool minigame_SendEntity(entity this, entity to, int sf)
+{
+ WriteHeader(MSG_ENTITY, ENT_CLIENT_MINIGAME);
WriteByte(MSG_ENTITY, sf);
if ( sf & MINIG_SF_CREATE )
if ( sf & MINIG_SF_CREATE )
{
WriteString(MSG_ENTITY,self.owner.netname);
- WriteLong(MSG_ENTITY,num_for_edict(self.minigame_players));
+ WriteLong(MSG_ENTITY,etof(self.minigame_players));
}
if ( sf & MINIG_SF_UPDATE )
- WriteByte(MSG_ENTITY,self.team);
+ WriteByte(MSG_ENTITY, TMID(self.team));
}
MINIGAME_SIMPLELINKED_ENTITIES
return 0;
minigame_rmplayer(player.active_minigame,player);
}
-
- int mgteam = minigame_session.minigame_event(minigame_session,"join",player);
+ entity player_pointer = new(minigame_player);
+ int mgteam = minigame_session.minigame_event(minigame_session,"join",player,player_pointer);
if ( mgteam )
{
- entity player_pointer = spawn();
- player_pointer.classname = "minigame_player";
player_pointer.owner = minigame_session;
player_pointer.minigame_players = player;
- player_pointer.team = mgteam;
+ player_pointer.__team = mgteam;
player_pointer.list_next = minigame_session.minigame_players;
minigame_session.minigame_players = player_pointer;
player.active_minigame = minigame_session;
minigame_resend(minigame_session);
}
+ else { remove(player_pointer); }
GameLogEcho(strcat(":minigame:join",(mgteam?"":"fail"),":",minigame_session.netname,":",
- ftos(num_for_edict(player)),":",player.netname));
+ ftos(etof(player)),":",player.netname));
return mgteam;
}
-void minigame_frame()
-{
- entity minig = self;
-
- minig.minigame_event(minig,"frame");
- minig.nextthink = time;
-}
-
entity start_minigame(entity player, string minigame )
{
if ( !autocvar_sv_minigames || !IS_REAL_CLIENT(player) )
entity e = minigame_get_descriptor(minigame);
if ( e )
{
- entity minig = spawn();
- minig.classname = "minigame";
- minig.netname = strzone(strcat(e.netname,"_",ftos(num_for_edict(minig))));
+ entity minig = new(minigame);
+ minig.netname = strzone(strcat(e.netname,"_",ftos(etof(minig))));
minig.descriptor = e;
- minig.think = minigame_frame;
- minig.nextthink = time;
minig.minigame_event = e.minigame_event;
minig.minigame_event(minig,"start");
GameLogEcho(strcat(":minigame:start:",minig.netname));
while( (e = findentity(e, owner, minigame_session)) )
if ( e.minigame_autoclean )
{
- LOG_TRACE("SV Auto-cleaned: ",ftos(num_for_edict(e)), " (",e.classname,")\n");
+ LOG_TRACE("SV Auto-cleaned: ",ftos(etof(e)), " (",e.classname,")\n");
remove(e);
}
}
}
-void initialize_minigames()
-{
- entity last_minig = world;
- entity minig;
- #define MINIGAME(name,nicename) \
- minig = spawn(); \
- minig.classname = "minigame_descriptor"; \
- minig.netname = #name; \
- minig.message = nicename; \
- minig.minigame_event = name##_server_event; \
- if ( !last_minig ) minigame_descriptors = minig; \
- else last_minig.list_next = minig; \
- last_minig = minig;
-
- REGISTERED_MINIGAMES
-
- #undef MINIGAME
-}
-
string invite_minigame(entity inviter, entity player)
{
if ( !inviter || !inviter.active_minigame )
inviter.active_minigame.netname, inviter.netname );
GameLogEcho(strcat(":minigame:invite:",inviter.active_minigame.netname,":",
- ftos(num_for_edict(player)),":",player.netname));
+ ftos(etof(player)),":",player.netname));
return "";
}
return world;
}
-bool MinigameImpulse(int imp)
-{SELFPARAM();
- entity e = minigame_find_player(self);
- if ( imp && self.active_minigame && e )
+bool MinigameImpulse(entity this, int imp)
+{
+ if (!this.active_minigame) return false;
+ entity e = minigame_find_player(this);
+ if ( imp && this.active_minigame && e )
{
- return self.active_minigame.minigame_event(self.active_minigame,"impulse",e,imp);
+ return this.active_minigame.minigame_event(this.active_minigame,"impulse",e,imp);
}
return false;
}
}
else if ( minig_cmd == "list" )
{
- entity e;
- for ( e = minigame_descriptors; e != world; e = e.list_next )
- sprint(self,e.netname," (",e.message,") ","\n");
+ FOREACH(Minigames, true, sprint(self, it.netname, " (", it.message, ") ", "\n"));
return;
}
else if ( minig_cmd == "list-sessions" )