Advertisement
Guest User

Untitled

a guest
Apr 13th, 2014
132
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. Oinf[rands][modelid2] = modelid;
  43. Oinf[rands][X2] = X;
  44. Oinf[rands][Y2] = Y;
  45. Oinf[rands][Z2] = Z;
  46. Oinf[rands][rX2] = rX;
  47. Oinf[rands][rY2] = rY;
  48. Oinf[rands][rZ2] = rZ;
  49. Oinf[rands][DrawDistance2] = DrawDistance;
  50. //CreatePlayerObject(playerid, modelid, X, Y, Z, rX, rY, rZ, DrawDistance)
  51. if(DynObjects < 1) { timerupdate = SetTimer("UpdateObjects",2000,1); }
  52. DynObjects ++;
  53. return rands;
  54. }
  55. new bool:Created[MAX_PLAYERS][MAX_DYN_OBJECTS];
  56. forward UpdateObjects();
  57. public UpdateObjects()
  58. {
  59. for(new obj = 0;obj < DynObjects;obj++)
  60. {
  61. if(Oinf[obj][used] == 0) continue;
  62. foreachTriga(player)
  63. {
  64. if(IsPlayerInRangeOfPoint(player,Oinf[obj][DrawDistance2],Oinf[obj][X2],Oinf[obj][Y2],Oinf[obj][Z2]))
  65. {
  66. if(Created[player][obj] == false)
  67. {
  68. 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]);
  69. Created[player][obj] = true;
  70. }
  71. }
  72. else
  73. {
  74. if(Created[player][obj] == true)
  75. {
  76. DestroyPlayerObject(player, obj);
  77. Created[player][obj] = false;
  78. }
  79. }
  80. }
  81. }
  82. return true;
  83. }
  84. AddObject()
  85. {
  86. for(new rands = 0;rands < MAX_DYN_OBJECTS;rands++)
  87. {
  88. if(Oinf[rands][used] == 0)
  89. {
  90. Oinf[rands][used] = 1;
  91. return rands;
  92. }
  93. }
  94. return INVALID_OBJECT_ID;
  95. }
  96. stock DestroyDynObject(objectid)
  97. {
  98. Oinf[objectid][used] = 0;
  99. Oinf[objectid][modelid2] = -1;
  100. Oinf[objectid][X2] = -1;
  101. Oinf[objectid][Y2] = -1;
  102. Oinf[objectid][Z2] = -1;
  103. Oinf[objectid][rX2] = -1;
  104. Oinf[objectid][rY2] = -1;
  105. Oinf[objectid][rZ2] = -1;
  106. Oinf[objectid][DrawDistance2] = -1;
  107. DynObjects--;
  108. if(DynObjects < 1) { KillTimer(timerupdate); }
  109. return true;
  110. }
  111. public OnPlayerConnect(playerid)
  112. {
  113. if(IsPlayerNPC(playerid))return true;
  114. Players[players++]=playerid;
  115. return 1;
  116. }
  117.  
  118. public OnPlayerDisconnect(playerid, reason)
  119. {
  120. if(IsPlayerNPC(playerid)) return true;
  121. for(new i=0;i<players;i++)
  122. {
  123. if(Players[i]==playerid)
  124. {
  125. Players[i]=Players[--players];
  126. Players[players]=-1;
  127. break;
  128. }
  129. }
  130. for(new obj = 0;obj < DynObjects;obj++)
  131. {
  132. if(Oinf[obj][used] == 0) continue;
  133. if(IsPlayerInRangeOfPoint(playerid,Oinf[obj][DrawDistance2],Oinf[obj][X2],Oinf[obj][Y2],Oinf[obj][Z2]))
  134. {
  135. if(Created[playerid][obj] == true)
  136. {
  137. DestroyPlayerObject(playerid, obj);
  138. Created[playerid][obj] = false;
  139. }
  140. }
  141. Created[playerid][obj] = false;
  142. }
  143. return 1;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement