Advertisement
Guest User

Untitled

a guest
Apr 13th, 2014
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // This is a comment
  2. // uncomment the line below if you want to write a filterscript
  3. //#define FILTERSCRIPT
  4.  
  5. #include <a_samp>
  6. #define MAX_DYN_OBJECTS 1000
  7. new Players[MAX_PLAYERS] = {-1, ...};
  8. new players;
  9. #define foreachTriga(%0) for(new ouf, %0=Players[ouf]; ouf <players; %0=Players[++ouf])
  10.  
  11. public OnFilterScriptInit()
  12. {
  13. print("\n--------------------------------------");
  14. print(" Стример на pawn 0.1 by Caypen");
  15. print("--------------------------------------\n");
  16. return 1;
  17. }
  18.  
  19. public OnFilterScriptExit()
  20. {
  21. return 1;
  22. }
  23. new DynObjects;
  24. enum ObjInf
  25. {
  26. modelid2,
  27. used,
  28. Float:X2,
  29. Float:Y2,
  30. Float:Z2,
  31. Float:rX2,
  32. Float:rY2,
  33. Float:rZ2,
  34. Float:DrawDistance2
  35. };
  36. new Oinf[MAX_DYN_OBJECTS][ObjInf];
  37. new timerupdate;
  38. CreateDynObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance = 0.0)
  39. {
  40. if(DynObjects >= MAX_DYN_OBJECTS-1) return INVALID_OBJECT_ID;
  41. new rands = AddObject();
  42. if(rands == INVALID_OBJECT_ID) return INVALID_OBJECT_ID;
  43. Oinf[rands][modelid2] = modelid;
  44. Oinf[rands][X2] = X;
  45. Oinf[rands][Y2] = Y;
  46. Oinf[rands][Z2] = Z;
  47. Oinf[rands][rX2] = rX;
  48. Oinf[rands][rY2] = rY;
  49. Oinf[rands][rZ2] = rZ;
  50. Oinf[rands][DrawDistance2] = DrawDistance;
  51. //CreatePlayerObject(playerid, modelid, X, Y, Z, rX, rY, rZ, DrawDistance)
  52. if(DynObjects < 1) { timerupdate = SetTimer("UpdateObjects",2000,1); }
  53. DynObjects ++;
  54. return rands;
  55. }
  56. new bool:Created[MAX_PLAYERS][MAX_DYN_OBJECTS];
  57. forward UpdateObjects();
  58. public UpdateObjects()
  59. {
  60. for(new obj = 0;obj < DynObjects;obj++)
  61. {
  62. if(Oinf[obj][used] == 0) continue;
  63. foreachTriga(player)
  64. {
  65. if(IsPlayerInRangeOfPoint(player,Oinf[obj][DrawDistance2],Oinf[obj][X2],Oinf[obj][Y2],Oinf[obj][Z2]))
  66. {
  67. if(Created[player][obj] == false)
  68. {
  69. CreatePlayerObject(player, Oinf[obj][modelid2], Oinf[obj][X2],Oinf[obj][Y2],Oinf[obj][Z2], Oinf[obj][rX2],Oinf[obj][rY2],Oinf[obj][rZ2], Oinf[obj][DrawDistance2]);
  70. Created[player][obj] = true;
  71. }
  72. }
  73. else
  74. {
  75. if(Created[player][obj] == true)
  76. {
  77. DestroyPlayerObject(player, obj);
  78. Created[player][obj] = false;
  79. }
  80. }
  81. }
  82. }
  83. return true;
  84. }
  85. AddObject()
  86. {
  87. for(new rands = 0;rands < MAX_DYN_OBJECTS;rands++)
  88. {
  89. if(Oinf[rands][used] == 0)
  90. {
  91. Oinf[rands][used] = 1;
  92. return rands;
  93. }
  94. }
  95. return INVALID_OBJECT_ID;
  96. }
  97. stock DestroyDynObject(objectid)
  98. {
  99. Oinf[objectid][used] = 0;
  100. Oinf[objectid][modelid2] = -1;
  101. Oinf[objectid][X2] = -1;
  102. Oinf[objectid][Y2] = -1;
  103. Oinf[objectid][Z2] = -1;
  104. Oinf[objectid][rX2] = -1;
  105. Oinf[objectid][rY2] = -1;
  106. Oinf[objectid][rZ2] = -1;
  107. Oinf[objectid][DrawDistance2] = -1;
  108. DynObjects--;
  109. if(DynObjects < 1) { KillTimer(timerupdate); }
  110. return true;
  111. }
  112. public OnPlayerConnect(playerid)
  113. {
  114. if(IsPlayerNPC(playerid))return true;
  115. Players[players++]=playerid;
  116. return 1;
  117. }
  118.  
  119. public OnPlayerDisconnect(playerid, reason)
  120. {
  121. if(IsPlayerNPC(playerid)) return true;
  122. for(new i=0;i<players;i++)
  123. {
  124. if(Players[i]==playerid)
  125. {
  126. Players[i]=Players[--players];
  127. Players[players]=-1;
  128. break;
  129. }
  130. }
  131. for(new obj = 0;obj < DynObjects;obj++)
  132. {
  133. if(Oinf[obj][used] == 0) continue;
  134. if(IsPlayerInRangeOfPoint(playerid,Oinf[obj][DrawDistance2],Oinf[obj][X2],Oinf[obj][Y2],Oinf[obj][Z2]))
  135. {
  136. if(Created[playerid][obj] == true)
  137. {
  138. DestroyPlayerObject(playerid, obj);
  139. Created[playerid][obj] = false;
  140. }
  141. }
  142. Created[playerid][obj] = false;
  143. }
  144. return 1;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement