Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- #########################################
- # #
- # Kwarde's Streamer - Version 1.0 #
- # Don't remove any credits please #
- # #
- #########################################
- */
- #include <a_samp>
- #undef MAX_PLAYERS
- #define MAX_SLOTS 500 //Max players of your server
- #define MAX_STREAM_OBJECTS 5000 //Max streamed objects
- enum object_info()
- {
- oID,
- Float:oPosX,
- Float:oPosY,
- Float:oPosZ,
- Float:oRotX,
- Float:oRotY,
- Float:oRotZ,
- oModelID,
- Float:oViewDistance,
- bool:oObjectIsSpawned
- };
- new ObjectInfo[MAX_STREAM_OBJECTS][object_info];
- new ObjectCount = 0;
- new pObject[MAX_SLOTS][MAX_STREAM_OBJECTS];
- new bool:pObjectIsSpawned[MAX_SLOTS][MAX_STREAM_OBJECTS];
- forward CallSpawner();
- /*
- native k_CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance);
- native k_DestroyObject(objectid);
- native k_SetObjectPos(objectid, Float:X, Float:Y, Float:Z);
- native k_SetObjectRot(objectid, Float:rZ, Float:rY, Float:rZ);
- native k_IsValidObject(objectid);
- */
- public OnFilterScriptInit()
- {
- for(new s = 0; s < MAX_STREAM_OBJECTS+1; s++)
- {
- ObjectInfo[s][oID] = (-1);
- ObjectInfo[s][oObjectIsSpawned] = false;
- }
- for(new i = 0; i < MAX_SLOTS; i++)
- {
- for(new j = 0; j < MAX_STREAM_OBJECTS+1; j++)
- {
- pObject[i][j] = (-1);
- pObjectIsSpawned[i][j] = false;
- }
- }
- SetTimer("CallSpawner", 450, true);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- for(new s = 0; s < MAX_STREAM_OBJECTS+1; s++)
- {
- if(pObjectIsSpawned[playerid][s]){
- DestroyPlayerObject(playerid, pObject[playerid][s]);
- pObjectIsSpawned[playerid][s] = false;
- }
- pObject[playerid][s] = 01;
- pObjectIsSpawned[playerid][s] = false;
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid)
- {
- for(new s = 0; s < MAX_STREAM_OBJECTS+1; s++)
- {
- if(pObjectIsSpawned[playerid][s]){
- DestroyPlayerObject(playerid, pObject[playerid][s]);
- pObjectIsSpawned[playerid][s] = false;
- }
- pObject[playerid][s] = 01;
- pObjectIsSpawned[playerid][s] = false;
- }
- return 1;
- }
- public CallSpawner()
- {
- for(new i = 0; i < MAX_SLOTS; i++)
- {
- if(IsPlayerConnected(i) && !IsPlayerNPC(i))
- {
- for(new s = 0; s < MAX_STREAM_OBJECTS+1; s++)
- {
- if(ObjectInfo[s][oObjectIsSpawned])
- {
- if(IsPlayerInRangeOfPoint(i, ObjectInfo[s][oViewDistance], ObjectInfo[s][oPosX], ObjectInfo[s][oPosY], ObjectInfo[s][oPosZ]))
- {
- if(!pObjectIsSpawned[i][s])
- {
- pObject[i][s] = CreatePlayerObject(i, ObjectInfo[s][oModelID], ObjectInfo[s][oPosX], ObjectInfo[s][oPosY], ObjectInfo[s][oPosZ], ObjectInfo[s][oRotX], ObjectInfo[s][oRotY], ObjectInfo[s][oRotZ]);
- pObjectIsSpawned[i][s] = true;
- }
- }
- else
- {
- if(pObjectIsSpawned[i][s])
- {
- DestroyPlayerObject(i, pObject[i][s]);
- pObjectIsSpawned[i][s] = false;
- }
- }
- }
- }
- }
- }
- return 1;
- }
- stock k_CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance)
- {
- ObjectCount++;
- ObjectInfo[ObjectCount][oID] = ObjectCount;
- ObjectInfo[ObjectCount][oModelID] = modelid;
- ObjectInfo[ObjectCount][oPosX] = Float:X;
- ObjectInfo[ObjectCount][oPosY] = Float:Y;
- ObjectInfo[ObjectCount][oPosZ] = Float:Z;
- ObjectInfo[ObjectCount][oRotX] = Float:rX;
- ObjectInfo[ObjectCount][oRotY] = Float:rY;
- ObjectInfo[ObjectCount][oRotZ] = Float:rZ;
- ObjectInfo[ObjectCount][oViewDistance] = Float:DrawDistance;
- ObjectInfo[ObjectCount][oObjectIsSpawned] = true;
- }
- stock k_DestroyObject(objectid)
- {
- ObjectInfo[objectid][oObjectIsUsed] = false;
- for(new i = 0; i < MAX_SLOTS; i++)
- {
- if(pObjectIsSpawned[i][objectid])
- {
- DestroyPlayerObject(i, pObject[i][objectid]);
- pObjectIsStreamed[i][objectid] = false;
- }
- }
- }
- stock k_SetObjectPos(objectid, Float:X, Float:Y, Float:Z)
- {
- new OldX = ObjectInfo[objectid][oPosX];
- new OldY = ObjectInfo[objectid][oPosY];
- new OldZ = ObjectInfo[objectid][oPosZ];
- if(OldX != X || OldY != Y || OldZ != Z)
- {
- ObjectInfo[objectid][oPosX] = X;
- ObjectInfo[objectid][oPosY] = Y;
- ObjectInfo[objectid][oPosZ] = Z;
- }
- }
- stock k_SetObjectRot(objectid, Float:rX, Float:rY, Float:rZ)
- {
- new Old_rX = ObjectInfo[objectid][oRotX];
- new Old_rY = ObjectInfo[objectid][oRotY];
- new Old_rZ = ObjectInfo[objectid][oRotZ];
- if(Old_rZ != rX || Old_rY != rY || Old_rZ != rZ)
- {
- ObjectInfo[objectid][oRotX] = rX;
- ObjectInfo[objectid][oRotY] = rY;
- ObjectInfo[objectid][oRotZ] = rZ;
- }
- }
- stock k_IsValidObject(objectid)
- {
- return ObjectInfo[objectid][oObjectIsSpawned];
- }
Add Comment
Please, Sign In to add comment