Amaro
Новичок
Здравствуйте, когда подхожу на пикап свободного/занятого дома, должен вылезти диалог, но его нет.
Также проблема с пересчетом домов, так как если на какой-то становлюсь, допустим 2, вылазит дом 5.
Поясню, иногда диалоговое окно вылазит, но с другим домом.
Также проблема с пересчетом домов, так как если на какой-то становлюсь, допустим 2, вылазит дом 5.
Поясню, иногда диалоговое окно вылазит, но с другим домом.
Код:
for(new h = 1; h <= TOTALHOUSE; h++)
{
if(pickupid == HouseInfo[h][hPickup])
{
new stringhouse[300];
if(HouseInfo[h][hOwned] == 1)
{
new ids = GetPlayerID(HouseInfo[h][hOwner]);
if(GetPVarInt(ids, "logged") == 0) return SCM(playerid, COLOR_RED, "Ошибка — {FFFFFF}Вы не авторизовались");
format(stringhouse, sizeof(stringhouse), "{FFDEAD}ID: {FFFFFF}[%d]\n{FFDEAD}Владелец: {FFFFFF}%s\n{FFDEAD}Уровень: {FFFFFF}%d",HouseInfo[h][hID],HouseInfo[h][hOwner],HouseInfo[h][hLevel]);
SPD(playerid,DLG_NBUYHOUSE,DIALOG_STYLE_MSGBOX,"{FFFFFF}Информация о доме",stringhouse,"Войти","Отмена");
break;
}
else
{
format(stringhouse, sizeof(stringhouse), "{FFDEAD}ID: {FFFFFF}[%d]\n{FFDEAD}Владелец: {FFFFFF}Нет\n{FFDEAD}Стоимость: {FFFFFF}$%d\n{FFDEAD}Уровень: {FFFFFF}%d",HouseInfo[h][hID],HouseInfo[h][hPrice],HouseInfo[h][hLevel]);
SPD(playerid,DLG_BUYHOUSE,DIALOG_STYLE_MSGBOX,"{FFFFFF}Информация о доме",stringhouse,"Купить","Отмена");
break;
}
}
}
Код:
case DLG_BUYHOUSE:
{
if(!response) return 1;
for(new h = 1; h <= TOTALHOUSE; h++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, HouseInfo[h][henter_pos_x], HouseInfo[h][henter_pos_y], HouseInfo[h][henter_pos_z]) && HouseInfo[h][hOwned] == 0)
{
if(PI[playerid][HouseKey] != 255 && strcmp(PI[playerid][Name], HouseInfo[PI[playerid][HouseKey]][hOwner], true) == 0)
{
SendClientMessage(playerid, COLOR_RED, "У вас уже есть дом.");
return 1;
}
if(PI[playerid][Money] < HouseInfo[h][hPrice]) return SendClientMessage(playerid, COLOR_WHITE, "У вас нет столько денег на руках!");
PI[playerid][HouseKey] = h;
HouseInfo[h][hOwned] = 1;
HouseInfo[h][hLock] = 1;
strmid(HouseInfo[h][hOwner], PI[playerid][Name], 0, strlen(PI[playerid][Name]), 255);
PI[playerid][Money] -= HouseInfo[h][hPrice];
SetPlayerInterior(playerid,HouseInfo[h][hInt]);
SetPlayerPos(playerid,HouseInfo[h][hexit_pos_x],HouseInfo[h][hexit_pos_y],HouseInfo[h][hexit_pos_z]);
SetPlayerVirtualWorld(playerid,h+50);
PlayerPlaySound(playerid, 31204, 0.0, 0.0, 0.0);
SendClientMessage(playerid, COLOR_WHITE, "Поздравляем! Вы купили дом");
//SendClientMessage(playerid, 0x66cc00ff, "Используйте {2c9cce}/hmenu{66cc00}, чтобы узнать о возможностях");
GameTextForPlayer(playerid, "~b~~h~Welcome ~g~to~n~~y~new ~w~home", 5000, 1);
//ShowPlayerDialog(playerid, 228, DIALOG_STYLE_MSGBOX, ""SERVER"Новый дом", "{FFFFFF}Вам нужно заплатить за дом в ближайшем отделении банка {dba002}(/gps)", "ОК", "");
new house = PI[playerid][HouseKey];
SetTimerEx("freezeplayer", 3000, false, "i", playerid);
TogglePlayerControllable(playerid,0);
BuyHouse(house);
SaveHouse(house);
UpdatePlayerData(playerid, "HouseKey", PI[playerid][HouseKey]);
return 1;
}
}
}
case DLG_NBUYHOUSE:
{
if(response)
{
for(new i = 1; i <= TOTALHOUSE; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, HouseInfo[i][henter_pos_x], HouseInfo[i][henter_pos_y], HouseInfo[i][henter_pos_z]))
{
if(PI[playerid][HouseKey] == i || HouseInfo[i][hLock] == 0)
{
SetPlayerInterior(playerid,HouseInfo[i][hInt]);
SetPlayerVirtualWorld(playerid,i+50);
SetPlayerPos(playerid,HouseInfo[i][hexit_pos_x], HouseInfo[i][hexit_pos_y], HouseInfo[i][hexit_pos_z]);
SetTimerEx("freezeplayer", 3000, false, "i", playerid);
TogglePlayerControllable(playerid,0);
return 1;
}
else
{
SCM(playerid, COLOR_RED, "Ошибка — {FFFFFF}Похоже дом закрыт.");
GameTextForPlayer(playerid, "~r~Locked", 5000, 1);
}
}
}
}
else return 1;
}
