Advertisement
Kwarde

G_ObjectsRot

Mar 19th, 2011
796
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.06 KB | None | 0 0
  1. /*
  2.                 +-------------------------------------------------+
  3.                 |           Script created by Gantzyo.            |
  4.                 |                                                 |
  5.                 |         You can contact with me in the          |
  6.                 |                  official post:                 |
  7.                 | http://forum.sa-mp.com/index.php?topic=176846.0 |
  8.                 |                                                 |
  9.                 |             Don't delete credits!               |
  10.                 +-------------------------------------------------+
  11. */
  12.  
  13. #include <a_samp>
  14. #if defined _G_ObjectsRot_included
  15.     #endinput
  16. #endif
  17. #define _G_ObjectsRot_included
  18. #pragma library G_ObjectsRot
  19.  
  20. #define SERVER_OBJECTS 1000 //1000 is the number of objects in the server
  21. new Float:newrotX[SERVER_OBJECTS];
  22. new Float:newrotY[SERVER_OBJECTS];
  23. new Float:newrotZ[SERVER_OBJECTS];
  24. new Float:odifX[SERVER_OBJECTS];
  25. new Float:odifY[SERVER_OBJECTS];
  26. new Float:odifZ[SERVER_OBJECTS];
  27. new ospeed[SERVER_OBJECTS];
  28. new oTimer[SERVER_OBJECTS];
  29. new oState[SERVER_OBJECTS];
  30. new opoints[SERVER_OBJECTS];
  31.  
  32. stock RotateObject(objectid,Float:rotX,Float:rotY,Float:rotZ,points,Float:speed)
  33. {
  34.     if(oState[objectid] == 1)KillTimer(oTimer[objectid]);
  35.     ospeed[objectid] = floatround(floatdiv(1000,speed),floatround_round);
  36.     oTimer[objectid] = SetTimerEx("RotateObj",ospeed[objectid],0,"dd",objectid,points);
  37.     newrotX[objectid] = rotX;
  38.     newrotY[objectid] = rotY;
  39.     newrotZ[objectid] = rotZ;
  40.     new Float:rot[3];
  41.     GetObjectRot(objectid,rot[0],rot[1],rot[2]);
  42.     odifX[objectid] = (rotX-rot[0])/points;
  43.     odifY[objectid] = (rotY-rot[1])/points;
  44.     odifZ[objectid] = (rotZ-rot[2])/points;
  45.     oState[objectid] = 1;
  46.     opoints[objectid] = 0;
  47.     return 1;
  48. }
  49. stock SetObjectRotationSpeed(objectid,Float:speed)
  50. {
  51.     ospeed[objectid] = floatround(floatdiv(1000,speed),floatround_round);
  52.     return 1;
  53. }
  54. stock StopRotatingObject(objectid)
  55. {
  56.     if(oState[objectid] == 1)KillTimer(oTimer[objectid]);
  57.     oState[objectid] = 0;
  58.     OnObjectStopRotate(objectid);
  59.     return 1;
  60. }
  61. stock GenerateBucle(objectid,Float:offX,Float:offY,Float:offZ,Float:speed)
  62. {
  63.     if(oState[objectid] == 1)KillTimer(oTimer[objectid]);
  64.     ospeed[objectid] = floatround(floatdiv(1000,speed),floatround_round);
  65.     oTimer[objectid] = SetTimerEx("RotateObjBucle",ospeed[objectid],0,"d",objectid);
  66.     odifX[objectid] = offX;
  67.     odifY[objectid] = offY;
  68.     odifZ[objectid] = offZ;
  69.     oState[objectid] = 1;
  70.     return 1;
  71. }
  72. stock StopBucle(objectid)
  73. {
  74.     if(oState[objectid] == 1)KillTimer(oTimer[objectid]);
  75.     oState[objectid] = 0;
  76.     OnObjectStopBucle(objectid);
  77.     return 1;
  78. }
  79. forward RotateObj(objectid,points);
  80. public RotateObj(objectid,points)
  81. {
  82.     if(oState[objectid] == 0) return 1;
  83.     new Float:rot[3];
  84.     GetObjectRot(objectid,rot[0],rot[1],rot[2]);
  85.     if(newrotX[objectid] != rot[0])rot[0]+=odifX[objectid];
  86.     if(newrotY[objectid] != rot[1])rot[1]+=odifY[objectid];
  87.     if(newrotZ[objectid] != rot[2])rot[2]+=odifZ[objectid];
  88.     SetObjectRot(objectid,rot[0],rot[1],rot[2]);
  89.     opoints[objectid]++;
  90.     if((newrotX[objectid] != rot[0] || newrotY[objectid] != rot[1] || newrotZ[objectid] != rot[2]) && opoints[objectid] != points)oTimer[objectid] = SetTimerEx("RotateObj",ospeed[objectid],0,"dd",objectid,points);
  91.     else {oState[objectid] = 0;OnObjectRotated(objectid);}
  92.     return 1;
  93. }
  94. forward RotateObjBucle(objectid);
  95. public RotateObjBucle(objectid)
  96. {
  97.     if(oState[objectid] == 0) return 1;
  98.     new Float:rot[3];
  99.     GetObjectRot(objectid,rot[0],rot[1],rot[2]);
  100.     SetObjectRot(objectid,rot[0]+odifX[objectid],rot[1]+odifY[objectid],rot[2]+odifZ[objectid]);
  101.     oTimer[objectid] = SetTimerEx("RotateObjBucle",ospeed[objectid],0,"d",objectid);
  102.     return 1;
  103. }
  104. forward OnObjectRotated(objectid);
  105. forward OnObjectStopRotate(objectid);
  106. forward OnObjectStopBucle(objectid);
  107. /*
  108. native RotateObject(objectid,Float:rotX,Float:rotY,Float:rotZ,points,Float:speed);
  109. native SetObjectRotationSpeed(objectid,Float:speed);
  110. native StopRotatingObject(objectid);
  111. native GenerateBucle(objectid,Float:offX,Float:offY,Float:offZ,Float:speed)
  112. native StopBucle(objectid);
  113. native OnObjectRotated(objectid);
  114. native OnObjectStopRotate(objectid);
  115. native OnObjectStopBucle(objectid);
  116. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement