• 0
Дарвин

Баг со счётом

Question

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

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

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);

				}

 

Share this post


Link to post

8 answers to this question

  • 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));
}

 

Share this post


Link to post
  • 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);

				}

 

 

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

Share this post


Link to post
  • 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;
}

 

 

Share this post


Link to post
  • 0

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

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

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 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");
		}

 

 

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 0

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

@DEST, Держите -

mysql_log.txt

Share this post


Link to post
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • R0m4ik
      By R0m4ik
      Всем привет, хочу сделать систему итогов по репортам и вопросам хелперов нужно сделать 2 типа (Обычные итоги которые подводиться каждые 2 минуты:
      (ИТОГИ: All(Репортов за 2 минуты.): 0 / Ans(Вопросы хелперам): 0 / Неотв(Не отвеченные репорты).: 0 | Ответить(ИДшники тех кто не получил ответ.): И итоги часа:
      (ИТОГИ ЧАСА: Репортов: 0(Репортов за час) / Ответов: 0 (Ответы на репорты за час)/ Неотвечено: 0(Неотвеченные репорты))  
    • koteuka123
      By koteuka123
      Мод аризона, чел фиксил, сохранялись, сейчас снова пропадают кому ставлю, но у меня и кому ставил сохраняются, т.е в бд так и стоят, а кому выдаю , они перезаходят и пропадают.
       
    • goshu2016
      By goshu2016
      Приветствую нормальных скриптеров и диванных экспертов.
      Такой вопрос, видел на GTRP систему отделов, к примеру есть фракция "Армия", а в ней отдел ВАИ, у отдела есть возможность использовать наручники, тазер, скин который не могут надеть люде не имеющие отдела и использование выделенных автомобилей для них.
      У отдела нет лидера, просто переменная добавленная к фракции и с общим доступом к рации фракций и департамента, так же тег рации свой.
      Пытался по разному, но ни как не выходит написать систему, облазил весь интернет ни одного похожего случая не нашёл.
    • R0m4ik
      By R0m4ik
      Снова всем привет задаюсь вопросом как сделать так чтобы это сообщение
              format(string, 128, "%s назначил нового администратора %s", PlayerInfo[playerid][pSendername], sendername(params[0]));         SendAdminMessage(COLOR_YELLOW, string); писалось первый раз когда ставят администратора
    • R0m4ik
      By R0m4ik
      Всем привет, возникла маленькая проблема я хочу сделать команду /fakecmd(написать команду от другого игрока)
      У меня уже есть исходник данный команды осталось знать.
      На что надо заменить это?
      zcmd_OnPlayerCommandText(targetid, params);