Вход

Просмотр полной версии : [Вопрос] создание бизнеса через Iterator



Pawn.Dima
04.07.2021, 10:16
Здравствуйте решил сделать создание/редактирование/удаление бизнесов через Iterator создает все хорошо но когда редактирую название проблема всегда сохраняет на 0 т.е 1 бизнес не могу понять почему


if(strcmp(cmd, "/addbizz", true) == 0)
{
ShowPlayerDialog(playerid, 8, DIALOG_STYLE_LIST, "Меню создание бизнесов", "[1] Создать бизнес", "Далее", "Отмена");
return 1;
}

case 8:
{
if(!response)//Нет
return 1;
switch(listitem)
{
case 0://Создание бизнеса
{
new Float: x,
Float: y,
Float: z,
string_1[128];
GetPlayerPos(playerid, x, y, z);
new b_id = Iter_Free(iBizz);
if(b_id == MAX_BIZZ)
return SendClientMessage(playerid, COLOR_REDD, "[Ошибка]: Все слоты под бизнесы заполнены!");
BizzInfo[b_id][bID] = b_id;//"house_id" записываем значение "h_id"
BizzInfo[b_id][bOwned] = 0;
BizzInfo[b_id][bX] = x; // Записываешь информацию в ячейку, равную "b_id"
BizzInfo[b_id][bY] = y; // Записываешь информацию в ячейку, равную "b_id"
BizzInfo[b_id][bZ] = z; // Записываешь информацию в ячейку, равную "b_id"
BizzInfo[b_id][bLandTax] = 500;
BizzInfo[b_id][bBalance] = 0;
BizzInfo[b_id][bLock] = 0;
BizzInfo[b_id][bBuyBizz] = 100000;
BizzInfo[b_id][bBizzFree] = 500;
strmid(BizzInfo[b_id][bOwner], "The State", 0, strlen("The State"), 10);
strmid(BizzInfo[b_id][bMessage], "The State", 0, strlen("The State"), 10);
SendClientMessage(playerid, COLOR_WHITE, "Бизнес успешно установлен!");
format(string, sizeof(string), "INSERT INTO `bizz` (`bOwner`,`bMessage`,`bizz_id`,`bOwned`,`bLandTax`,`bBalance`,`bLock`,`bBuyBizz`,`bBizzFree`,`bX`,`bY`,`bZ`)\
VALUE ('%s', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%f', '%f', '%f')",
BizzInfo[b_id][bOwner],
BizzInfo[b_id][bMessage], b_id, BizzInfo[b_id][bOwned], BizzInfo[b_id][bLandTax],
BizzInfo[b_id][bBalance], BizzInfo[b_id][bLock], BizzInfo[b_id][bBuyBizz], BizzInfo[b_id][bBizzFree], x, y, z);
mysql_pquery(mysql_connect_ID, string);
format(string_1, sizeof(string_1), "%s продаётся\nЦена: %d вирт\nЧтобы купить введите '/buybiz'", BizzInfo[b_id][bMessage], BizzInfo[b_id][bBuyBizz]);
BizzInfo[b_id][bLabel] = Create3DTextLabel(string_1, COLOR_YELLOW, BizzInfo[b_id][bX], BizzInfo[b_id][bY], BizzInfo[b_id][bZ], 20.0, 0, 1);
Iter_Add(iBizz, playerid);//Добавляем в интератор
printf("BizzID: %d создан!", b_id);
ShowPlayerDialog(playerid, 9, DIALOG_STYLE_INPUT, "Создание бизнеса", "Введите название бизнеса", "Готово", "Отмена");
return 1;
}
}
}
case 9:
{
if(!response)
return 1;
if(!strlen(inputtext))
return ShowPlayerDialog(playerid, 9, DIALOG_STYLE_INPUT, "Создание бизнеса", "Введите название бизнеса", "Готово", "Отмена");
for(new i = strlen(inputtext)-1; i != -1; i--)
{
switch(inputtext[i])
{
case 'A'..'Z', 'a'..'z', ' ': continue;
default: return ShowPlayerDialog(playerid, 9, DIALOG_STYLE_INPUT, "Создание бизнеса", "Введите название бизнеса", "Готово", "Отмена");
}
}
foreach(new b_id: iBizz)
{
strmid(BizzInfo[b_id][bMessage], inputtext, 0, strlen(inputtext), 32);
format(string, sizeof(string), "%s продаётся\nЦена: %d вирт\nЧтобы купить введите '/buybiz'", BizzInfo[b_id][bMessage], BizzInfo[b_id][bBuyBizz]);
Update3DTextLabelText(BizzInfo[b_id][bLabel], COLOR_YELLOW, string);
SaveBizz(b_id);
printf("BizzID: %d сохранен! 'bMessage' = '%s'", BizzInfo[b_id][bID], BizzInfo[b_id][bMessage]);
}
}



[04:13:22] BizzID: 0 создан!
[04:13:25] Сохранение бизнеса 0:
[04:13:25] BizzID: 0 сохранен! 'bMessage' = 'ADADAD'
[04:13:29] BizzID: 1 создан!
[04:13:32] Сохранение бизнеса 0:
[04:13:32] BizzID: 0 сохранен! 'bMessage' = 'LOLOL'

stock SaveBizz(h_id)//Сохранение бизнеса
{
new string[(21)+(16+11)+(20+MAX_PLAYER_NAME)+(20+MAX_PLAYER_NAME)+(40)+(40)+(40)+(40)+(40)] = "UPDATE `bizz` SET";
format(string, sizeof(string), "%s `bOwner` = '%s',", string, BizzInfo[h_id][bOwner]);// (20+MAX_PLAYER_NAME)
format(string, sizeof(string), "%s `bMessage` = '%s',", string, BizzInfo[h_id][bMessage]);// (20+MAX_PLAYER_NAME)
format(string, sizeof(string), "%s `bOwned` = '%d',", string, BizzInfo[h_id][bOwned]);
format(string, sizeof(string), "%s `bLandTax` = '%d',", string, BizzInfo[h_id][bLandTax]);
format(string, sizeof(string), "%s `bBalance` = '%d',", string, BizzInfo[h_id][bBalance]);
format(string, sizeof(string), "%s `bLock` = '%d',", string, BizzInfo[h_id][bLock]);
format(string, sizeof(string), "%s `bBuyBizz` = '%d',", string, BizzInfo[h_id][bBuyBizz]);
format(string, sizeof(string), "%s `bBizzFree` = '%d'", string, BizzInfo[h_id][bBizzFree]);
format(string, sizeof(string), "%s WHERE `bizz_id` = '%d'", string, BizzInfo[h_id][bID]);//
mysql_function_query(mysql_connect_ID, string, false, "", "");
printf("Сохранение бизнеса %d:", h_id);
return 1;
}

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

переделал код создание + редактирование заработало


case 8:
{
if(!response)//Нет
return 1;
switch(listitem)
{
case 0: ShowPlayerDialog(playerid, 9, DIALOG_STYLE_INPUT, "Создание бизнеса", "Введите название бизнеса", "Готово", "Отмена");
}
}
case 9:
{
if(!response)
return 1;
if(!strlen(inputtext))
return ShowPlayerDialog(playerid, 9, DIALOG_STYLE_INPUT, "Создание бизнеса", "Введите название бизнеса", "Готово", "Отмена");
for(new i = strlen(inputtext)-1; i != -1; i--)
{
switch(inputtext[i])
{
case 'A'..'Z', 'a'..'z', ' ': continue;
default: return ShowPlayerDialog(playerid, 9, DIALOG_STYLE_INPUT, "Создание бизнеса", "Введите название бизнеса", "Готово", "Отмена");
}
}
new Float: x,
Float: y,
Float: z,
string_1[128];
GetPlayerPos(playerid, x, y, z);
new b_id = Iter_Free(iBizz);
if(b_id == MAX_BIZZ)
return SendClientMessage(playerid, COLOR_REDD, "[Ошибка]: Все слоты под бизнесы заполнены!");
BizzInfo[b_id][bID] = b_id;//"house_id" записываем значение "h_id"
BizzInfo[b_id][bOwned] = 0;
BizzInfo[b_id][bX] = x; // Записываешь информацию в ячейку, равную "b_id"
BizzInfo[b_id][bY] = y; // Записываешь информацию в ячейку, равную "b_id"
BizzInfo[b_id][bZ] = z; // Записываешь информацию в ячейку, равную "b_id"
BizzInfo[b_id][bLandTax] = 500;
BizzInfo[b_id][bBalance] = 0;
BizzInfo[b_id][bLock] = 0;
BizzInfo[b_id][bBuyBizz] = 100000;
BizzInfo[b_id][bBizzFree] = 500;
strmid(BizzInfo[b_id][bOwner], "The State", 0, strlen("The State"), 10);
strmid(BizzInfo[b_id][bMessage], inputtext, 0, strlen(inputtext), 32);
SendClientMessage(playerid, COLOR_WHITE, "Бизнес успешно установлен!");
format(string, sizeof(string), "INSERT INTO `bizz` (`bOwner`,`bMessage`,`bizz_id`,`bOwned`,`bLandTax`,`bBalance`,`bLock`,`bBuyBizz`,`bBizzFree`,`bX`,`bY`,`bZ`)\
VALUE ('%s', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%f', '%f', '%f')",
BizzInfo[b_id][bOwner],
BizzInfo[b_id][bMessage], b_id, BizzInfo[b_id][bOwned], BizzInfo[b_id][bLandTax],
BizzInfo[b_id][bBalance], BizzInfo[b_id][bLock], BizzInfo[b_id][bBuyBizz], BizzInfo[b_id][bBizzFree], x, y, z);
mysql_pquery(mysql_connect_ID, string);
format(string_1, sizeof(string_1), "%s продаётся\nЦена: %d вирт\nЧтобы купить введите '/buybiz'", BizzInfo[b_id][bMessage], BizzInfo[b_id][bBuyBizz]);
BizzInfo[b_id][bLabel] = Create3DTextLabel(string_1, COLOR_YELLOW, BizzInfo[b_id][bX], BizzInfo[b_id][bY], BizzInfo[b_id][bZ], 20.0, 0, 1);
Iter_Add(iBizz, playerid);//Добавляем в интератор
printf("BizzID: %d создан!", BizzInfo[b_id][bID]);
return 1;
}

Pa4enka
04.07.2021, 14:14
В итератор нужно заносить не playerid, а ид бизнеса.

Pawn.Dima
07.07.2021, 09:21
Подправил спасибо