Advertisement
domo101

Vatromet System

Aug 16th, 2016
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.61 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. #include <sscanf2>
  4.  
  5. #define RED 0xF3400CFF
  6. #define SCM SendClientMessage
  7.  
  8. #define MAX_FIREWORK 100 //Promjeni u koliko zelis da bude max. vatrometa
  9. #define NON -1
  10. #pragma tabsize 0
  11.  
  12. #define function%0(%1) forward%0(%1); public%0(%1)
  13.  
  14.  
  15. enum EnumFirework
  16. {
  17. FW_Owner,
  18. Float:FW_Pos[4],
  19. Float:FW_Height,
  20. Float:FW_Radius,
  21. FW_Amount,
  22. FW_RocketsReleased,
  23. FW_RocketDirection,
  24. FW_Timer,
  25. FW_Box
  26. };
  27. new FireworkInfo[MAX_FIREWORK][EnumFirework];
  28.  
  29. public OnFilterScriptInit(){
  30. for(new i; i < MAX_FIREWORK; i++) FireworkInfo[i][FW_Owner]=NON;
  31. return 1;
  32. }
  33. public OnFilterScriptExit(){
  34. return 1;
  35. }
  36.  
  37. function EmptyFireworkSlot()
  38. {
  39. for(new i=1; i < MAX_FIREWORK; i++)if(FireworkInfo[i][FW_Owner]==NON) return i;
  40. return 0;
  41. }
  42.  
  43. CMD:postavivatromet(playerid,params[])
  44. {
  45. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Nisi RCON admin!");
  46. new Float:height,Float:radius,amount,string[60];
  47. if(sscanf(params,"ffd",height,radius,amount))return SCM(playerid,-1,"POMOC: /postavivatromet [Visina] [Radijus] [Kolicina]");
  48. new eid=EmptyFireworkSlot();
  49. if(!eid)return SCM(playerid,RED,"Ne mozete postaviti vise vatrometa!");
  50. GetPlayerPos(playerid,FireworkInfo[eid][FW_Pos][0],FireworkInfo[eid][FW_Pos][1],FireworkInfo[eid][FW_Pos][2]);
  51. GetPlayerFacingAngle(playerid,FireworkInfo[eid][FW_Pos][3]);
  52.  
  53. FireworkInfo[eid][FW_RocketDirection]=1;
  54. FireworkInfo[eid][FW_RocketsReleased]=1;
  55. FireworkInfo[eid][FW_Radius]=radius;
  56. FireworkInfo[eid][FW_Height]=height;
  57. FireworkInfo[eid][FW_Owner]=playerid;
  58. FireworkInfo[eid][FW_Amount]=amount;
  59. FireworkInfo[eid][FW_Pos][0]+= (2.0 * floatsin(-FireworkInfo[eid][FW_Pos][3],degrees));
  60. FireworkInfo[eid][FW_Pos][1]+= (2.0 * floatcos(-FireworkInfo[eid][FW_Pos][3],degrees));
  61. FireworkInfo[eid][FW_Pos][2]-=0.9;
  62. FireworkInfo[eid][FW_Box]=CreateObject(3016,FireworkInfo[eid][FW_Pos][0],FireworkInfo[eid][FW_Pos][1],FireworkInfo[eid][FW_Pos][2], 0,0,0);
  63. format(string,sizeof(string),"ID vatrometa: %d",eid);
  64. SCM(playerid,-1,string);
  65. return 1;
  66. }
  67. CMD:pokrenivatromet(playerid,params[])
  68. {
  69. new eid;
  70. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Nisi RCON admin!");
  71. if(sscanf(params,"d",eid))return SCM(playerid,-1,"POMOC: /pokrenivatromet [ID]");
  72. if(FireworkInfo[eid][FW_Owner]!=playerid)return SCM(playerid,RED,"Ne mozes aktivirati ovaj vatromet!");
  73. FireworkInfo[eid][FW_Timer]=SetTimerEx("pokrenivatromet",600,true,"d",eid);
  74. return 1;
  75. }
  76.  
  77. CMD:happybirthday(playerid, arg[])
  78. {
  79. new string[128];
  80. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Nisi RCON admin!");
  81. format( string, sizeof(string), "~w~ Sretan rodjendan ~b~ GoF!"); // <--- Umjesto "Sretan rodjendan GoF" stavite sta zelite da bude na ekranu
  82. GameTextForAll( string, 5000, 3 );
  83. for(new i=0; i<MAX_PLAYERS; i++)
  84. {
  85. if(IsPlayerConnected(i))
  86. {
  87. GivePlayerMoney(i, 50000); // <----- Umjesto 50000 stavite kolikogod hocete novca da date svim igracima
  88. }
  89. }
  90. return 1;
  91. }
  92.  
  93. CMD:unistivatromet(playerid, params[])
  94. {
  95. new eid;
  96. new string[128];
  97. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Nisi RCON admin!");
  98. if(sscanf(params,"d",eid))return SCM(playerid,-1,"POMOC: /unistivatromet [ID]");
  99. FireworkInfo[eid][FW_Owner]=NON;
  100. DestroyObject(FireworkInfo[eid][FW_Box]);
  101. format(string,sizeof(string),"Unistili ste firework ID: %d",eid);
  102. SCM(playerid,-1,string);
  103. return 1;
  104. }
  105.  
  106. function pokrenivatromet(eid)
  107. {
  108. FireworkInfo[eid][FW_Amount]--;
  109. new Float:distance,Float:Ax,Float:Ay,Float:Az,time,object;
  110.  
  111. if(!FireworkInfo[eid][FW_Amount]){
  112. if(IsPlayerConnected(FireworkInfo[eid][FW_Owner]))SCM(FireworkInfo[eid][FW_Owner],-1,"Vatromet je prestao.");
  113. FireworkInfo[eid][FW_Owner]=NON;
  114. DestroyObject(FireworkInfo[eid][FW_Box]);
  115. KillTimer(FireworkInfo[eid][FW_Timer]);
  116. return 1;
  117. }
  118. switch(FireworkInfo[eid][FW_RocketsReleased]){
  119. case 1:distance=20.0;
  120. case 2:distance=10.0;
  121. case 3:distance=0.0;
  122. case 4:distance=(-10.0);
  123. case 5:distance=(-20.0);
  124. }
  125. switch(FireworkInfo[eid][FW_RocketDirection]){
  126. case 1:{
  127. FireworkInfo[eid][FW_RocketsReleased]++;
  128. if(FireworkInfo[eid][FW_RocketsReleased]==6){FireworkInfo[eid][FW_RocketDirection]=0;FireworkInfo[eid][FW_RocketsReleased]=4;}
  129. }
  130. case 0:{
  131. FireworkInfo[eid][FW_RocketsReleased]--;
  132. if(FireworkInfo[eid][FW_RocketsReleased]==0){FireworkInfo[eid][FW_RocketDirection]=1;FireworkInfo[eid][FW_RocketsReleased]=2;}
  133. }
  134. }
  135.  
  136. Ax=FireworkInfo[eid][FW_Pos][0]+(distance * floatsin(-FireworkInfo[eid][FW_Pos][3],degrees));
  137. Ay=FireworkInfo[eid][FW_Pos][1]+(distance * floatsin(-FireworkInfo[eid][FW_Pos][3],degrees));
  138. Az=FireworkInfo[eid][FW_Pos][2]+FireworkInfo[eid][FW_Height];
  139.  
  140. object=CreateObject(3000,FireworkInfo[eid][FW_Pos][0],FireworkInfo[eid][FW_Pos][1],FireworkInfo[eid][FW_Pos][2],0,0,0);
  141. time=MoveObject(object, Ax,Ay,Az, 20.0);
  142. SetTimerEx("MakeSphere",time,false,"dffff",object,Ax,Ay,Az,FireworkInfo[eid][FW_Radius]);
  143. return 1;
  144. }
  145. function MakeSphere(nobject,Float:x,Float:y,Float:z,Float:radius)
  146. {
  147. DestroyObject(nobject);
  148. new object,type[3]={19282,19283,19284};
  149. new Float:phi=0.0,Float:theta=0.0,time;
  150. new Float:Ax=0.0,Float:Ay=0.0,Float:Az=0.0;
  151. CreateExplosion(x,y,z, 12,10.0);
  152. for(new i; i < 26; i++){
  153. Ax=x+(radius*floatsin(-phi,degrees)*floatcos(-theta,degrees));
  154. Ay=y+(radius*floatsin(-phi,degrees)*floatsin(-theta,degrees));
  155. Az=z+(radius*floatcos(-phi,degrees));
  156.  
  157. object=CreateObject(type[random(3)],x,y,z,0.0,0.0,theta+45);
  158. time=MoveObject(object, Ax,Ay,Az, 5.0);
  159. SetTimerEx("FireworkRocketEnd",time,false,"d",object);
  160.  
  161. theta+=45.0; if(theta==360.0){ Ax=0.0; Ax=0.0; Ay=0.0;}
  162. if((1+i)%8==1)phi+=45;
  163. }
  164. return 1;
  165. }
  166. function FireworkRocketEnd(object)return DestroyObject(object);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement