if(strcmp(option, "selltomarket", true) == 0) { for(new i; i < MAX_HOUSES; i++) { if(IsPlayerInRangeOfPoint(playerid, 2.0, HouseInfo[i][ExteriorPos][0], HouseInfo[i][ExteriorPos][1], HouseInfo[i][ExteriorPos][2])) { if(HouseInfo[i][server_ID] == PlayerInfo[playerid][HouseID]) { new houseprice = HouseInfo[i][Price]*50/100; format(str, sizeof(str), "You've sold your house for $%d!", houseprice); SendClientMessage(playerid, COLOR_GREY, str); DestroyDynamicPickup(HouseInfo[i][Pickup]); DestroyDynamic3DTextLabel(HouseInfo[i][Label]); HouseInfo[i][Pickup] = CreateDynamicPickup(1273, 23, HouseInfo[i][ExteriorPos][0], HouseInfo[i][ExteriorPos][1], HouseInfo[i][ExteriorPos][2], HouseInfo[i][ExteriorWorld]); format(housestring, sizeof(housestring), "{70ff83}This house is for sell!\nPrice: %d\nType /buyhouse to buy it\nType /enter to go inside", HouseInfo[i][Price]); HouseInfo[i][Label] = CreateDynamic3DTextLabel(housestring , COLOR_ORANGE, HouseInfo[i][ExteriorPos][0], HouseInfo[i][ExteriorPos][1], HouseInfo[i][ExteriorPos][2],30.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 7.0); HouseInfo[i][ForSell] = 1; HouseInfo[i][Locked] = 0; GiveMoney(playerid, houseprice); return 1; } return 1; } } return 1; }
#include <a_samp> #include <zcmd> #include <sscanf2> new bool:g_HouseSale[MAX_PLAYERS]; CMD:house(playerid, params[]) { new option[24]; if(sscanf(params, "s[24]", option)) return SendClientMessage(playerid, -1, "USAGE: /house [selltomarket | selltomarket confirm]"); if(!strcmp(option, "selltomarket confirm", true)) { if(!g_HouseSale[playerid]) return SendClientMessage(playerid, -1, "Use /house selltomarket"); g_HouseSale[playerid] = false; SendClientMessage(playerid, -1, "House sold."); // User confirmed the sale return 1; } if(!strcmp(option, "selltomarket", true)) { SendClientMessage(playerid, -1, "Use /house selltomarket confirm"); g_HouseSale[playerid] = true; return 1; } return 1; }
new sellOwnedHouseID[MAX_PLAYERS]={-1,...};
findOwnedHouse(playerid){
for(new i; i < MAX_HOUSES; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, HouseInfo[i][ExteriorPos][0], HouseInfo[i][ExteriorPos][1], HouseInfo[i][ExteriorPos][2]) &&
HouseInfo[i][server_ID] == PlayerInfo[playerid][HouseID])
return i;
}
return -1;
}
updateHouseInfo(i){
DestroyDynamicPickup(HouseInfo[i][Pickup]);
DestroyDynamic3DTextLabel(HouseInfo[i][Label]);
new s[100];
HouseInfo[i][Pickup] = CreateDynamicPickup(1273, 23, HouseInfo[i][ExteriorPos][0], HouseInfo[i][ExteriorPos][1], HouseInfo[i][ExteriorPos][2], HouseInfo[i][ExteriorWorld]);
format(s, 100, "{70ff83}This house is for sell!\nPrice: %d\nType /buyhouse to buy it\nType /enter to go inside", HouseInfo[i][Price]);
HouseInfo[i][Label] = CreateDynamic3DTextLabel(1 , COLOR_ORANGE, HouseInfo[i][ExteriorPos][0], HouseInfo[i][ExteriorPos][1], HouseInfo[i][ExteriorPos][2],30.0,
INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 7.0);
}
CMD:house(pid,p[]){
new opt1[32],
opt2[32],
s[100],
i;
if(sscanf(params,"s[32]s[32]",opt1,opt2))return SendClientMessage(pid,-1,"/house [selltomarket / selltomarket confirm]");
if(!strcmp(opt1,"selltomarket")){
if(strlen(opt2) && !strcmp(opt2,"confirm")){
if((i=sellOwnedHouseID[pid])==-1)return SendClientMessage(pid,-1,"you haven't seleted any house to sell!");
new houseprice = floatround(HouseInfo[i][Price]*0.5);
updateHouseInfo(i);
HouseInfo[i][ForSell] = 1;
HouseInfo[i][Locked] = 0;
GiveMoney(playerid, houseprice);
sellOwnedHouseID[pid]=-1;
format(s, 100, "You've sold your house for $%d!", houseprice);
SendClientMessage(playerid, COLOR_GREY, str);
}else{
if(sellOwnedHouseID[pid]!=-1)return SendClientMessage(pid,-1,"you are already selling some house type (/house selltomarket confirm)!");
if((i=findOwnedHouse(pid))==-1)return SendClientMessage(pid,-1,"you arent near to any of your houses!");
sellOwnedHouseID[pid]=i;
SendClientMessage(pid,-1,"you are selling your house, type (/house selltomarket confirm)");
}
}
return 1;
}
Код:
#include <a_samp> #include <zcmd> #include <sscanf2> new bool:g_HouseSale[MAX_PLAYERS]; CMD:house(playerid, params[]) { new option[24]; if(sscanf(params, "s[24]", option)) return SendClientMessage(playerid, -1, "USAGE: /house [selltomarket | selltomarket confirm]"); if(!strcmp(option, "selltomarket confirm", true)) { if(!g_HouseSale[playerid]) return SendClientMessage(playerid, -1, "Use /house selltomarket"); g_HouseSale[playerid] = false; SendClientMessage(playerid, -1, "House sold."); // User confirmed the sale return 1; } if(!strcmp(option, "selltomarket", true)) { SendClientMessage(playerid, -1, "Use /house selltomarket confirm"); g_HouseSale[playerid] = true; return 1; } return 1; } |
#include <a_samp> #include <zcmd> #include <sscanf2> #define HOUSE_SELL_TIMELIMIT 60 new g_HouseSale[MAX_PLAYERS]; CMD:house(playerid, params[]) { if(!IsNull(params)) { if(gettime() - g_HouseSale[playerid] < HOUSE_SELL_TIMELIMIT && !strcmp(option, "selltomarket confirm", true)) { if(!g_HouseSale[playerid]) SendClientMessage(playerid, -1, "Use /house selltomarket"); else { g_HouseSale[playerid] = 0; SendClientMessage(playerid, -1, "House sold."); } } else if(!strcmp(option, "selltomarket", true)) { SendClientMessage(playerid, -1, "Use /house selltomarket confirm"); g_HouseSale[playerid] = gettime(); } } else SendClientMessage(playerid, -1, "USAGE: /house [selltomarket | selltomarket confirm]"); return 1; }