Advertisement
Guest User

Untitled

a guest
Mar 14th, 2011
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.03 KB | None | 0 0
  1. /*
  2.     Royal World Object Streamer
  3.     © by Royal World Team
  4. */
  5.  
  6. //===================================   DEFINES   ===================================//
  7.  
  8. #define MAX_PLAYERS_EX 160
  9. #if MAX_PLAYERS_EX > MAX_PLAYERS
  10. #error Max. Pocet hracov na servery je 500!
  11. #endif
  12.  
  13. #define MAX_OBJECT_AREAS 100
  14. #define MAX_OBJECTS_IN_AREA 300 // O 100 Menej ako max. počet craeteobjects !
  15. #define INVALID_OBJECT_AREA -1
  16. #define or ||
  17.  
  18. //=================================== END DEFINES =================================//
  19. //===================================     NEWS    ===================================//
  20.  
  21. enum a
  22. {
  23.         Float:ObjectAreaMinX,
  24.         Float:ObjectAreaMinY,
  25.         Float:ObjectAreaMaxX,
  26.         Float:ObjectAreaMaxY,
  27.         bool:ObjectAreaCreated
  28. };
  29. new ObjectAreaInfo[MAX_OBJECT_AREAS][a];
  30. new ObjectAreaCount;
  31.  
  32.  
  33. enum Streamer
  34. {
  35.     ModelObjektu, //Objectmodel
  36.     Float:x,
  37.     Float:y,
  38.     Float:z,
  39.     Float:ORX,
  40.     Float:ORY,
  41.     Float:ORZ,
  42.     ObjectIstota
  43. }
  44. new Object[MAX_OBJECTS_IN_AREA][MAX_OBJECT_AREAS][Streamer];
  45. new ObjectCount[MAX_OBJECTS_IN_AREA];
  46.  
  47.  
  48. new Created[MAX_PLAYERS][MAX_OBJECTS_IN_AREA];
  49. new ObjectStreamed[MAX_PLAYERS][MAX_OBJECTS_IN_AREA];
  50. new PlayerObjectArea[MAX_PLAYERS] = {INVALID_OBJECT_AREA,...};
  51.  
  52. //=================================== END NEWS =================================//
  53. //=================================== FORWARDS ===================================//
  54. forward OnPlayerConnectedObject(playerid);
  55. forward OnPlayerEnterToObjectArea(playerid,area);
  56. forward OnPlayerExitToObjectArea(playerid,area);
  57. forward OnObjectGameModeInit();
  58. forward Stream();
  59. //=================================== END FORWARDS =================================//
  60. //===================================     STOCKS   ===================================//
  61. stock CreateObjectArea(id,Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
  62. {
  63.         cyk:
  64.         if(ObjectAreaInfo[id][ObjectAreaCreated] == true){
  65.         id++;
  66.         goto cyk;
  67.         }
  68.         ObjectAreaInfo[id][ObjectAreaMinX] = MinX;
  69.         ObjectAreaInfo[id][ObjectAreaMaxX] = MaxX;
  70.         ObjectAreaInfo[id][ObjectAreaMinY] = MinY;
  71.         ObjectAreaInfo[id][ObjectAreaMaxY] = MaxY;
  72.         ObjectAreaInfo[id][ObjectAreaCreated] = true;
  73.         ObjectAreaCount++;
  74.         return id;
  75. }
  76.  
  77.  
  78. stock IsPlayerInObjectArea(playerid, areaid)
  79. {
  80.     if(ObjectAreaInfo[areaid][ObjectAreaCreated] == false) return 0;
  81.     new Float:FX, Float:FY, Float:FZ;
  82.     GetPlayerPos(playerid, FX, FY, FZ);
  83.     if(FX >= ObjectAreaInfo[areaid][ObjectAreaMinX] && FX <= ObjectAreaInfo[areaid][ObjectAreaMaxX] && FY >= ObjectAreaInfo[areaid][ObjectAreaMinY] && FY <= ObjectAreaInfo[areaid][ObjectAreaMaxY]) {
  84.         return 1;
  85.     }
  86.     return 0;
  87. }
  88.  
  89. stock CreateStreamedObject(area,Ob,Float:xx,Float:yy,Float:zz,Float:rx,Float:ry,Float:rz)
  90. {
  91.     if(ObjectCount[area] > MAX_OBJECTS_IN_AREA){
  92.     printf("|**********************|");
  93.     printf("| ERROR ! Prekroceny   |");
  94.     printf("| Max. pocet objektov  |");
  95.     printf("|**********************|");
  96.     SendRconCommand("exit");
  97.     }
  98.     if(ObjectAreaInfo[area][ObjectAreaCreated] == false) return 0;
  99.     Object[ObjectCount[area]][area][ModelObjektu] = Ob;
  100.     Object[ObjectCount[area]][area][x]          = xx;
  101.     Object[ObjectCount[area]][area][y]          = yy;
  102.     Object[ObjectCount[area]][area][z]          = zz;
  103.     Object[ObjectCount[area]][area][ORX]            = rx;
  104.     Object[ObjectCount[area]][area][ORY]            = ry;
  105.     Object[ObjectCount[area]][area][ORZ]            = rz;
  106.     Object[ObjectCount[area]][area][ObjectIstota] = 1;
  107.     printf("Object %d v zóne %d Vytvoreny !",ObjectCount,area);
  108.  
  109.     ObjectCount[area]++;
  110. return 1;
  111. }
  112.  
  113.  
  114. //=================================== END STOCKS =================================//
  115. //===================================   PUBLICS  ===================================//
  116. public OnObjectGameModeInit(){
  117. SetTimer("Stream",1323, true);
  118. }
  119.  
  120. public OnPlayerConnectedObject(playerid){
  121. PlayerObjectArea[playerid] = INVALID_OBJECT_AREA;
  122. }
  123.  
  124. public Stream()
  125. {
  126.         for(new i;i<MAX_PLAYERS;i++){
  127.         if(IsPlayerConnected(i)){
  128.         if(PlayerObjectArea[i] == INVALID_OBJECT_AREA){
  129.         for(new q;q < ObjectAreaCount+1;q++){
  130.         if(IsPlayerInObjectArea(i,q)){
  131.         PlayerObjectArea[i] = q;
  132.         OnPlayerEnterToObjectArea(i, q);
  133.         }}
  134.             }else{
  135.         if(!IsPlayerInObjectArea(i,PlayerObjectArea[i])){
  136.         OnPlayerExitToObjectArea(i,PlayerObjectArea[i]);
  137.         PlayerObjectArea[i] = INVALID_OBJECT_AREA;
  138.         }}}
  139.  
  140.         }
  141.     return 1;
  142. }
  143.  
  144. public OnPlayerEnterToObjectArea(playerid,area){
  145.             for(new Ob; Ob<ObjectCount[area];Ob++){
  146.             if(Object[Ob][area][ObjectIstota] == 1){
  147.             Created[playerid][Ob] = CreatePlayerObject(playerid, Object[Ob][area][ModelObjektu], Object[Ob][area][x], Object[Ob][area][y], Object[Ob][area][z], Object[Ob][area][ORX], Object[Ob][area][ORY], Object[Ob][area][ORZ]);
  148.             ObjectStreamed[playerid][Ob] = 1;
  149.           }}
  150. }
  151.  
  152. public OnPlayerExitToObjectArea(playerid,area){
  153.             for(new Ob; Ob<ObjectCount[area];Ob++){
  154.             if(Object[Ob][area][ObjectIstota] == 1){
  155.             ObjectStreamed[playerid][Ob] = 0;
  156.             DestroyPlayerObject(playerid, Created[playerid][Ob]);
  157.             }}
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement