#define STREAMER_TYPE_VEHICLE (8)
#define STREAMER_VEHICLE_TYPE_STATIC (0)
#define STREAMER_VEHICLE_TYPE_DYNAMIC (1)
native AttachDynamicObjectToVehicle(STREAMER_TAG_OBJECT objectid, vehicleid, Float:offsetx, Float:offsety, Float:offsetz, Float:rx, Float:ry, Float:rz, vehicletype = STREAMER_VEHICLE_TYPE_DYNAMIC);
native STREAMER_TAG_3D_TEXT_LABEL CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, vehicletype = STREAMER_VEHICLE_TYPE_DYNAMIC, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = STREAMER_3D_TEXT_LABEL_SD, STREAMER_TAG_AREA areaid = STREAMER_TAG_AREA -1, priority = 0);
native AttachDynamicAreaToVehicle(STREAMER_TAG_AREA areaid, vehicleid, vehicletype = STREAMER_VEHICLE_TYPE_DYNAMIC, Float:offsetx = 0.0, Float:offsety = 0.0, Float:offsetz = 0.0);
// Natives (Vehicles)
native STREAMER_TAG_VEHICLE CreateDynamicVehicle(modelid, Float:fX, Float:fY, Float:fZ, Float:fRot, color1, color2, respawndelay, addsiren = 0, worldid = -1, interiorid = 0, playerid = -1, Float:streamdistance = STREAMER_VEHICLE_SD, STREAMER_TAG_AREA areaid = STREAMER_TAG_AREA -1, priority = 0);
native DestroyDynamicVehicle(STREAMER_TAG_VEHICLE vehicleid);
native IsValidDynamicVehicle(STREAMER_TAG_VEHICLE vehicleid);
native IsDynamicVehicleStreamedIn(STREAMER_TAG_VEHICLE vehicleid, forplayerid);
native GetDynamicVehicleSpawnInfo(STREAMER_TAG_VEHICLE vehicleid, &Float:fX, &Float:fY, &Float:fZ, &Float:fRot, &color1, &color2, &siren);
native GetDynamicVehiclePos(STREAMER_TAG_VEHICLE vehicleid, &Float:x, &Float:y, &Float:z);
native SetDynamicVehiclePos(STREAMER_TAG_VEHICLE vehicleid, Float:x, Float:y, Float:z);
native GetDynamicVehicleZAngle(STREAMER_TAG_VEHICLE vehicleid, &Float:z_angle);
native GetDynamicVehicleRotationQuat(STREAMER_TAG_VEHICLE vehicleid, &Float:w, &Float:x, &Float:y, &Float:z);
native SetDynamicVehicleZAngle(STREAMER_TAG_VEHICLE vehicleid, Float:z_angle);
native Float:GetDynamicVehDistanceFromPoint(STREAMER_TAG_VEHICLE vehicleid, Float:X, Float:Y, Float:Z);
native SetDynamicVehParamsForPlayer(STREAMER_TAG_VEHICLE vehicleid,playerid,objective,doorslocked);
native SetDynamicVehicleParamsEx(STREAMER_TAG_VEHICLE vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
native GetDynamicVehicleParamsEx(STREAMER_TAG_VEHICLE vehicleid, &engine, &lights, &alarm, &doors, &bonnet, &boot, &objective);
native GetDynamicVehParamsSirenState(STREAMER_TAG_VEHICLE vehicleid);
native SetDynamicVehParamsCarDoors(STREAMER_TAG_VEHICLE vehicleid, driver, passenger, backleft, backright);
native GetDynamicVehParamsCarDoors(STREAMER_TAG_VEHICLE vehicleid, &driver, &passenger, &backleft, &backright);
native SetDynamicVehParamsCarWindows(STREAMER_TAG_VEHICLE vehicleid, driver, passenger, backleft, backright);
native GetDynamicVehParamsCarWindows(STREAMER_TAG_VEHICLE vehicleid, &driver, &passenger, &backleft, &backright);
native SetDynamicVehicleToRespawn(STREAMER_TAG_VEHICLE vehicleid);
native LinkDynamicVehicleToInterior(STREAMER_TAG_VEHICLE vehicleid, interiorid);
native GetDynamicVehicleInterior(STREAMER_TAG_VEHICLE vehicleid);
native AddDynamicVehicleComponent(STREAMER_TAG_VEHICLE vehicleid, componentid);
native RemoveDynamicVehicleComponent(STREAMER_TAG_VEHICLE vehicleid, componentid);
native ChangeDynamicVehicleColor(STREAMER_TAG_VEHICLE vehicleid, color1, color2);
native GetDynamicVehicleColor(STREAMER_TAG_VEHICLE vehicleid, &color1, &color2);
native ChangeDynamicVehiclePaintjob(STREAMER_TAG_VEHICLE vehicleid, paintjobid);
native GetDynamicVehiclePaintjob(STREAMER_TAG_VEHICLE vehicleid);
native SetDynamicVehicleHealth(STREAMER_TAG_VEHICLE vehicleid, Float:health);
native GetDynamicVehicleHealth(STREAMER_TAG_VEHICLE vehicleid, &Float:health);
native AttachTrailerToDynamicVehicle(STREAMER_TAG_VEHICLE trailerid, STREAMER_TAG_VEHICLE vehicleid);
native DetachTrailerFromDynamicVeh(STREAMER_TAG_VEHICLE vehicleid);
native IsTrailerAttachedToDynamicVeh(STREAMER_TAG_VEHICLE vehicleid);
native GetDynamicVehicleTrailer(STREAMER_TAG_VEHICLE vehicleid);
native SetDynamicVehicleNumberPlate(STREAMER_TAG_VEHICLE vehicleid, plate[]);
native GetDynamicVehicleNumberPlate(STREAMER_TAG_VEHICLE vehicleid, plate[], size = sizeof(plate));
native GetDynamicVehicleModel(STREAMER_TAG_VEHICLE vehicleid);
native GetDynamicVehComponentInSlot(STREAMER_TAG_VEHICLE vehicleid, slot); // There is 1 slot for each CARMODTYPE_*
native RepairDynamicVehicle(STREAMER_TAG_VEHICLE vehicleid); // Repairs the damage model and resets the health
native GetDynamicVehicleVelocity(STREAMER_TAG_VEHICLE vehicleid, &Float:X, &Float:Y, &Float:Z);
native SetDynamicVehicleVelocity(STREAMER_TAG_VEHICLE vehicleid, Float:X, Float:Y, Float:Z);
native SetDynamicVehAngularVelocity(STREAMER_TAG_VEHICLE vehicleid, Float:X, Float:Y, Float:Z);
native GetDynamicVehicleDamageStatus(STREAMER_TAG_VEHICLE vehicleid, &panels, &doors, &lights, &tires);
native UpdateDynamicVehDamageStatus(STREAMER_TAG_VEHICLE vehicleid, panels, doors, lights, tires);
native SetDynamicVehicleVirtualWorld(STREAMER_TAG_VEHICLE vehicleid, worldid);
native GetDynamicVehicleVirtualWorld(STREAMER_TAG_VEHICLEvehicleid);
native GetPlayerSurfingDynamicVehID(playerid);
native PutPlayerInDynamicVehicle(playerid, STREAMER_TAG_VEHICLE vehicleid, seatid);
native GetPlayerDynamicVehicleID(playerid);
native IsPlayerInDynamicVehicle(playerid, STREAMER_TAG_VEHICLE vehicleid);
native IsPlayerInAnyDynamicVehicle(STREAMER_TAG_VEHICLE vehicleid);
native IsDynamicVehicleOccupied(STREAMER_TAG_VEHICLE vehicleid);
native PlayerSpectateDynamicVehicle(playerid, STREAMER_TAG_VEHICLE targetvehicleid, mode = 0);
forward OnDynamicVehicleSpawn(vehicleid);
forward OnDynamicVehicleDeath(vehicleid, killerid);
forward OnPlayerEnterDynamicVehicle(playerid, vehicleid, ispassenger);
forward OnPlayerExitDynamicVehicle(playerid, vehicleid);
forward OnDynamicVehicleMod(playerid, vehicleid, componentid);
forward OnDynamicVehiclePaintjob(playerid, vehicleid, paintjobid);
forward OnDynamicVehicleRespray(playerid, vehicleid, color1, color2);
forward OnDynamicVehDamageStatusUpdate(vehicleid, playerid);
forward OnUnoccupiedDynamicVehUpdate(vehicleid, playerid, passenger_seat, Float:new_x, Float:new_y, Float:new_z, Float:vel_x, Float:vel_y, Float:vel_z);
forward OnDynamicVehicleStreamIn(vehicleid, forplayerid);
forward OnDynamicVehicleStreamOut(vehicleid, forplayerid);
forward OnDynamicTrailerUpdate(playerid, vehicleid);
forward OnDynamicVehSirenStateChange(playerid, vehicleid, newstate);
Is the original streamer plugin integrated with this one? I don't quite understand.
|
Yes it is, if you will look at source or inc file you can see that it has dynamic object, text lablel..etc functions too.
Nice work Suggestion: You should add GetDynamicVehiclePoolSize() too because mostly people loops from 0 to MAX_VEHICLES. |
Streamer_GetUpperBound(STREAMER_TYPE_VEHICLE)
Kurta, the only difference between the samp vehicle streamer and your vehicle streamer is the modified respawn system?
|
I still think this is a wasted effort it's like trying to use the object pool to stream objects for players. The more players you have the less vehicles that can be streamed per player.
When someone with a large server actually tries to use this there is going to be all sorts of problems with vehicles not streaming when they should be. It's fine it works on your smaller server but that does no justice if this was actually to be used as intended on a large server. Just picture a large amount of cars in one area and you can't get your car because it won't stream in because the server has 200 players all streaming. |
I still think this is a wasted effort it's like trying to use the object pool to stream objects for players. The more players you have the less vehicles that can be streamed per player.
When someone with a large server actually tries to use this there is going to be all sorts of problems with vehicles not streaming when they should be. It's fine it works on your smaller server but that does no justice if this was actually to be used as intended on a large server. Just picture a large amount of cars in one area and you can't get your car because it won't stream in because the server has 200 players all streaming. |
If you have enough pickups it would eventually cause issues but how many people actually need that many pickups to even get there?
|