// Aero Engine by Luby #define LIMIT 10000 #pragma dynamic 49042168 #define EnableAero() SetTimer("Streamer",1117,true);SetTimer("PickupStreamer",4006,true);SetTimer("VehicleStreamer",1707,true) new DontStreamVehicle[LIMIT]; new IsVehicleStreamed[699]; new VehicleIDX[LIMIT]; new AllVehiclesInPool = 0; new VehicleDoesntStreamed[LIMIT]; enum VehicleStreamerEnum{strmodelid, Float:strX, Float:strY, Float:strZ, Float:startX, Float:startY, Float:startZ, Float:strAng, Float:startAng, c1, c2, Float:sstream}; new VehicleStreamerArray[LIMIT][VehicleStreamerEnum]; new VehiclesStreamed; new StreamedVehiclesID[LIMIT]; new PickupDoesntStreamed[LIMIT]; enum PickupStreamerEnum{strmodelid, Float:strX, Float:strY, Float:strZ, typ, Float:sstream}; new PickupStreamerArray[LIMIT][PickupStreamerEnum]; new PickupsStreamed; new StreamedPickupsID[LIMIT]; enum ObjectStreamerEnum{strmodelid, Float:strX, Float:strY, Float:strZ, Float:strrX, Float:strrY, Float:strrZ, Float:sstream}; new ObjectStreamerArray[LIMIT][ObjectStreamerEnum]; new ObjectsStreamed; new PlayerStreamedObjectsID[200][LIMIT]; forward ObjectStreamer(); public ObjectStreamer(){ new Float:X, Float:Y, Float:Z, val = 0; for(new g=0;gObjectStreamerArray[x][sstream]){ if(PlayerStreamedObjectsID[g][x] > -1 && val < 100){ val++; DestroyPlayerObject(g, PlayerStreamedObjectsID[g][x]); PlayerStreamedObjectsID[g][x] = -1; } } else { if(PlayerStreamedObjectsID[g][x] == -1){ PlayerStreamedObjectsID[g][x] = CreatePlayerObject(g, ObjectStreamerArray[x][strmodelid],ObjectStreamerArray[x][strX],ObjectStreamerArray[x][strY],ObjectStreamerArray[x][strZ],ObjectStreamerArray[x][strrX],ObjectStreamerArray[x][strrY],ObjectStreamerArray[x][strrZ]); } if(PlayerStreamedObjectsID[g][x] == 0){ PlayerStreamedObjectsID[g][x] = CreatePlayerObject(g, ObjectStreamerArray[x][strmodelid],ObjectStreamerArray[x][strX],ObjectStreamerArray[x][strY],ObjectStreamerArray[x][strZ],ObjectStreamerArray[x][strrX],ObjectStreamerArray[x][strrY],ObjectStreamerArray[x][strrZ]); } } } } } } forward PickupStreamer(); public PickupStreamer(){ new Float:X, Float:Y, Float:Z, addon; new Float:Distance; for(new x=0;x0 && PickupDoesntStreamed[x] == 0){ StreamedPickupsID[x] = CreatePickup(PickupStreamerArray[x][strmodelid], PickupStreamerArray[x][typ], PickupStreamerArray[x][strX], PickupStreamerArray[x][strY], PickupStreamerArray[x][strZ]); PickupDoesntStreamed[x] = 1; } if(addon == 0 && PickupDoesntStreamed[x] == 1){ DestroyPickup(StreamedPickupsID[x]); PickupDoesntStreamed[x] = 0; } } } forward VehicleStreamer(); public VehicleStreamer(){ new Float:X, Float:Y, Float:Z, addon; new Float:Distance; for(new x=0;x0 && VehicleDoesntStreamed[x] == 0 && AllVehiclesInPool < 690 && !DontStreamVehicle[x]){ StreamedVehiclesID[x] = CreateVehicle(VehicleStreamerArray[x][strmodelid],VehicleStreamerArray[x][strX],VehicleStreamerArray[x][strY],VehicleStreamerArray[x][strZ],VehicleStreamerArray[x][strAng],VehicleStreamerArray[x][c1],VehicleStreamerArray[x][c2],999999); VehicleDoesntStreamed[x] = 1; AllVehiclesInPool = StreamedVehiclesID[x]; VehicleIDX[StreamedVehiclesID[x]] = x; IsVehicleStreamed[StreamedVehiclesID[x]] = 1; } if(addon == 0 && VehicleDoesntStreamed[x] == 1 && !IsVehicleInUseDFforAero(StreamedVehiclesID[x])){ new Float:X2, Float:Y2, Float:Z2, Float:A2; GetVehiclePos(StreamedVehiclesID[x], X2, Y2, Z2); GetVehicleZAngle(StreamedVehiclesID[x], A2); new Float:Distance2 = floatsqroot(floatpower(floatabs(floatsub(X,X2)),2)+floatpower(floatabs(floatsub(Y,Y2)),2)+floatpower(floatabs(floatsub(Z,Z2)),2)); if(Distance2 > 200.0){ DestroyVehicle(StreamedVehiclesID[x]); VehicleDoesntStreamed[x] = 0; AllVehiclesInPool--; VehicleIDX[StreamedVehiclesID[x]] = -1; IsVehicleStreamed[StreamedVehiclesID[x]] = 0; } if(A2 != 0.00000 && !DontStreamVehicle[x]){ VehicleStreamerArray[x][strX] = X2; VehicleStreamerArray[x][strY] = Y2; VehicleStreamerArray[x][strZ] = Z2; VehicleStreamerArray[x][strAng] = A2; } } } } stock AddStreamableObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:stream=1000.0){ ObjectStreamerArray[ObjectsStreamed][strmodelid]=modelid; ObjectStreamerArray[ObjectsStreamed][strX]=X; ObjectStreamerArray[ObjectsStreamed][strY]=Y; ObjectStreamerArray[ObjectsStreamed][strZ]=Z; ObjectStreamerArray[ObjectsStreamed][strrX]=rX; ObjectStreamerArray[ObjectsStreamed][strrY]=rY; ObjectStreamerArray[ObjectsStreamed][strrZ]=rZ; ObjectStreamerArray[ObjectsStreamed][sstream]=stream; ObjectsStreamed++; return ObjectsStreamed-1; } stock AddStreamablePickup(modelid, rX, Float:X, Float:Y, Float:Z, Float:stream=30.0){ PickupStreamerArray[PickupsStreamed][strmodelid]=modelid; PickupStreamerArray[PickupsStreamed][strX]=X; PickupStreamerArray[PickupsStreamed][strY]=Y; PickupStreamerArray[PickupsStreamed][strZ]=Z; PickupStreamerArray[PickupsStreamed][typ]=rX; PickupStreamerArray[PickupsStreamed][sstream]=stream; PickupsStreamed++; return PickupsStreamed-1; } stock AddStreamableVehicle(modelid, Float:X, Float:Y, Float:Z, Float:Angle, c11, c22, Float:stream=300.0){ VehicleStreamerArray[VehiclesStreamed][strmodelid]=modelid; VehicleStreamerArray[VehiclesStreamed][strX]=X; VehicleStreamerArray[VehiclesStreamed][strY]=Y; VehicleStreamerArray[VehiclesStreamed][strZ]=Z; VehicleStreamerArray[VehiclesStreamed][strAng]=Angle; VehicleStreamerArray[VehiclesStreamed][startX]=X; VehicleStreamerArray[VehiclesStreamed][startY]=Y; VehicleStreamerArray[VehiclesStreamed][startZ]=Z; VehicleStreamerArray[VehiclesStreamed][startAng]=Angle; VehicleStreamerArray[VehiclesStreamed][c1]=c11; VehicleStreamerArray[VehiclesStreamed][c2]=c22; VehicleStreamerArray[VehiclesStreamed][sstream]=stream; DontStreamVehicle[VehiclesStreamed] = 0; VehiclesStreamed++; return VehiclesStreamed-1; } stock IsVehicleInUseDFforAero(vehicleid){ new temp; for(new i=0;i<200;i++){ if(IsPlayerConnected(i) && IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i)==PLAYER_STATE_DRIVER){ temp++; } } if(temp > 0){ return true; } else return false; } IsNumeric(const string2[]){ //By Mike for (new i=0,j=strlen(string2);i '9' || string2[i] < '0') return false; } return true; } stock Aero_ProcessFile(file[], formatting[]){ CallRemoteFunction("OnProcessInit", "s", file); new vehs, objs, picks; new File:fh = fopen(file, io_readwrite); new ToParse[512], FuncName[256], args[30][256], id=0; new funcidxx=0; new Variables[512]; new CommentEnabled = 0; while(fread(fh, ToParse)){ new AttVariable[256], returnval; ToParse = strreplace("\t", "", ToParse); while(ToParse[0] == ' ' || ToParse[0] == '='){ new tmp4[256]; for(new i=0;i 1)for(new pwr=0;pwr