MrHardySAMP

[FilterScript][Include] hLumberjack

Jun 24th, 2012
331
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.91 KB | None | 0 0
  1. #include                    "a_samp.INC"
  2. #include                    "zcmd.INC"
  3.  
  4. #define MAX_WOOD            (200)//Máximo de Madeiras que você criara para lenhar !
  5. #define RANGE_WOOD          (7.0)//Raio em que o jogador pode lenhar certa madeira !
  6.  
  7. #define PRESSING(%0) \
  8.     (newkeys & %0)
  9.    
  10. /*******************************************************************************
  11.     Include hLumberjack criada por Jhonatan Silva(Mr.Hardy) em 23/06/2012 ás
  12.     18:30
  13.    
  14.     Agradecimentos: Zeex (Pela #include ZCMD criada por ele. ZCMD Fast & Simple Command Processor)
  15.  
  16. *******************************************************************************/
  17.  
  18. enum wInfo
  19. {
  20.     bool:ObjectWood,
  21.     Float:HealthWood,
  22.     Text3D:WoodLabel,
  23. };
  24. new WoodInfo[MAX_WOOD][wInfo];
  25.  
  26. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  27. {
  28.     if (PRESSING(KEY_FIRE))
  29.     {
  30.         if(GetPlayerWeapon(playerid) == WEAPON_CHAINSAW)
  31.         {
  32.             for(new woodid = 0; woodid < MAX_WOOD; woodid++) if(IsWoodObject(woodid))
  33.             {
  34.                 new Float:obj_PosX,
  35.                     Float:obj_PosY,
  36.                     Float:obj_PosZ;
  37.                    
  38.                 GetObjectPos(woodid, obj_PosX, obj_PosY, obj_PosZ);
  39.                 if(IsPlayerInRangeOfPoint(playerid, RANGE_WOOD, obj_PosX, obj_PosY, obj_PosZ)) ProcessWood(woodid);
  40.             }
  41.         }
  42.     }
  43.     return true;
  44. }
  45.  
  46. CMD:wood(playerid, params[])
  47. {
  48.     #define POS_TO_X 10.0
  49.     #define POS_TO_Y 10.0
  50.    
  51.     new Float:Calculo_X = 108.3151,
  52.         Float:Calculo_Y = 1727.4938;
  53.        
  54.     //X
  55.     for(new woodid = 0; woodid < MAX_WOOD/4; woodid++)
  56.     {
  57.         Calculo_X = Calculo_X + POS_TO_X;
  58.         CreateWood(700,Calculo_X,Calculo_Y,17.6406,0.0,0.0,0.0);
  59.     }
  60.     for(new woodid = 0; woodid < MAX_WOOD/4; woodid++)
  61.     {
  62.         Calculo_X = Calculo_X - POS_TO_X;
  63.         CreateWood(700,Calculo_X,Calculo_Y,17.6406,0.0,0.0,0.0);
  64.     }
  65.    
  66.     //Y
  67.     for(new woodid = 0; woodid < MAX_WOOD/4; woodid++)
  68.     {
  69.         Calculo_Y = Calculo_Y + POS_TO_Y;
  70.         CreateWood(700,Calculo_X,Calculo_Y,17.6406,0.0,0.0,0.0);
  71.     }
  72.     for(new woodid = 0; woodid < MAX_WOOD/4; woodid++)
  73.     {
  74.         Calculo_Y = Calculo_Y - POS_TO_Y;
  75.         CreateWood(700,Calculo_X,Calculo_Y,17.6406,0.0,0.0,0.0);
  76.     }
  77.     return true;
  78. }
  79.  
  80. CMD:irfloresta(playerid, params[])
  81. {
  82.     SetPlayerPos(playerid, 108.3151,1727.4938,17.6406);
  83.     return true;
  84. }
  85.  
  86. CMD:unwood(playerid, params[])
  87. {
  88.     for(new woodid = 0; woodid < MAX_WOOD; woodid++)
  89.     {
  90.         DestroyWood(woodid);
  91.     }
  92.     return true;
  93. }
  94.  
  95. CMD:motoserra(playerid, params[])
  96. {
  97.     GivePlayerWeapon(playerid, WEAPON_CHAINSAW, 1);
  98.     return true;
  99. }
  100.  
  101. stock CreateWood(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float: DrawDistance = 0.0)
  102. {
  103.     new wood = CreateObject(modelid, X, Y, Z, rX, rY, rZ, DrawDistance);
  104.     WoodInfo[wood][WoodLabel] = Create3DTextLabel("100.0%", 0xFFFFFFFF, X, Y, Z, 10.0, 0, 0);
  105.    
  106.     WoodInfo[wood][HealthWood] = 100.0;
  107.     WoodInfo[wood][ObjectWood] = true;
  108.     return wood;
  109. }
  110.  
  111. stock DestroyWood(woodid)
  112. {
  113.     DestroyObject(woodid);
  114.     WoodInfo[woodid][HealthWood] = 100.0;
  115.     WoodInfo[woodid][ObjectWood] = false;
  116.     Delete3DTextLabel(WoodInfo[woodid][WoodLabel]);
  117.     return true;
  118. }
  119.  
  120. stock IsWoodObject(woodid)
  121. {
  122.     if(IsValidObject(woodid) && WoodInfo[woodid][ObjectWood] == true) return true;
  123.     return false;
  124. }
  125.  
  126. stock ProcessWood(woodid)
  127. {
  128.     new Float:DamageWood[5] =
  129.     {
  130.         5.2,
  131.         7.9,
  132.         11.7,
  133.         3.4,
  134.         9.1,
  135.     };
  136.     WoodInfo[woodid][HealthWood] -= DamageWood[random(5)];
  137.     if(WoodInfo[woodid][HealthWood] < 0.0)
  138.     {
  139.         DestroyWood(woodid);
  140.     }
  141.     return true;
  142. }
  143.  
  144. public OnFilterScriptInit()
  145. {
  146.     SetTimer("UpdateWoodLabel3D", 1000, true);
  147.     return true;
  148. }
  149.  
  150. forward UpdateWoodLabel3D();
  151. public UpdateWoodLabel3D()
  152. {
  153.     for(new woodid = 0; woodid < MAX_WOOD; woodid++) if(IsWoodObject(woodid))
  154.     {
  155.         new string[12];
  156.         format(string, sizeof(string),"%.2f%s", WoodInfo[woodid][HealthWood], "%");
  157.         Update3DTextLabelText(WoodInfo[woodid][WoodLabel], 0xFFFFFFFF, string);
  158.     }
  159.     return true;
  160. }
Advertisement
Add Comment
Please, Sign In to add comment