rickvocam

Untitled

Apr 13th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.82 KB | None | 0 0
  1. #define     LIMIT_FARMER_PLAYER             (15) // Mỗi thằng 15 cây
  2. #define     MAX_OBJECT_FARMER               (12000) // 15 * MAX_PLAYERS
  3.  
  4. enum e_farmer {
  5.     farm_sqlid,
  6.     farm_owner,
  7.     Float:farm_posx,
  8.     Float:farm_posy,
  9.     Float:farm_posz,
  10.     farm_begintime,
  11.     farm_status,
  12.     farm_objectid
  13. }
  14. new
  15.     TotalFarmerObject = 0,
  16.     Iterator: FarmerJob<MAX_OBJECT_FARMER>,
  17.     ObjectFarmer[MAX_OBJECT_FARMER][e_farmer];
  18.  
  19. task FarmerCheck[1000]()
  20. {
  21.     foreach(new f : FarmerJob)
  22.     {
  23.         if(gettime() - ObjectFarmer[f][farm_begintime] > 60) // Nếu cây trồng được hơn 1 phút thì cây chính có thể thu hoạch
  24.         {
  25.             if(ObjectFarmer[f][farm_status] == 0) {
  26.                 ObjectFarmer[f][farm_status] = 1;
  27.                 new playerid = GetOwnerPlayerId(ObjectFarmer[f][farm_owner]);
  28.                 if(playerid != INVALID_PLAYER_ID) SendClientMessage(playerid, -1, "Cay trong cua ban da chin, hay mau thu hoach");
  29.             }
  30.  
  31.             if(gettime() - ObjectFarmer[f][farm_begintime] > 120) // nếu cây trồng được hơn 2 phút thì cây héo nếu k thu hoạch
  32.             {
  33.                 RemoveFarmerObject(ObjectFarmer[f][farm_objectid]);
  34.             }
  35.         }
  36.     }
  37. }
  38.  
  39. GetOwnerPlayerId(sqlid)
  40. {
  41.     foreach(new i : Player)
  42.     {
  43.         if(player[i][psqlid] == sqlid) return i;
  44.     }
  45.     return INVALID_PLAYER_ID;
  46. }
  47.  
  48. ShowPlayerFarmerObject(playerid)
  49. {
  50.     new total = 0
  51.     foreach(new f : FarmerJob)
  52.     {
  53.         if(ObjectFarmer[f][farm_owner] == player[playerid][psqlid]) // trong ngg thay player[playerid][psqlid] = GetPlayerSQLID(playerid)
  54.         {
  55.             SendClientMessageEx(playerid, -1, "Object : %d, Status: %d, Pos_X: %0.2f, Pos_Y : %0.2f, Pos_Z : %0.2f", ObjectFarmer[f][farm_objectid], ObjectFarmer[f][farm_status], ObjectFarmer[f][farm_posx], ObjectFarmer[f][farm_posy], ObjectFarmer[f][farm_posz]);
  56.             total++;
  57.         }
  58.     }
  59.     SendClientMessage(playerid, -1, "Tong so cay: %d", total);
  60. }
  61.  
  62. CheckFarmerObjectNear(playerid, Float:range)
  63. {
  64.     foreach(new f : FarmerJob)
  65.     {
  66.         if(IsPlayerInRangeOfPoint(playerid, range, ObjectFarmer[f][farm_posx], ObjectFarmer[f][farm_posy], ObjectFarmer[f][farm_posz]))
  67.         {
  68.             return f;
  69.         }
  70.     }
  71.     return -1;
  72. }
  73.  
  74. CreateFarmerObject(playerid, Float:x, Float:y, Float:z)
  75. {
  76.     new near_object = CheckFarmerObjectNear(playerid, 5.0);
  77.     if(near_object == -1)
  78.     {
  79.         new query[128], begintime = gettime();
  80.         mysql_format(g_SQL, query, sizeof query, "INSERT INTO farmer_job SET owner = %d, posx = %0.5f, posy = %0.5f, posz = %0.5f, status = 0, begintime = %d", player[playerid][psqlid], x,y,z,begintime);
  81.         inline query_result()
  82.         {
  83.             if(cache_affected_rows())
  84.             {
  85.                 new i = Iter_Alloc(FarmerJob);
  86.                 ObjectFarmer[i][farm_sqlid] = cache_insert_id();
  87.                 ObjectFarmer[i][farm_objectid] = CreateDynamicObject(3409, x,y,z-2.1, 0, 0, 0, 0, -1, .streamdistance = 50, .drawdistance = 20);
  88.                 ObjectFarmer[i][farm_owner] = player[playerid][psqlid];
  89.                 ObjectFarmer[i][farm_posx] = x;
  90.                 ObjectFarmer[i][farm_posy] = y;
  91.                 ObjectFarmer[i][farm_posz] = z;
  92.                 ObjectFarmer[i][farm_begintime] = gettime();
  93.                 ObjectFarmer[i][farm_status] = 0;
  94.                 SendClientMessage(playerid, -1, "Trong cay thanh cong");
  95.                 TotalFarmerObject++;
  96.                 printf("Object : %d, Owner: %d, Pos_X: %0.2f, Pos_Y : %0.2f, Pos_Z : %0.2f:", ObjectFarmer[i][farm_objectid], ObjectFarmer[i][farm_owner], ObjectFarmer[i][farm_posx], ObjectFarmer[i][farm_posy], ObjectFarmer[i][farm_posz]);
  97.             }
  98.             else {
  99.                 print("co loi xay ra khi tao object");
  100.             }
  101.         }
  102.         mysql_tquery_inline(g_SQL, query, using inline query_result, "");
  103.     }
  104.     else {
  105.         SendClientMessage(playerid, -1, "Khong duoc trong cay qua gan nhau");
  106.         printf("Object near : %d, Owner: %d, Pos_X: %0.2f, Pos_Y : %0.2f, Pos_Z : %0.2f:", ObjectFarmer[near_object][farm_objectid], ObjectFarmer[near_object][farm_owner], ObjectFarmer[near_object][farm_posx], ObjectFarmer[near_object][farm_posy], ObjectFarmer[near_object][farm_posz]);
  107.     }
  108.    
  109.        
  110. }
  111.  
  112. RemoveFarmerObject(objectid)
  113. {
  114.     if(IsValidDynamicObject(objectid))
  115.     {
  116.         foreach(new f : FarmerJob)
  117.         {
  118.             if(ObjectFarmer[f][farm_objectid] == objectid)
  119.             {
  120.                 new query[128];
  121.                 mysql_format(g_SQL, query, sizeof query, "DELETE FROM farmer_job WHERE id = %d", ObjectFarmer[f][farm_sqlid]);
  122.                 inline query_result()
  123.                 {
  124.                     if(cache_affected_rows())
  125.                     {
  126.                         DestroyDynamicObject(ObjectFarmer[f][farm_objectid]);
  127.                         new tmp[e_farmer];
  128.                         ObjectFarmer[f] = tmp;
  129.                         Iter_Remove(FarmerJob, f);
  130.                         TotalFarmerObject--;
  131.                         printf("delete object : %d thanh cong", objectid);
  132.                     }
  133.                     else {
  134.                         printf("co loi xay ra khi delete object : %d", objectid);
  135.                     }
  136.                 }
  137.                 mysql_tquery_inline(g_SQL, query, using inline query_result, "");
  138.                 break;
  139.             }
  140.         }
  141.        
  142.     }
  143. }
  144.  
  145. YCMD:testplace(playerid, params[], help)
  146. {
  147.     new Float:x, Float:y, Float:z;
  148.     GetPlayerPos(playerid, x, y, z);
  149.     CreateFarmerObject(playerid, x, y, z);
  150.     return 1;
  151. }
  152. YCMD:myfarmobject(playerid, params[], help)
  153. {
  154.     ShowPlayerFarmerObject(playerid);
  155.     return 1;
  156. }
Advertisement
Add Comment
Please, Sign In to add comment