Advertisement
Guest User

Untitled

a guest
Dec 23rd, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.77 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define Zolty 0xFFFF00AA
  4. #if !defined MAX_FIRE
  5. #define MAX_FIRE 20
  6. #endif
  7. #define FIRE_TIMER 500
  8.  
  9. // USTAWIENIA
  10.  
  11. #define TXT_TEXT "%d | %d/20%",id, Fire[id][Health] // Ogólne ustawienia 3d tekstu (id - id pożaru, health - życie pożaru) - można tutaj kolorować i takie tam
  12.  
  13. enum _fire
  14. {
  15. bool:use,
  16. object,
  17. Float:fX,
  18. Float:fY,
  19. Float:fZ,
  20. Text3D:info,
  21. Health
  22. }
  23. new Fire[MAX_FIRE][_fire];
  24. new _firestr[10];
  25.  
  26. stock FireSystem_Init(){
  27. SetTimer("FireUpdate", FIRE_TIMER, true);
  28. return 1;
  29. }
  30.  
  31. new Float:RandomFire[][3] =
  32. {
  33. {1845.6254,690.8527,11.4531}
  34.  
  35. };
  36.  
  37. public OnFilterScriptInit()
  38. {
  39. FireSystem_Init();
  40. SetTimer("randfire", 60000*2, true);
  41. return 1;
  42. }
  43. #define HOLDING(%0) \
  44. ((newkeys & (%0)) == (%0))
  45.  
  46. forward FireUpdate();
  47. public FireUpdate(){
  48. for(new playerid; playerid < GetMaxPlayers(); playerid++){
  49. new id = GetClosestFire(playerid);
  50. if(id == -1) continue;
  51. if(GetPlayerWeapon(playerid) == 42){
  52. new newkeys,l,u;
  53. GetPlayerKeys(playerid, newkeys, l, u);
  54. if(HOLDING(KEY_FIRE)){
  55. if(IsPlayerLookingAtPoint(playerid, Fire[id][fX], Fire[id][fY], Fire[id][fZ])){
  56. if(Fire[id][Health] != 0){
  57. Fire[id][Health]-=1;
  58. format(_firestr, sizeof(_firestr),TXT_TEXT);
  59. Update3DTextLabelText(Fire[id][info], 0xFFFFFFFFF, _firestr);
  60. CallRemoteFunction("OnPlayerPutOutFire", "ddd", playerid, id, false);
  61. }
  62. else {
  63. DeleteFire(id);
  64. CallRemoteFunction("OnPlayerPutOutFire", "ddd", playerid, id, true);
  65. SendClientMessage(playerid, Zolty, "Wynagrodzenie: {FFFFFF}$200 i 20 score **"); // ustawiasz se wynagrodzenie
  66. GiveMoneyEx(playerid,200);
  67. GiveScoreEx(playerid,GetScoreEx(playerid)+20);
  68. }
  69. }
  70. }
  71. }
  72. }
  73. return 1;
  74. }
  75.  
  76. stock AddFire(Float:X, Float:Y, Float:Z){
  77. new id = GetFreeFireID();
  78. if(id == -1)
  79. return -1;
  80. Fire[id][use] = true;
  81. Fire[id][fX] = X;
  82. Fire[id][fY] = Y;
  83. Fire[id][fZ] = Z;
  84. Fire[id][Health] = 10+random(10);
  85. Fire[id][object] = CreateObject(3461, X, Y, Z-2.61, 0, 0, 0.0);
  86. format(_firestr, sizeof(_firestr),TXT_TEXT);
  87. Fire[id][info] = Create3DTextLabel(_firestr, 0xFFFFFFFFF, X, Y, Z, 20, 0);
  88. CallRemoteFunction("OnFireAdd", "d", id);
  89. CreateExplosion(X, Y, Z, 6, 999);
  90. return id;
  91. }
  92.  
  93. stock DeleteFire(id){
  94. CallRemoteFunction("OnFireDelete", "d", id);
  95. Fire[id][use] = false;
  96. Fire[id][fX] = 0.0;
  97. Fire[id][fY] = 0.0;
  98. Fire[id][fZ] = 0.0;
  99. Fire[id][Health] = 0;
  100. DestroyObject(Fire[id][object]);
  101. Fire[id][object] = -1;
  102. Delete3DTextLabel(Fire[id][info]);
  103. return 1;
  104. }
  105.  
  106. stock GetClosestFire(playerid){
  107. for(new i; i < MAX_FIRE; i++){
  108. if(Fire[i][use] == true && IsPlayerInRangeOfPoint(playerid, 1, Fire[i][fX], Fire[i][fY], Fire[i][fZ])){
  109. CallRemoteFunction("OnPlayerNearFire", "dd",playerid, i);
  110. return i;
  111. }
  112. }
  113. return -1;
  114. }
  115. stock GetFreeFireID(){
  116. for(new i; i < MAX_FIRE; i++){
  117. if(Fire[i][use] == false){
  118. return i;
  119. }
  120. }
  121. return -1;
  122. }
  123.  
  124. stock IsPlayerLookingAtPoint(playerid,Float:X,Float:Y,Float:Z,Float:ViewWidth=22.5,Float:ViewHeight=10.0)
  125. {
  126. new Float:cx,Float:cy,Float:cz,Float:pa1,Float:pa2,Float:ca1,Float:ca2,Float:px,Float:py,Float:pz;
  127. GetPlayerCameraFrontVector(playerid,cx,cy,cz);
  128. GetPlayerPos(playerid,px,py,pz);
  129. pz+=2.0;
  130. cx=floatadd(cx,px);
  131. cy=floatadd(cy,py);
  132. cz=floatadd(cz,pz);
  133. pa1=atan2(X-px,Y-py);
  134. if(pa1>360)pa1=floatsub(pa1,360);
  135. if(pa1<0)pa1=floatadd(pa1,360);
  136. pa2=atan2(Y-py,Z-pz);
  137. if(pa2>360)pa2=floatsub(pa2,360);
  138. if(pa2<0)pa2=floatadd(pa2,360);
  139. ca1=atan2(cx-px,cy-py);
  140. if(ca1>360)ca1=floatsub(ca1,360);
  141. if(ca1<0)ca1=floatadd(ca1,360);
  142. ca2=atan2(cy-py,cz-pz);
  143. if(ca2>360)ca2=floatsub(ca2,360);
  144. if(ca2<0)ca2=floatadd(ca2,360);
  145. if((ca1>(pa1-ViewWidth))&&(ca1<(pa1+ViewWidth))&&(ca2>(pa2-ViewHeight))&&(ca2<(pa2+ViewHeight)))return 1;
  146. if((pa1-ViewWidth)<0)
  147. {
  148. ca1-=360.0;
  149. if((ca1>(pa1-ViewWidth))&&(ca1<(pa1+ViewWidth))&&(ca2>(pa2-ViewHeight))&&(ca2<(pa2+ViewHeight)))return 1;
  150. }
  151. if((pa1+ViewWidth)>360)
  152. {
  153. ca1+=360.0;
  154. if((ca1>(pa1-ViewWidth))&&(ca1<(pa1+ViewWidth))&&(ca2>(pa2-ViewHeight))&&(ca2<(pa2+ViewHeight)))return 1;
  155. }
  156. return 0;
  157. }
  158.  
  159. forward randfire();
  160. public randfire(){
  161. new id = random(sizeof(RandomFire));
  162. AddFire(RandomFire[id][0], RandomFire[id][1], RandomFire[id][2]);
  163. return 1;
  164. }
  165. stock GiveMoneyEx(playerid,moneys)
  166. {
  167. GivePlayerMoney(playerid,moneys);
  168. return SetPVarInt(playerid,"money",GetPVarInt(playerid,"money")+moneys);
  169. }
  170. stock GiveScoreEx(playerid,scores)
  171. {
  172. SetPlayerScore(playerid,scores);
  173. return SetPVarInt(playerid,"score",scores);
  174. }
  175. stock GetScoreEx(playerid)
  176. {
  177. return GetPVarInt(playerid,"score");
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement