Advertisement
Bebras

[INC]Mines - Bebras

Mar 23rd, 2014
475
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.19 KB | None | 0 0
  1.  
  2.     /*
  3.                 Minų kūrimo include
  4.                 Autorius Bebras 2014
  5.                
  6.  
  7.     */
  8.  
  9.  
  10.  
  11. #if !defined _inc_streamer
  12.     #error Mine include reikalingas "streamer.inc".
  13. #endif
  14.  
  15.  
  16. #if !defined MINE_MODEL
  17.     #define MINE_MODEL      1213
  18. #endif
  19.  
  20. #if !defined MAX_MINES
  21.     #define MAX_MINES           25
  22. #endif
  23.  
  24. #if !defined MINE_EXPLOSION_TYPE   
  25.     #define MINE_EXPLOSION_TYPE     10
  26. #endif
  27.  
  28. #if !defined MINE_ACTIVE_ZONE
  29.     #define MINE_ACTIVE_ZONE        0.7
  30. #endif
  31.  
  32. #if !defined MINE_ARM_TIME
  33.     #define MINE_ARM_TIME       4000
  34. #endif
  35.  
  36. #if !defined MINE_EXPLOSION_SIZE
  37.     #define MINE_EXPLOSION_SIZE     10.0
  38. #endif
  39.  
  40. #if defined OnMineArm
  41.     forward OnMineArm(mineid);
  42. #endif
  43.  
  44. enum _:e_MineData {
  45.     eMineData_Object,
  46.     eMineData_Area,
  47.     Float:eMineData_X,
  48.     Float:eMineData_Y,
  49.     Float:eMineData_Z,
  50.     Float:eMineData_ExplosionSize,
  51.     eMineData_ExplosionType,
  52.     bool:eMineData_Armed
  53. }
  54. static stock aMineData[MAX_MINES][e_MineData];
  55.  
  56.  
  57. stock CreateMine(Float:x,Float:y,Float:z,Float:rotX=0.0,Float:rotY = 0.0,Float:rotZ = 0.0,virtualworld=-1,interior=-1,
  58.     model = MINE_MODEL,explosiontype = MINE_EXPLOSION_TYPE,Float:explosionsize = MINE_EXPLOSION_SIZE)
  59. {
  60.     for(new i; i < MAX_MINES; i++)
  61.     {
  62.         if(!IsValidDynamicObject(aMineData[i][eMineData_Object]))
  63.         {
  64.             aMineData[i][eMineData_X] = x;
  65.             aMineData[i][eMineData_Y] = y;
  66.             aMineData[i][eMineData_Z] = z;
  67.             aMineData[i][eMineData_ExplosionSize] = explosionsize;
  68.             aMineData[i][eMineData_ExplosionType] = explosiontype;
  69.  
  70.             aMineData[i][eMineData_Object] = CreateDynamicObject(model, x, y, z, rotX,rotY,rotZ,virtualworld,interior);
  71.             aMineData[i][eMineData_Area] = CreateDynamicSphere(x, y, z, MINE_ACTIVE_ZONE);
  72.             aMineData[i][eMineData_Armed] = false;
  73.             SetTimerEx("TimeTillMineIsArmed",MINE_ARM_TIME,false,"i",i);
  74.             return i;
  75.         }
  76.     }
  77.     return -1;
  78. }
  79.  
  80. stock DestroyMine(mineid)
  81. {
  82.     DestroyDynamicObject(aMineData[mineid][eMineData_Object]);
  83.     DestroyDynamicArea(aMineData[mineid][eMineData_Area]);
  84. }
  85.  
  86. stock IsValidMine(mineid)
  87.     return IsValidDynamicObject(aMineData[mineid][eMineData_Object]);
  88.  
  89. stock IsMineArmed(mineid)
  90.     return aMineData[mineid][eMineData_Armed];
  91.  
  92.  
  93. forward TimeTillMineIsArmed(mineid);
  94. public TimeTillMineIsArmed(mineid)
  95. {
  96.     aMineData[mineid][eMineData_Armed] = true;
  97.     #if defined OnMineArm
  98.         OnMineArm(mineid);
  99.     #endif
  100.     return 1;
  101. }
  102.  
  103.  
  104. public OnPlayerLeaveDynamicArea(playerid, areaid)
  105. {
  106.     for(new i; i < MAX_MINES; i++)
  107.     {
  108.         if(!IsValidDynamicObject(aMineData[i][eMineData_Object])) continue;
  109.         if(!aMineData[i][eMineData_Armed]) continue;
  110.         if(aMineData[i][eMineData_Area] == areaid)
  111.         {
  112.             CreateExplosion(aMineData[i][eMineData_X], aMineData[i][eMineData_Y], aMineData[i][eMineData_Z],aMineData[i][eMineData_ExplosionType], aMineData[i][eMineData_ExplosionSize]);
  113.             DestroyMine(i);
  114.             return 1;
  115.         }
  116.     }
  117.     #if defined Bebras_OnPlayerLeaveDynamicArea
  118.         Bebras_OnPlayerLeaveDynamicArea(playerid,areaid);
  119.     #endif
  120.     return 0;
  121. }
  122. #if defined _ALS_OnPlayerLeaveDynamicArea
  123.     #undef OnPlayerLeaveDynamicArea
  124. #else
  125.     #define _ALS_OnPlayerLeaveDynamicArea
  126. #endif
  127. #define OnPlayerLeaveDynamicArea Bebras_OnPlayerLeaveDynamicArea
  128. #if defined Bebras_OnPlayerLeaveDynamicArea
  129.     forward Bebras_OnPlayerLeaveDynamicArea(playerid, areaid);
  130. #endif
  131.  
  132. public OnPlayerShootDynamicObject(playerid, weaponid, objectid, Float:x, Float:y, Float:z)
  133. {
  134.     for(new i; i < MAX_MINES; i++)
  135.     {
  136.         if(!IsValidDynamicObject(aMineData[i][eMineData_Object])) continue;
  137.         if(!aMineData[i][eMineData_Armed]) continue;
  138.         if(aMineData[i][eMineData_Object] == objectid)
  139.         {
  140.             CreateExplosion(aMineData[i][eMineData_X], aMineData[i][eMineData_Y], aMineData[i][eMineData_Z],aMineData[i][eMineData_ExplosionType], aMineData[i][eMineData_ExplosionSize]);
  141.             DestroyMine(i);
  142.             return 1;
  143.         }
  144.     }
  145.     #if defined Beb_OnPlayerShootDynamicObject
  146.         Beb_OnPlayerShootDynamicObject(playerid, weaponid, objectid, Float:x, Float:y, Float:z);
  147.     #endif
  148.     return 0;
  149. }
  150. #if defined _ALS_OnPlayerShootDynamicObject
  151.     #undef OnPlayerShootDynamicObject
  152. #else
  153.     #define _ALS_OnPlayerShootDynamicObject
  154. #endif
  155. #define OnPlayerShootDynamicObject Beb_OnPlayerShootDynamicObject
  156. #if defined Beb_OnPlayerShootDynamicObject 
  157.     forward Beb_OnPlayerShootDynamicObject(playerid, weaponid, objectid, Float:x, Float:y, Float:z);
  158. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement