void __cdecl G_VehSpawner(gentity_t *ent) { const char* value; char vehTypeStr[MAX_QPATH]; if(level.spawnVars.isGameLoadingSpawn) { G_LevelSpawnString("vehicletype", 0, &value); }else{ if(Scr_GetNumParam() == 3) { //Scr_Error("Usage: spawn(\"script_vehicle\", <origin>, <spawnflags>, <vehicletype>)"); Q_strncpyz(vehTypeStr, "defaultvehicle_mp", sizeof(vehTypeStr)); }else{ Q_strncpyz(vehTypeStr, Scr_GetString(3), sizeof(vehTypeStr)); if(Scr_GetNumParam() == 5) { G_SetModel(ent, Scr_GetString(4)); } } value = vehTypeStr; } SpawnVehicle( ent, value ); }
gentity_s* spawnVehicle(const char* model, uint16_t targetname, const char* vehicleType, const vec3_t origin, const vec3_t angles) { gentity_s* vehicle = G_SpawnStaticEntity(0x3E, 0x10, "vehicle"); Scr_SetString(&vehicle->classname, scr_const->script_vehicle); G_SetModel(vehicle, model); Scr_SetString(&vehicle->targetname, targetname); VectorCopy(origin, vehicle->r.currentOrigin); VectorCopy(angles, vehicle->r.currentAngles); G_SpawnVehicle(vehicle, vehicleType, 0); Scr_AddEntity(SCRIPTINSTANCE_SERVER, vehicle); G_MakeVehicleUsable(vehicle, true); return vehicle; }
void GScr_SpawnVehicle() { int spawnflags; gentity_t *gentity; vec3_t origin; char vehTypeStr[MAX_QPATH]; char vehModel[MAX_QPATH]; Scr_GetVector(0, origin); if ( Scr_GetNumParam() != 4 ) { Scr_Error("Usage: spawnvehicle <origin>, <spawnflags>, <vehicletype>, <xmodel>"); return; } spawnflags = Scr_GetInt(1); gentity = G_Spawn(); Scr_SetString((unsigned short*)&gentity->constClassname, (unsigned short)stringIndex.script_vehicle); gentity->r.currentOrigin[0] = origin[0]; gentity->r.currentOrigin[1] = origin[1]; gentity->r.currentOrigin[2] = origin[2]; gentity->spawnflags = spawnflags; Q_strncpyz(vehTypeStr, Scr_GetString(2), sizeof(vehTypeStr)); Q_strncpyz(vehModel, Scr_GetString(3), sizeof(vehModel)); G_SetModel(gentity, vehModel); SpawnVehicle( gentity, vehTypeStr ); G_VehCollmapSpawner( gentity ); Scr_AddEntity( gentity ); }