• 0
Дарвин

Баг со счётом

Вопросы

Здравствуйте Ув.Скриптеры. Столкнулся с багом при создании счёта на моём проекте. То-есть при создании счёта пишет что счёт успешно создан а при использовании пишет у вас нет счетов.

Помогите пожалуйста. Заранее спасибо!

case D_BANK_MENU + 1:
		{
			if(!response) return 1;

			if(GetMoney(playerid) < 5000)
			return SendClientMessage(playerid, -1, ""cER"У Вас недостаточно средств на счете, для открытия нового счета в банке");

			PI[playerid][pBankCount] ++ ;
			MysqlUpdatePlayerInt(playerid, "bankcount", PI[playerid][pBankCount]);
			
			new player_ip[16];
			GetPlayerIp(playerid, player_ip, sizeof player_ip);

			global_string = "";

			mysql_format(dbHandle, global_string, 128, "INSERT INTO bank (id, name, data, cash) values ('%s', '%s', NOW(), '250')", GetName(playerid), player_ip);
			mysql_tquery(dbHandle, global_string, "", "");

			SendMes(playerid, 0x76CD5EFF, "[Банк]: {FFFFFF}новый счет на имя {F3F142}%s {FFFFFF}успешно открыт в нашем банке", GetName(playerid));
		}
	case D_BANK_MENU + 2:
		{
			if(!response) return 1;

			switch(listitem)
			{
			case 0:
				{

					SetPVarInt(playerid, "bank_type", 1);

					global_string = "";

					mysql_format(dbHandle, global_string, 128, "SELECT * FROM `bank` WHERE `name` = '%s'", GetName(playerid));
					mysql_tquery(dbHandle, global_string, "ShowBankMoney", "i", playerid);

				}

 

Поделиться сообщением


Ссылка на сообщение

8 ответов на этот вопрос

  • 0

@Дарвин, а если так

 

case D_BANK_MENU + 1:
{
	if(!response) return 1;

	if(GetMoney(playerid) < 5000)
	return SendClientMessage(playerid, -1, ""cER"У Вас недостаточно средств на счете, для открытия нового счета в банке");

	PI[playerid][pBankCount] ++ ;
	MysqlUpdatePlayerInt(playerid, "bankcount", PI[playerid][pBankCount]);
	
	new sendername[MAX_PLAYER_NAME+1];
	GetPlayerName(playerid, sendername, sizeof sendername);

	global_string = "";

	mysql_format(dbHandle, global_string, 128, "INSERT INTO bank (id, name, data, cash) values ('%s', '%s', NOW(), '250')", GetName(playerid), sendername);
	mysql_tquery(dbHandle, global_string, "", "");

	SendMes(playerid, 0x76CD5EFF, "[Банк]: {FFFFFF}новый счет на имя {F3F142}%s {FFFFFF}успешно открыт в нашем банке", GetName(playerid));
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
1 час назад, Дарвин сказал:

Здравствуйте Ув.Скриптеры. Столкнулся с багом при создании счёта на моём проекте. То-есть при создании счёта пишет что счёт успешно создан а при использовании пишет у вас нет счетов.

Помогите пожалуйста. Заранее спасибо!


case D_BANK_MENU + 1:
		{
			if(!response) return 1;

			if(GetMoney(playerid) < 5000)
			return SendClientMessage(playerid, -1, ""cER"У Вас недостаточно средств на счете, для открытия нового счета в банке");

			PI[playerid][pBankCount] ++ ;
			MysqlUpdatePlayerInt(playerid, "bankcount", PI[playerid][pBankCount]);
			
			new player_ip[16];
			GetPlayerIp(playerid, player_ip, sizeof player_ip);

			global_string = "";

			mysql_format(dbHandle, global_string, 128, "INSERT INTO bank (id, name, data, cash) values ('%s', '%s', NOW(), '250')", GetName(playerid), player_ip);
			mysql_tquery(dbHandle, global_string, "", "");

			SendMes(playerid, 0x76CD5EFF, "[Банк]: {FFFFFF}новый счет на имя {F3F142}%s {FFFFFF}успешно открыт в нашем банке", GetName(playerid));
		}
	case D_BANK_MENU + 2:
		{
			if(!response) return 1;

			switch(listitem)
			{
			case 0:
				{

					SetPVarInt(playerid, "bank_type", 1);

					global_string = "";

					mysql_format(dbHandle, global_string, 128, "SELECT * FROM `bank` WHERE `name` = '%s'", GetName(playerid));
					mysql_tquery(dbHandle, global_string, "ShowBankMoney", "i", playerid);

				}

 

 

Значит у Вас не совпадают аргументы запроса сохранения с таблиц ой, покажите код сохранения самой таблицы! 

Поделиться сообщением


Ссылка на сообщение
  • 0

@Andrei_Morozov, а собственно где это искать?)

 

@Andrei_Morozov

Спойлер

publics: ShowBankMoney(playerid)
{
	new r, f;
	cache_get_data(r, f);
	if(!r)
	return SendClientMessage(playerid, -1, ""cER"У Вас не имеется счетов в банке"), DeletePVar(playerid, "bank_type");

	new fmt_str[128], b_id, b_money, b_block;
	global_string = "";

	for(new idx; idx < r; idx++)
	{
		b_id = cache_get_field_content_int(idx, "id");
		b_money = cache_get_field_content_int(idx, "cash");
		b_block = cache_get_field_content_int(idx, "block");
		format(fmt_str, sizeof fmt_str, "{FFFFFF}Счёт №%d - Баланс: {9C9E9B}%d руб. {FFFFFF}- %s\n", b_id, b_money, !b_block ? ("{8DC65B}Активен") : ("{F77625}Заблокирован"));
		strcat(global_string, fmt_str);
		SetPlayerListitemValue(playerid, idx, b_id);
	}
	ShowPlayerDialog(playerid, D_BANK_MONEY, DIALOG_STYLE_LIST, "{"#cSV"}Ваши банковские счета:", global_string, "Выбрать", "Выход");
	return 1;
}

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0

Такая же проблема,мод перфекта?

Как исправить этот баг?

Поделиться сообщением


Ссылка на сообщение
  • 0

@Дарвин Показывайте код создания счета

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST, счёт создаётся в банке.

Спойлер

case D_BANK_MENU:
		{
			if(!response) return 1;

			global_string = "";

			switch(listitem)
			{
			case 3, 4:
				{

					format(global_string, 300, "{"#cSV"}1. {FFFFFF}Открыть новый банковский счет\n\
											{"#cSV"}2. {FFFFFF}Управление счетами\n\
											{"#cSV"}3. {FFFFFF}Оформить кредит\n\
											{"#cSV"} \n\
											{9C9B9D Вас в банке {FFFFFF}%d {9C9B9D}открыт%s", PI[playerid][pBankCount], PI[playerid][pBankCount] <= 1 ? ("ый счет") : PI[playerid][pBankCount] <= 4 ? ("ых счета") : ("ых счетов"));

					ShowPlayerDialog(playerid, D_BANK_MENU, DIALOG_STYLE_LIST, "{"#cSV"}Меню банка", global_string, "Далее", "Выход");

					return 1;
				}

			case 0:
				{

					format(global_string, 300, "{FFFFFF}Уважаемый клиент!\n\n\
											В данном меню Вы можете открыть новый счет в нашем банке\n\
											На данный момент у Вас имеется {E4CD20}%d {FFFFFF}открытых счетов\n\
											Стоимость открытия нового счета составит: {76CD5E}5000 рублей\n\n\
											{FFFFFF}Вы согласны открыть новый счет в нашем банке?", PI[playerid][pBankCount]);

					ShowPlayerDialog(playerid, D_BANK_MENU + 1, DIALOG_STYLE_MSGBOX, "{"#cSV"}Открытие счета в банке", global_string, "Да", "Нет");

				}

			case 1:
				{
					ShowPlayerDialog(playerid, D_BANK_MENU + 2, DIALOG_STYLE_LIST, "{"#cSV"}Управление счетами", "{"#cSV"}1. {FFFFFF}Список счетов и действия над ними\n{"#cSV"}2. {FFFFFF}Заблокировать счет\n{"#cSV"}3. {FFFFFF}Разблокировать счет\n{"#cSV"}4. {FFFFFF}Закрыть счет", "Выбрать", "Выход");
				}

			}
		}
	case D_BANK_MENU + 1:
		{
			if(!response) return 1;

			if(GetMoney(playerid) < 5000)
			return SendClientMessage(playerid, -1, ""cER"У Вас недостаточно средств на счете, для открытия нового счета в банке");

			PI[playerid][pBankCount] ++ ;
			MysqlUpdatePlayerInt(playerid, "bankcount", PI[playerid][pBankCount]);
			
			new player_ip[16];
			GetPlayerIp(playerid, player_ip, sizeof player_ip);

			global_string = "";

			mysql_format(dbHandle, global_string, 128, "INSERT INTO bank (name, ip, data, cash) values ('%s', '%e', NOW(), '250')", GetName(playerid), player_ip);
			mysql_tquery(dbHandle, global_string, "", "");

			SendMes(playerid, 0x76CD5EFF, "[Банк]: {FFFFFF}новый счет на имя {F3F142}%s {FFFFFF}успешно открыт в нашем банке", GetName(playerid));
		}
	case D_BANK_MENU + 2:
		{
			if(!response) return 1;

			switch(listitem)
			{
			case 0:
				{

					SetPVarInt(playerid, "bank_type", 1);

					global_string = "";

					mysql_format(dbHandle, global_string, 128, "SELECT * FROM `bank` WHERE `name` = '%s'", GetName(playerid));
					mysql_tquery(dbHandle, global_string, "ShowBankMoney", "i", playerid);

				}
			case 1:
				{
					ShowPlayerDialog(playerid, D_BANK_MENU + 3, DIALOG_STYLE_INPUT, "{"#cSV"}Заблокировать банковский счет", "{FFFFFF}В данном окне Вы можете заблокировать Ваш банковский счет\nПосле блокировки счета, Вы, и никто другой, не сможет совершать платежи и переводы на Ваш счет\nСчет всегда можно разблокировать в меню банка\n\nУкажите номер счета, который необходимо заблокировать:", "Далее", "Назад");
				}

			case 2:
				{
					ShowPlayerDialog(playerid, D_BANK_MENU + 4, DIALOG_STYLE_INPUT, "{"#cSV"}Разблокировать банковский счет", "{FFFFFF}В данном окне Вы можете разблокировать Ваш банковский счет\n\nУкажите номер счета, который необходимо разблокировать:", "Далее", "Назад");
				}

			case 3:
				{
					ShowPlayerDialog(playerid, D_BANK_MENU + 5, DIALOG_STYLE_INPUT, "{"#cSV"}Закрыть банковский счет", "{FFFFFF}В данном окне Вы можете закрыть счет в нашем банке\nСчет закрывается навсегда и больше не сможет использоваться\nВсе деньги, которые остались на этом счете, будут утеряны\n\nУкажите номер счета, который необходимо закрыть:", "Далее", "Назад");
				}

			}
		}
	case D_BANK_MENU + 3:
		{
			if(!response) return 1;


			if(!(1 <= strlen(inputtext) <= 7))
			return ShowPlayerDialog(playerid, D_BANK_MENU + 3, DIALOG_STYLE_INPUT, "{"#cSV"}Заблокировать банковский счет", "{FFFFFF}В данном окне Вы можете заблокировать Ваш банковский счет\nПосле блокировки счета, Вы, и никто другой, не сможет совершать платежи и переводы на Ваш счет\nСчет всегда можно разблокировать в меню банка\n\nУкажите номер счета, который необходимо заблокировать:", "Далее", "Назад"), SendClientMessage(playerid, -1, ""cER"Номер счета от 1 до 7 цифр и без запрещенных символов") & 1;

			for(new i = strlen(inputtext)-1; i != -1; i--)
			switch(inputtext[i])
			{
			case '0'..'9': continue;
			default: return ShowPlayerDialog(playerid, D_BANK_MENU + 3, DIALOG_STYLE_INPUT, "{"#cSV"}Заблокировать банковский счет", "{FFFFFF}В данном окне Вы можете заблокировать Ваш банковский счет\nПосле блокировки счета, Вы, и никто другой, не сможет совершать платежи и переводы на Ваш счет\nСчет всегда можно разблокировать в меню банка\n\nУкажите номер счета, который необходимо заблокировать:", "Далее", "Назад"), SendClientMessage(playerid, -1, ""cER"Номер счета от 1 до 7 цифр и без запрещенных символов") & 1;
			}

			global_string = "";

			mysql_format(dbHandle, global_string, 128, "SELECT * FROM bank WHERE id = '%i' and block = '0'", strval(inputtext));
			mysql_tquery(dbHandle, global_string, "BlockBankMoney", "is", playerid, GetName(playerid));

		}
	case D_BANK_MENU + 4:
		{
			if(!response) return 1;


			if(!(1 <= strlen(inputtext) <= 7))
			return ShowPlayerDialog(playerid, D_BANK_MENU + 4, DIALOG_STYLE_INPUT, "{"#cSV"}Разблокировать банковский счет", "{FFFFFF}В данном окне Вы можете разблокировать Ваш банковский счет\n\nУкажите номер счета, который необходимо разблокировать:", "Далее", "Назад"), SendClientMessage(playerid, -1, ""cER"Номер счета от 1 до 7 цифр и без запрещенных символов") & 1;

			for(new i = strlen(inputtext)-1; i != -1; i--)
			switch(inputtext[i])
			{
			case '0'..'9': continue;
			default: return ShowPlayerDialog(playerid, D_BANK_MENU + 4, DIALOG_STYLE_INPUT, "{"#cSV"}Разблокировать банковский счет", "{FFFFFF}В данном окне Вы можете разблокировать Ваш банковский счет\n\nУкажите номер счета, который необходимо разблокировать:", "Далее", "Назад"), SendClientMessage(playerid, -1, ""cER"Номер счета от 1 до 7 цифр и без запрещенных символов") & 1;
			}

			global_string = "";

			mysql_format(dbHandle, global_string, 128, "SELECT * FROM bank WHERE id = '%i' and block = '1'", strval(inputtext));
			mysql_tquery(dbHandle, global_string, "UnBlockBankMoney", "is", playerid, GetName(playerid));

		}
	case D_BANK_MENU + 5:
		{
			if(!response) return 1;


			if(!(1 <= strlen(inputtext) <= 7))
			return ShowPlayerDialog(playerid, D_BANK_MENU + 5, DIALOG_STYLE_INPUT, "{"#cSV"}Закрыть банковский счет", "{FFFFFF}В данном окне Вы можете закрыть счет в нашем банке\nСчет закрывается навсегда и больше не сможет использоваться\nВсе деньги, которые остались на этом счете, будут утеряны\n\nУкажите номер счета, который необходимо закрыть:", "Далее", "Назад"), SendClientMessage(playerid, -1, ""cER"Номер счета от 1 до 7 цифр и без запрещенных символов") & 1;

			for(new i = strlen(inputtext)-1; i != -1; i--)
			switch(inputtext[i])
			{
			case '0'..'9': continue;
			default: return ShowPlayerDialog(playerid, D_BANK_MENU + 5, DIALOG_STYLE_INPUT, "{"#cSV"}Закрыть банковский счет", "{FFFFFF}В данном окне Вы можете закрыть счет в нашем банке\nСчет закрывается навсегда и больше не сможет использоваться\nВсе деньги, которые остались на этом счете, будут утеряны\n\nУкажите номер счета, который необходимо закрыть:", "Далее", "Назад"), SendClientMessage(playerid, -1, ""cER"Номер счета от 1 до 7 цифр и без запрещенных символов") & 1;
			}

			global_string = "";

			mysql_format(dbHandle, global_string, 128, "SELECT * FROM bank WHERE id = '%i'", strval(inputtext));
			mysql_tquery(dbHandle, global_string, "DeleteBankMoney", "is", playerid, GetName(playerid));

		}
	case D_BANK_MONEY + 6:
		{
			if(!response) return 1;

			new bank_id = GetPVarInt(playerid, "bank_id");

			mysql_format(dbHandle, global_string, 128, "UPDATE bank SET block = '1' WHERE id = '%d' and name = '%s'", bank_id, GetName(playerid));
			mysql_tquery(dbHandle, global_string, "", "");

			SendMes(playerid, 0x68CD78FF, "[Банк]: {FFFFFF}счет {F6F34D}№%d {FFFFFF}успешно заблокирован", bank_id);
			SendClientMessage(playerid, 0x68CD78FF, "[Банк]: {FFFFFF}на данный счет больше не могут совершаться платежи и переводы");

			DeletePVar(playerid, "bank_id");
		}
	case D_BANK_MONEY + 7:
		{
			if(!response) return 1;

			new bank_id = GetPVarInt(playerid, "bank_id");

			mysql_format(dbHandle, global_string, 128, "UPDATE bank SET block = '0' WHERE id = '%d' and name = '%s'", bank_id, GetName(playerid));
			mysql_tquery(dbHandle, global_string, "", "");

			SendMes(playerid, 0x68CD78FF, "[Банк]: {FFFFFF}счет {F6F34D}№%d {FFFFFF}успешно разблокирован", bank_id);
			SendClientMessage(playerid, 0x68CD78FF, "[Банк]: {FFFFFF}теперь на данный счет можно совершать платежи и переводы");

			DeletePVar(playerid, "bank_id");
		}

	case D_BANK_MONEY + 8:
		{
			if(!response) return 1;

			new bank_id = GetPVarInt(playerid, "bank_id");

			mysql_format(dbHandle, global_string, 128, "DELETE FROM bank WHERE id = '%d' and name = '%s'", bank_id, GetName(playerid));
			mysql_tquery(dbHandle, global_string, "", "");
			
			PI[playerid][pBankCount] --;

			MysqlUpdatePlayerInt(playerid, "bankcount", PI[playerid][pBankCount]);

			SendMes(playerid, 0x68CD78FF, "[Банк]: {FFFFFF}счет {F6F34D}№%d {FFFFFF}успешно закрыт", bank_id);
			SendClientMessage(playerid, 0x68CD78FF, "[Банк]: {FFFFFF}данный счет больше нельзя использовать");

			DeletePVar(playerid, "bank_id");
		}

	case D_BANK_MONEY:
		{
			if(!response) return DeletePVar(playerid, "bank_type") & 1;

			new b_id = GetPlayerListitemValue(playerid, listitem);

			SetPVarInt(playerid, "bank_id", b_id);

			new fmt_str[60];
			global_string = "";

			format(fmt_str, 128, "{"#cSV"}Управление банковским счетом №%d", b_id);

			switch(GetPVarInt(playerid, "bank_type"))
			{
			case 1:
				{
					if(Setting[playerid][3] != 1)
					{
						SendMes(playerid, 0xF2F530FF, "[Банк]: Управление банковским счетом {79CB64}№%d", b_id);
						for(new i; i < 24; i++) TextDrawShowForPlayer(playerid, TD_Bank[i]);
						TextDrawShowForPlayer(playerid, TD_BankExit[2]);
						TextDrawShowForPlayer(playerid, TD_BankExit[3]);
						PlayerTextDrawShow(playerid, TDP_Bank[playerid]);
						PlayerTextDrawSetString(playerid, TDP_Bank[playerid], "Меню банка");
						SelectTextDrawEx(playerid, 0xC45C0BAA);
					}
					else
					{
						ShowPlayerDialog(playerid, D_BANK, DIALOG_STYLE_LIST, fmt_str, "\
					{"#cSV"}1. {FFFFFF}Операции со счетом\n\
					{"#cSV"}2. {FFFFFF}Пополнить баланс\n\
					{"#cSV"}3. {FFFFFF}Снять деньги со счета\n\
					{"#cSV"}4. {FFFFFF}Оплата недвижимости\n\
					{"#cSV"}5. {FFFFFF}Пополнить мобильный счет\n\
					{"#cSV"}6. {FFFFFF}Благотворительность\n\
					{"#cSV"}7. {FFFFFF}Перевод на другой счет\n\
					{"#cSV"}8. {FFFFFF}Биз-бюджет", "Выбрать", "Отмена");

					}
				}
			case 2:
				{
					if(Setting[playerid][3] != 1)
					{
						SendMes(playerid, 0xF2F530FF, "[Банк]: Управление банковским счетом {79CB64}№%d", b_id);
						for(new i; i < 19; i++) TextDrawShowForPlayer(playerid, TD_Bank[i]);
						TextDrawShowForPlayer(playerid, TD_BankExit[0]);
						TextDrawShowForPlayer(playerid, TD_BankExit[1]);
						PlayerTextDrawShow(playerid, TDP_Bank[playerid]);
						PlayerTextDrawSetString(playerid, TDP_Bank[playerid], "Банкомат");
						SelectTextDrawEx(playerid, 0xC45C0BAA);
					}
					else
					{
						ShowPlayerDialog(playerid, D_BANK, DIALOG_STYLE_LIST, fmt_str, "\
					{"#cSV"}1. {FFFFFF}Операции со счетом\n\
					{"#cSV"}2. {FFFFFF}Пополнить баланс\n\
					{"#cSV"}3. {FFFFFF}Снять деньги со счета\n\
					{"#cSV"}4. {FFFFFF}Оплата недвижимости\n\
					{"#cSV"}5. {FFFFFF}Пополнить мобильный счет\n\
					{"#cSV"}6. {FFFFFF}Благотворительность", "Выбрать", "Отмена");
					}
				}
			}

			DeletePVar(playerid, "bank_type");
		}

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@Дарвин киньте mysql_log.txt. В самой базе счет создается (в таблице 'bank')? В чат сообщение о создании выводит? 

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST, Если это чем то может помочь то в БД пишется место имени IP игрока. то-есть счёт создался ip, data, cash создаётся правильно а имя нет

@DEST, Держите -

mysql_log.txt

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Tookie Johnson
      От Tookie Johnson
      Здравствуйте. Когда игрок нажимает на паузу, АФК работает, а когда просто играет, то у него над головой висит таймер с 0 минутами и 1 секундой.
       
       
    • Tookie Johnson
      От Tookie Johnson
      Здравствуйте. Кто поделится системой сохранения денег на MySQL R39-6 и расскажет как пользоваться этими стоками и куда их надо вставлять? Просто я пишу мод с нуля. Дошёл до этой системы и стою на месте. Я буду очень благодарен вам за систему и поставлю плюсик. Смотрел видео по этому, читал на форумах, но мне эти системы так и не подошли.
    • sanya 352235
      От sanya 352235
      error 076: syntax error in the expression, or invalid function call
      падает на строку 
       if(vinil == e_vinils[eVinilID])
       

    • Tookie Johnson
      От Tookie Johnson
      Здравствуйте, команда форума и его пользователи. Перепробовал разные способы сохранения здоровья в базу данных, но они не подходят для меня. Буду благодарен, если кто-то поделится данной системой.
    • Tookie Johnson
      От Tookie Johnson
      Здравствуйте. Как сделать так, чтобы после регистрации человека на сервере в базу данных заносился регистрационный айпи адрес? У меня MySQL R39-6. Также айпи адрес с последнего входа.