gentity_s* spawnPlane(gentity_s* owner, ScriptString classname, const vec3_t startpoint) { gentity_s* plane = G_Spawn(); Scr_SetString(&plane->classname, classname); VectorCopy(startpoint, plane->r.currentOrigin); plane->s.eType = ET_PLANE; plane->spawnflags = 0; plane->s.lerp.faction.teamAndOwnerIndex = owner->client->sess.cs.team | (owner->s.number << 11); int ret = G_CallSpawnEntity(plane); DBGPRINTF("G_CallSpawnEntity(): %d\n", ret); Scr_AddEntity(SCRIPTINSTANCE_SERVER, plane); return plane; }
gentity_s* spawnEnt(ScriptString script, const vec3_t origin) { FUNCTION; gentity_s* ent = G_Spawn(); Scr_SetString(&ent->classname, script); if (origin != 0) VectorCopy(origin, ent->r.currentOrigin); ent->spawnflags = 0; if (!G_CallSpawnEntity(ent)) { TTY_Write("G_CallSpawnEntity fail\n"); G_FreeEntity(ent); return 0; } Scr_AddEntity(SCRIPTINSTANCE_SERVER, ent); return ent; }
void GScr_Spawn() { int spawnflags; int strindex; gentity_t *gentity; vec3_t origin; mvabuf; strindex = Scr_GetConstString( 0 ); Scr_GetVector(1, origin); if ( Scr_GetNumParam() > 2 ) spawnflags = Scr_GetInt(2); else spawnflags = 0; gentity = G_Spawn(); Scr_SetString((unsigned short*)&gentity->constClassname, (unsigned short)strindex); gentity->r.currentOrigin[0] = origin[0]; gentity->r.currentOrigin[1] = origin[1]; gentity->r.currentOrigin[2] = origin[2]; gentity->spawnflags = spawnflags; if ( G_CallSpawnEntity( gentity ) ) { Scr_AddEntity( gentity ); } else { Scr_Error( va("unable to spawn \"%s\" entity", SL_ConvertToString(strindex) )); } }