PDA

Просмотр полной версии : [Вопрос] Покупка АЗС



Processing
19.04.2016, 21:24
Возможно купить АЗС с ID 0. Другие невозможно.
В чем проблема? Помогите решить.


CMD:buyazs(playerid, params[])
{
if(pInfo[playerid][pAZSKey] != -1)
return SendClientMessage(playerid, CLR, "Community: {FFFFFF}У тебя уже есть заправка.");

foreach(new i : Azs)
{
if(PlayerToPoint(2.0, playerid, azsInfo[i][azsX], azsInfo[i][azsY], azsInfo[i][azsZ]))
{
SetPVarInt(playerid, "SavedAzsID", i);
new string[64];
format(string, sizeof(string), "Эта АЗС продается!\n\nЦена: {33FF00}$%s", convertNumber(azsInfo[i][azsPrice]));
ShowPlayerDialog(playerid, DIALOG_AZS, DIALOG_STYLE_MSGBOX, "АЗС", string, "Купить", "Закрыть");
}
}
return 1;
}


CMD:buyazs(playerid, params[])
{
if(pInfo[playerid][pAZSKey] != -1)
return SendClientMessage(playerid, CLR, "Community: {FFFFFF}У тебя уже есть заправка.");

for(new i = 0; i < MAX_AZS; i++)
{
if(PlayerToPoint(2.0, playerid, azsInfo[i][azsX], azsInfo[i][azsY], azsInfo[i][azsZ]))
{
SetPVarInt(playerid, "SavedAzsID", i);
new string[64];
format(string, sizeof(string), "Эта АЗС продается!\n\nЦена: {33FF00}$%s", convertNumber(azsInfo[i][azsPrice]));
ShowPlayerDialog(playerid, DIALOG_AZS, DIALOG_STYLE_MSGBOX, "АЗС", string, "Купить", "Закрыть");
}
}
return 1;
}

vovandolg
19.04.2016, 22:12
//Попробуй вместо этой
PlayerToPoint(range, playerid, x, y, z)
//заюзать эту и побольше радиус вместо 2.0 поставь хотя бы 10.0
IsPlayerInRangeOfPoint(playerid, range, x, y, z)


CMD:buyazs(playerid, params[])
{
if(pInfo[playerid][pAZSKey] != -1)
return SendClientMessage(playerid, CLR, "Community: {FFFFFF}У тебя уже есть заправка.");
for(new i = 0; i < MAX_AZS; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 10.0, azsInfo[i][azsX], azsInfo[i][azsY], azsInfo[i][azsZ])) continue;
SetPVarInt(playerid, "SavedAzsID", i);
new string[64];
format(string, sizeof(string), "Эта АЗС продается!\n\nЦена: {33FF00}$%s", convertNumber(azsInfo[i][azsPrice]));
ShowPlayerDialog(playerid, DIALOG_AZS, DIALOG_STYLE_MSGBOX, "АЗС", string, "Купить", "Закрыть");
}
return 1;
}

Processing
19.04.2016, 22:23
//Попробуй вместо этой
PlayerToPoint(range, playerid, x, y, z)
//заюзать эту и побольше радиус вместо 2.0 поставь хотя бы 10.0
IsPlayerInRangeOfPoint(playerid, range, x, y, z)


CMD:buyazs(playerid, params[])
{
if(pInfo[playerid][pAZSKey] != -1)
return SendClientMessage(playerid, CLR, "Community: {FFFFFF}У тебя уже есть заправка.");
for(new i = 0; i < MAX_AZS; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 10.0, azsInfo[i][azsX], azsInfo[i][azsY], azsInfo[i][azsZ])) continue;
SetPVarInt(playerid, "SavedAzsID", i);
new string[64];
format(string, sizeof(string), "Эта АЗС продается!\n\nЦена: {33FF00}$%s", convertNumber(azsInfo[i][azsPrice]));
ShowPlayerDialog(playerid, DIALOG_AZS, DIALOG_STYLE_MSGBOX, "АЗС", string, "Купить", "Закрыть");
}
return 1;
}

Теперь с любого места кидает диалог с неверным ID и ценой "0".

vovandolg
19.04.2016, 22:41
DIALOG_AZS - этой ищи константу, в ней должен быть указан ID диалога
convertNumber - покажи эту функцию что она делает

- - - Добавлено - - -

Забыл,

CMD:buyazs(playerid, params[])
оранжевым выделено, то что можно удалить, так как оно не заюзано в команде

Processing
19.04.2016, 22:52
DIALOG_AZS - этой ищи константу, в ней должен быть указан ID диалога
convertNumber - покажи эту функцию что она делает


stock convertNumber(value)
{
// http://forum.sa-mp.com/showthread.php?p=843781#post843781
new string[24];
format(string, sizeof(string), "%d", value);

for(new i = (strlen(string) - 3); i > (value < 0 ? 1 : 0) ; i -= 3)
{
strins(string[i], ",", 0);
}

return string;
}

ID 4000

- - - Добавлено - - -


CMD:buyazs(playerid)
{
if(pInfo[playerid][pAZSKey] != -1)
return SendClientMessage(playerid, CLR, "Community: {FFFFFF}У тебя уже есть заправка.");

for(new i = 0; i < sizeof(azsInfo); i++)
{
if(PlayerToPoint(2.0, playerid, azsInfo[i][azsX], azsInfo[i][azsY], azsInfo[i][azsZ]))
{
new string[64];
printf("# %d", i);
format(string, sizeof(string), "Эта АЗС продается!\n\nЦена: {33FF00}$%s", convertNumber(azsInfo[i][azsPrice]));
ShowPlayerDialog(playerid, DIALOG_AZS, DIALOG_STYLE_MSGBOX, "АЗС", string, "Купить", "Закрыть");
SetPVarInt(playerid, "SavedAzsID", i);
}
}
return 1;
}
Сделал так. По логах вычеслил проблему БД (ID азс), почистил БД, и каким-то чудесным образом оно заработало. Спасибо огромное.

vovandolg
19.04.2016, 22:52
Функция нормально работает, покажи что хранится или как ты создаёшь azsInfo[i][azsPrice]
Всё так всё)

Processing
19.04.2016, 22:55
Функция нормально работает, покажи что хранится или как ты создаёшь azsInfo[i][azsPrice]
Всё так всё)


enum en_azs
{
azsID,
azsName[MAX_HOUSE_NAME],
azsOwner[MAX_PLAYER_NAME],
azsAddress[MAX_AZS_ADDRESS],
azsOwned,
Float: azsX,
Float: azsY,
Float: azsZ,
azsLvl,
azsPrice,
azsGasPrice,
azsMoney,
Text3D: azsLabel,
azsPickup,
azsIcon
};
new azsInfo[MAX_AZS][en_azs];

vovandolg
19.04.2016, 22:56
Так решилась проблема нет?