Advertisement
Guest User

Untitled

a guest
Jun 26th, 2013
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.18 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define MAX_FIREWEORKS 30
  4.  
  5. enum FIREWORKS
  6. {
  7.     Float:F_X,
  8.     Float:F_Y,
  9.     Float:F_Z,
  10.     Float:FM_X,
  11.     Float:FM_Y,
  12.     Float:FM_Z,
  13.     OBJECT,
  14.     TYPE,
  15.     TIMER[2],
  16.     bool:F_USED,
  17.     bool:IS_POINT
  18. };
  19. new
  20.     firework_id, Float:position[3], fireworks[ MAX_FIREWEORKS ][ FIREWORKS ];
  21.  
  22. stock CreateFirework(type, Float: f_X, Float: f_Y, Float: f_Z)
  23. {
  24.     firework_id = 1;
  25.     while(firework_id < MAX_FIREWEORKS && fireworks[firework_id][F_USED]) firework_id ++;
  26.     if(firework_id >= MAX_FIREWEORKS) return printf("(MAX_FIREWEORKS) maximum fireworks is %d", MAX_FIREWEORKS);
  27.     fireworks[firework_id][OBJECT] = CreateObject(type, f_X, f_Y, f_Z -2, 0, 0, 0);
  28.     fireworks[firework_id][F_X] = f_X;
  29.     fireworks[firework_id][F_Y] = f_Y;
  30.     fireworks[firework_id][F_Z] = f_Z;
  31.     fireworks[firework_id][TYPE] = type;
  32.     fireworks[firework_id][F_USED] = true;
  33.     fireworks[firework_id][IS_POINT] = false;
  34.     fireworks[firework_id][TIMER][0] = SetTimerEx("MoveFirework", 3300, true, "%d", firework_id);
  35.     return firework_id;
  36. }
  37. stock PushFireworkToPoint(fireworkid, Float:fp_x, Float:fp_y, Float:fp_z, Float:Point_x, Float:Point_y, Float:Point_z)
  38. {
  39.     if(!fireworks[fireworkid][F_USED]) return printf("(USED_FIREWEORKS) this a fireworks not used");
  40.     for(new f; f < 2; f++) KillTimer(fireworks[fireworkid][TIMER][f]);
  41.     DestroyObject(fireworks[fireworkid][OBJECT]);
  42.     fireworks[fireworkid][F_X] = fp_x;
  43.     fireworks[fireworkid][F_Y] = fp_y;
  44.     fireworks[fireworkid][F_Z] = fp_z;
  45.     fireworks[fireworkid][FM_X] = Point_x;
  46.     fireworks[fireworkid][FM_Y] = Point_y;
  47.     fireworks[fireworkid][FM_Z] = Point_z;
  48.     fireworks[fireworkid][IS_POINT] = true;
  49.     fireworks[fireworkid][TIMER][0] = SetTimerEx("MoveFirework", 3300, false, "%d", fireworkid);
  50.     return fireworks[fireworkid][OBJECT] = CreateObject(fireworks[fireworkid][TYPE], fp_x, fp_y, fp_z, 0, 0, 0);
  51. }
  52. stock MoveFireworkToPlayer(fireworkid, userid)
  53. {
  54.     if(!fireworks[fireworkid][F_USED]) return printf("(USED_FIREWEORKS) this a fireworks not used");
  55.     for(new f; f < 2; f++) KillTimer(fireworks[fireworkid][TIMER][f]);
  56.     GetPlayerPos(userid, position[0], position[1], position[2]);
  57.     fireworks[fireworkid][F_X] = position[0];
  58.     fireworks[fireworkid][F_Y] = position[1];
  59.     fireworks[fireworkid][F_Z] = position[2]-2;
  60.     DestroyObject(fireworks[fireworkid][OBJECT]);
  61.     fireworks[fireworkid][TIMER][0] = SetTimerEx("MoveFirework", 3300, true, "%d", fireworkid);
  62.     return fireworks[fireworkid][OBJECT] = CreateObject(fireworks[fireworkid][TYPE], position[0], position[1], position[2], 0, 0, 0);
  63. }
  64. stock AttachFireworkToPlayer(fireworkid, userid) return fireworks[fireworkid][TIMER][1] = SetTimerEx("CheckFirework", 300, true, "%d", fireworkid, userid);
  65. stock DestroyFirework(fireid)
  66. {
  67.     if(!fireworks[fireid][F_USED]) return printf("(USED_FIREWEORKS) this a fireworks not used");
  68.     for(new f; f < 2; f++) KillTimer(fireworks[fireid][TIMER][f]);
  69.     fireworks[fireid][F_USED] = false;
  70.     return DestroyObject(fireworks[fireid][OBJECT]);
  71. }
  72. stock DestroyAllFirework()
  73. {
  74.     for(new j; j < MAX_FIREWEORKS; j++)
  75.     {
  76.         if(fireworks[j][F_USED])
  77.         {
  78.             for(new f; f < 2; f++)
  79.             {
  80.                 KillTimer(fireworks[j][TIMER][f]),
  81.                 DestroyObject(fireworks[j][OBJECT]),
  82.                 fireworks[j][F_USED] = false;
  83.             }
  84.         }
  85.     }
  86.     return true;
  87. }
  88. forward MoveFirework(firework);
  89. public MoveFirework(firework)
  90. {
  91.     MoveObject(fireworks[firework][OBJECT], !fireworks[firework][IS_POINT]?(fireworks[firework][F_X],fireworks[firework][F_Y],fireworks[firework][F_Z]+48):(fireworks[firework][FM_X],fireworks[firework][FM_Y],fireworks[firework][FM_Z]),48);
  92.     return !fireworks[firework][IS_POINT]?(SetTimerEx("BoomFirework", 1300, false, "%d", firework)):(fireworks[firework][TIMER][1] = SetTimerEx("CheckFirework", 1000, true, "%d", firework, -1));
  93. }
  94. forward BoomFirework(obid);
  95. public BoomFirework(obid)
  96. {
  97.     DestroyObject(fireworks[obid][OBJECT]);
  98.     fireworks[obid][OBJECT] = CreateObject(fireworks[obid][TYPE], fireworks[obid][F_X], fireworks[obid][F_Y], fireworks[obid][F_Z] -2, 0, 0, 0);
  99.     return CreateExplosion(fireworks[obid][F_X], fireworks[obid][F_Y], fireworks[obid][F_Z]+48, 7, 10);
  100. }
  101. forward CheckFirework(fireworkid, userid);
  102. public CheckFirework(fireworkid, userid)
  103. {
  104.     GetObjectPos(fireworks[fireworkid][OBJECT], position[0], position[1], position[2]);
  105.     if(fireworks[fireworkid][F_USED] && fireworks[fireworkid][IS_POINT] && position[0] == fireworks[fireworkid][FM_X] && position[1] == fireworks[fireworkid][FM_Y] && position[2] == fireworks[fireworkid][FM_Z])
  106.     {
  107.         CreateExplosion(fireworks[fireworkid][FM_X], fireworks[fireworkid][FM_Y], fireworks[fireworkid][FM_Z], 7, 10);
  108.         fireworks[fireworkid][TIMER][0] = SetTimerEx("MoveFirework", 3300, false, "%d", fireworkid);
  109.         DestroyObject(fireworks[fireworkid][OBJECT]);
  110.         fireworks[fireworkid][OBJECT] = CreateObject(fireworks[fireworkid][TYPE], fireworks[fireworkid][F_X], fireworks[fireworkid][F_Y], fireworks[fireworkid][F_Z], 0, 0, 0);
  111.         return KillTimer(fireworks[fireworkid][TIMER][1]);
  112.     }
  113.     GetPlayerPos(userid, position[0], position[1], position[2]);
  114.     fireworks[fireworkid][F_X] = position[0];
  115.     fireworks[fireworkid][F_Y] = position[1];
  116.     fireworks[fireworkid][F_Z] = position[2]-2;
  117.     return true;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement