/** * @brief Announce the actor die event for the clients that are seeing the actor * @param[in] ent The actor that is dying * @param[in] attacker Whether the actor was killed or just died */ void G_EventActorDie (const Edict& ent, bool attacker) { G_EventAdd(G_VisToPM(ent.visflags), EV_ACTOR_DIE, ent.getIdNum()); gi.WriteShort(ent.state); gi.WriteByte(ent.getPlayerNum()); gi.WriteByte(attacker); G_EventEnd(); }
/** * @sa CL_ActorAdd */ void G_EventActorAdd (playermask_t playerMask, const Edict& ent) { G_EventAdd(playerMask, EV_ACTOR_ADD, ent.getIdNum()); gi.WriteByte(ent.getTeam()); gi.WriteByte(ent.chr.teamDef ? ent.chr.teamDef->idx : NONE); gi.WriteByte(ent.chr.gender); gi.WriteByte(ent.getPlayerNum()); gi.WriteGPos(ent.pos); gi.WriteShort(ent.state & STATE_PUBLIC); gi.WriteByte(ent.fieldSize); G_EventEnd(); }
static void SVCmd_ListEdicts_f (void) { Edict* ent = nullptr; int i = 0; Com_Printf("number | entnum | mapnum | type | inuse | pnum | team | size | HP | state | classname | model/ptl | pos\n"); while ((ent = G_EdictsGetNext(ent))) { char buf[128]; const char* model; if (ent->type == ET_PARTICLE) model = ent->particle; else if (ent->model) model = ent->model; else model = "no mdl"; Com_sprintf(buf, sizeof(buf), "#%5i | #%5i | #%5i | %4i | %5i | %4i | %4i | %4i | %3i | %5i | %14s | %21s | %i:%i:%i", i, ent->getIdNum(), ent->mapNum, ent->type, ent->inuse, ent->getPlayerNum(), ent->getTeam(), ent->fieldSize, ent->HP, ent->state, ent->classname, model, ent->pos[0], ent->pos[1], ent->pos[2]); Com_Printf("%s\n", buf); i++; } }