pawn Код:
#define INVALID_HOUSE_ID (-1)
new HouseOffer[MAX_PLAYERS] = INVALID_PLAYER_ID;
new HousePrice[MAX_PLAYERS] = 0;
new HouseID[MAX_PLAYERS] = INVALID_HOUSE_ID;
new RequestTime[MAX_PLAYERS];
forward CancelOffer(playerid);
public CancelOffer(playerid)
{
if(HouseOffer[playerid] != INVALID_PLAYER_ID)
{
SendClientMessage(playerid, -1, "* Request cancel");
SendClientMessage(HouseOffer[playerid], -1, "* Request cancel");
HouseOffer[playerid] = INVALID_PLAYER_ID;
HousePrice[playerid] = 0;
HouseID[playerid] = INVALID_HOUSE_ID;
}
}
CMD:sellhouse(playerid, params[])
{
new string[128],
playername[MAX_PLAYER_NAME],
targetname[MAX_PLAYER_NAME],
giveplayerid,
houseid,
price;
if(sscanf(params, "udd", giveplayerid, houseid, price))
{
return SendClientMessage(playerid, -1, "[!] USAGE: /sellhouse [player] [house id] [price]");
}
if(!IsPlayerConnected(giveplayerid))
{
return SendClientMessage(playerid, -1, "[!] Player is currently not connected to the server.");
}
if(playerid == giveplayerid)
{
return SendClientMessage(playerid, -1, "[!] You can't offer yourself");
}
if(price <= 0)
{
return SendClientMessage(playerid, -1, "[!] Price must be higher than 0.");
}
GetPlayerName(playerid, playername, sizeof(playername));
GetPlayerName(giveplayerid, targetname, sizeof(targetname));
if(HouseInfo[houseid][hOwned] == 1 && strcmp(HouseInfo[houseid][hOwner], playername, true))
{
HouseOffer[giveplayerid] = playerid;
HousePrice[giveplayerid] = price;
HouseID[giveplayerid] = houseid;
format(string, sizeof(string), "* You offered %s to buy your house for $%d.", targetname, price);
SendClientMessage(playerid, -1, string);
SendClientMessage(playerid, -1, "* Request will be discarded if don't have any response in 30 secs");
format(string, sizeof(string), "* %s has offered you their house for $%d, (type /acceptsell) to buy.", playername, price, playerid);
SendClientMessage(giveplayerid, -1, string);
SendClientMessage(giveplayerid, -1, "* Request will be discarded if don't have any response in 30 secs");
RequestTime[giveplayerid] = SetTimerEx("CancelOffer", DISCARD_TIME, false, "d", giveplayerid);
}
else
{
SendClientMessage(playerid, -1, "You not own that house");
}
return 1;
}
CMD:acceptsell(playerid, params[])
{
new sellername[MAX_PLAYER_NAME],
playername[MAX_PLAYER_NAME],
houseid = HouseID[playerid],
seller = HouseOffer[playerid],
price = HousePrice[playerid];
if(seller == INVALID_PLAYER_ID)
{
return SendClientMessage(playerid, -1, "[!] No one has offered you buy their house.");
}
if(!IsPlayerConnected(seller))
{
return SendClientMessage(playerid, -1, "[!] Player is currently not connected to the server.");
}
if(houseid == INVALID_HOUSE_ID)
{
return SendClientMessage(playerid, -1, "[!] Invalid house.");
}
if(GetPlayerMoney(playerid) < price)
{
return SendClientMessage(playerid, -1, "[!] You don't have enough money to buy this house .");
}
GetPlayerName(seller, sellername, sizeof(sellername));
if(HouseInfo[houseid][hOwned] == 1 && strcmp(HouseInfo[houseid][hOwner], sellername, true))
{
KillTimer(RequestTime[playerid]);
GetPlayerName(playerid, playername, sizeof(playername));
format(HouseInfo[houseid][hOwner], MAX_PLAYER_NAME, playername);
GivePlayerMoney(playerid, - price);
GivePlayerMoney(seller, price);
HouseOffer[playerid] = INVALID_PLAYER_ID;
HousePrice[playerid] = 0;
HouseID[playerid] = INVALID_HOUSE_ID;
SendClientMessage(playerid, -1, "[BUY] Successful ");
SendClientMessage(seller, -1, "[SELL] Successful ");
}
return 1;
}