Kwarde

k_streamer

Feb 22nd, 2011
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.87 KB | None | 0 0
  1. /*
  2.     #########################################
  3.     #                                       #
  4.     #   Kwarde's Streamer - Version 1.0     #
  5.     #   Don't remove any credits please     #
  6.     #                                       #
  7.     #########################################
  8. */
  9.  
  10. #include <a_samp>
  11.  
  12. #undef MAX_PLAYERS
  13.  
  14. #define MAX_SLOTS 500 //Max players of your server
  15. #define MAX_STREAM_OBJECTS 5000 //Max streamed objects
  16.  
  17. enum object_info()
  18. {
  19.     oID,
  20.     Float:oPosX,
  21.     Float:oPosY,
  22.     Float:oPosZ,
  23.     Float:oRotX,
  24.     Float:oRotY,
  25.     Float:oRotZ,
  26.     oModelID,
  27.     Float:oViewDistance,
  28.     bool:oObjectIsSpawned
  29. };
  30. new ObjectInfo[MAX_STREAM_OBJECTS][object_info];
  31. new ObjectCount = 0;
  32.  
  33. new pObject[MAX_SLOTS][MAX_STREAM_OBJECTS];
  34. new bool:pObjectIsSpawned[MAX_SLOTS][MAX_STREAM_OBJECTS];
  35.  
  36. forward CallSpawner();
  37.  
  38. /*
  39. native k_CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance);
  40. native k_DestroyObject(objectid);
  41. native k_SetObjectPos(objectid, Float:X, Float:Y, Float:Z);
  42. native k_SetObjectRot(objectid, Float:rZ, Float:rY, Float:rZ);
  43. native k_IsValidObject(objectid);
  44. */
  45.  
  46. public OnFilterScriptInit()
  47. {
  48.     for(new s = 0; s < MAX_STREAM_OBJECTS+1; s++)
  49.     {
  50.         ObjectInfo[s][oID] = (-1);
  51.         ObjectInfo[s][oObjectIsSpawned] = false;
  52.     }
  53.     for(new i = 0; i < MAX_SLOTS; i++)
  54.     {
  55.         for(new j = 0; j < MAX_STREAM_OBJECTS+1; j++)
  56.         {
  57.             pObject[i][j] = (-1);
  58.             pObjectIsSpawned[i][j] = false;
  59.         }
  60.     }
  61.    
  62.     SetTimer("CallSpawner", 450, true);
  63.     return 1;
  64. }
  65.  
  66. public OnPlayerConnect(playerid)
  67. {
  68.     for(new s = 0; s < MAX_STREAM_OBJECTS+1; s++)
  69.     {
  70.         if(pObjectIsSpawned[playerid][s]){
  71.             DestroyPlayerObject(playerid, pObject[playerid][s]);
  72.             pObjectIsSpawned[playerid][s] = false;
  73.         }
  74.         pObject[playerid][s] = 01;
  75.         pObjectIsSpawned[playerid][s] = false;
  76.     }
  77.     return 1;
  78. }
  79.  
  80. public OnPlayerDisconnect(playerid)
  81. {
  82.     for(new s = 0; s < MAX_STREAM_OBJECTS+1; s++)
  83.     {
  84.         if(pObjectIsSpawned[playerid][s]){
  85.             DestroyPlayerObject(playerid, pObject[playerid][s]);
  86.             pObjectIsSpawned[playerid][s] = false;
  87.         }
  88.         pObject[playerid][s] = 01;
  89.         pObjectIsSpawned[playerid][s] = false;
  90.     }
  91.     return 1;
  92. }
  93.  
  94. public CallSpawner()
  95. {
  96.     for(new i = 0; i < MAX_SLOTS; i++)
  97.     {
  98.         if(IsPlayerConnected(i) && !IsPlayerNPC(i))
  99.         {
  100.             for(new s = 0; s < MAX_STREAM_OBJECTS+1; s++)
  101.             {
  102.                 if(ObjectInfo[s][oObjectIsSpawned])
  103.                 {
  104.                     if(IsPlayerInRangeOfPoint(i, ObjectInfo[s][oViewDistance], ObjectInfo[s][oPosX], ObjectInfo[s][oPosY], ObjectInfo[s][oPosZ]))
  105.                     {
  106.                         if(!pObjectIsSpawned[i][s])
  107.                         {
  108.                             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]);
  109.                             pObjectIsSpawned[i][s] = true;
  110.                         }
  111.                     }
  112.                     else
  113.                     {
  114.                         if(pObjectIsSpawned[i][s])
  115.                         {
  116.                             DestroyPlayerObject(i, pObject[i][s]);
  117.                             pObjectIsSpawned[i][s] = false;
  118.                         }
  119.                     }
  120.                 }
  121.             }
  122.         }
  123.     }
  124.     return 1;
  125. }
  126.  
  127. stock k_CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance)
  128. {
  129.     ObjectCount++;
  130.     ObjectInfo[ObjectCount][oID] = ObjectCount;
  131.     ObjectInfo[ObjectCount][oModelID] = modelid;
  132.     ObjectInfo[ObjectCount][oPosX] = Float:X;
  133.     ObjectInfo[ObjectCount][oPosY] = Float:Y;
  134.     ObjectInfo[ObjectCount][oPosZ] = Float:Z;
  135.     ObjectInfo[ObjectCount][oRotX] = Float:rX;
  136.     ObjectInfo[ObjectCount][oRotY] = Float:rY;
  137.     ObjectInfo[ObjectCount][oRotZ] = Float:rZ;
  138.     ObjectInfo[ObjectCount][oViewDistance] = Float:DrawDistance;
  139.     ObjectInfo[ObjectCount][oObjectIsSpawned] = true;
  140. }
  141.  
  142. stock k_DestroyObject(objectid)
  143. {
  144.     ObjectInfo[objectid][oObjectIsUsed] = false;
  145.     for(new i = 0; i < MAX_SLOTS; i++)
  146.     {
  147.         if(pObjectIsSpawned[i][objectid])
  148.         {
  149.             DestroyPlayerObject(i, pObject[i][objectid]);
  150.             pObjectIsStreamed[i][objectid] = false;
  151.         }
  152.     }
  153. }
  154.  
  155. stock k_SetObjectPos(objectid, Float:X, Float:Y, Float:Z)
  156. {
  157.     new OldX = ObjectInfo[objectid][oPosX];
  158.     new OldY = ObjectInfo[objectid][oPosY];
  159.     new OldZ = ObjectInfo[objectid][oPosZ];
  160.     if(OldX != X || OldY != Y || OldZ != Z)
  161.     {
  162.         ObjectInfo[objectid][oPosX] = X;
  163.         ObjectInfo[objectid][oPosY] = Y;
  164.         ObjectInfo[objectid][oPosZ] = Z;
  165.     }
  166. }
  167.  
  168. stock k_SetObjectRot(objectid, Float:rX, Float:rY, Float:rZ)
  169. {
  170.     new Old_rX = ObjectInfo[objectid][oRotX];
  171.     new Old_rY = ObjectInfo[objectid][oRotY];
  172.     new Old_rZ = ObjectInfo[objectid][oRotZ];
  173.     if(Old_rZ != rX || Old_rY != rY || Old_rZ != rZ)
  174.     {
  175.         ObjectInfo[objectid][oRotX] = rX;
  176.         ObjectInfo[objectid][oRotY] = rY;
  177.         ObjectInfo[objectid][oRotZ] = rZ;
  178.     }
  179. }
  180.  
  181. stock k_IsValidObject(objectid)
  182. {
  183.     return ObjectInfo[objectid][oObjectIsSpawned];
  184. }
Add Comment
Please, Sign In to add comment