Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define LIMIT_FARMER_PLAYER (15) // Mỗi thằng 15 cây
- #define MAX_OBJECT_FARMER (12000) // 15 * MAX_PLAYERS
- enum e_farmer {
- farm_sqlid,
- farm_owner,
- Float:farm_posx,
- Float:farm_posy,
- Float:farm_posz,
- farm_begintime,
- farm_status,
- farm_objectid
- }
- new
- TotalFarmerObject = 0,
- Iterator: FarmerJob<MAX_OBJECT_FARMER>,
- ObjectFarmer[MAX_OBJECT_FARMER][e_farmer];
- task FarmerCheck[1000]()
- {
- foreach(new f : FarmerJob)
- {
- 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
- {
- if(ObjectFarmer[f][farm_status] == 0) {
- ObjectFarmer[f][farm_status] = 1;
- new playerid = GetOwnerPlayerId(ObjectFarmer[f][farm_owner]);
- if(playerid != INVALID_PLAYER_ID) SendClientMessage(playerid, -1, "Cay trong cua ban da chin, hay mau thu hoach");
- }
- 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
- {
- RemoveFarmerObject(ObjectFarmer[f][farm_objectid]);
- }
- }
- }
- }
- GetOwnerPlayerId(sqlid)
- {
- foreach(new i : Player)
- {
- if(player[i][psqlid] == sqlid) return i;
- }
- return INVALID_PLAYER_ID;
- }
- ShowPlayerFarmerObject(playerid)
- {
- new total = 0
- foreach(new f : FarmerJob)
- {
- if(ObjectFarmer[f][farm_owner] == player[playerid][psqlid]) // trong ngg thay player[playerid][psqlid] = GetPlayerSQLID(playerid)
- {
- 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]);
- total++;
- }
- }
- SendClientMessage(playerid, -1, "Tong so cay: %d", total);
- }
- CheckFarmerObjectNear(playerid, Float:range)
- {
- foreach(new f : FarmerJob)
- {
- if(IsPlayerInRangeOfPoint(playerid, range, ObjectFarmer[f][farm_posx], ObjectFarmer[f][farm_posy], ObjectFarmer[f][farm_posz]))
- {
- return f;
- }
- }
- return -1;
- }
- CreateFarmerObject(playerid, Float:x, Float:y, Float:z)
- {
- new near_object = CheckFarmerObjectNear(playerid, 5.0);
- if(near_object == -1)
- {
- new query[128], begintime = gettime();
- 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);
- inline query_result()
- {
- if(cache_affected_rows())
- {
- new i = Iter_Alloc(FarmerJob);
- ObjectFarmer[i][farm_sqlid] = cache_insert_id();
- ObjectFarmer[i][farm_objectid] = CreateDynamicObject(3409, x,y,z-2.1, 0, 0, 0, 0, -1, .streamdistance = 50, .drawdistance = 20);
- ObjectFarmer[i][farm_owner] = player[playerid][psqlid];
- ObjectFarmer[i][farm_posx] = x;
- ObjectFarmer[i][farm_posy] = y;
- ObjectFarmer[i][farm_posz] = z;
- ObjectFarmer[i][farm_begintime] = gettime();
- ObjectFarmer[i][farm_status] = 0;
- SendClientMessage(playerid, -1, "Trong cay thanh cong");
- TotalFarmerObject++;
- 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]);
- }
- else {
- print("co loi xay ra khi tao object");
- }
- }
- mysql_tquery_inline(g_SQL, query, using inline query_result, "");
- }
- else {
- SendClientMessage(playerid, -1, "Khong duoc trong cay qua gan nhau");
- 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]);
- }
- }
- RemoveFarmerObject(objectid)
- {
- if(IsValidDynamicObject(objectid))
- {
- foreach(new f : FarmerJob)
- {
- if(ObjectFarmer[f][farm_objectid] == objectid)
- {
- new query[128];
- mysql_format(g_SQL, query, sizeof query, "DELETE FROM farmer_job WHERE id = %d", ObjectFarmer[f][farm_sqlid]);
- inline query_result()
- {
- if(cache_affected_rows())
- {
- DestroyDynamicObject(ObjectFarmer[f][farm_objectid]);
- new tmp[e_farmer];
- ObjectFarmer[f] = tmp;
- Iter_Remove(FarmerJob, f);
- TotalFarmerObject--;
- printf("delete object : %d thanh cong", objectid);
- }
- else {
- printf("co loi xay ra khi delete object : %d", objectid);
- }
- }
- mysql_tquery_inline(g_SQL, query, using inline query_result, "");
- break;
- }
- }
- }
- }
- YCMD:testplace(playerid, params[], help)
- {
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- CreateFarmerObject(playerid, x, y, z);
- return 1;
- }
- YCMD:myfarmobject(playerid, params[], help)
- {
- ShowPlayerFarmerObject(playerid);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment