[Вопрос] Неправильный выбор в диалоге

Статус
В этой теме нельзя размещать новые ответы.

Den4ik-Den

Участник форума
Пользователь
Регистрация
23 Ноя 2014
Сообщения
127
Реакции
2
Здравствуйте. Я создаю систему подразделений как на дрп( не реклама), но у меня возникла проблема. Когда я выбираю определенное подразделение, оно неправильно передается в переменную, а позже, неправильно выгружает из базы данных.
Вот скриншот действия команды:
На первом скриншоте сама команда, на втором я пытался выдать подразделение DD и результат выдало не тот, на третьем и четвертом история такая же.
Вот код команды:
PHP:
CMD:division(playerid,params[])
{
	new 
		id, 
		DA[7], 
		DO[32],
		string[680],
		stringM[90], 
		organizacia = 1;
	if(sscanf(params,"u",id)) return SendClientMessage(playerid, -1,"[Информация] Используйте: /division (ID - игрока/Ник)");
	if(!IsPlayerLogged[id]) return false;
	SetPVarInt(playerid,"divID",id);
	#define orgN PlayerInfo[playerid][pMember]
	if(orgN == 1) organizacia = 1;
	format(stringM, sizeof(stringM), "SELECT * FROM `divisions` WHERE `IDorg` = '%d' ORDER BY `ID`", organizacia);
	new Cache:result = mysql_query(mysql, stringM);
	new DN = cache_get_row_count(mysql);
	if(DN == 0) return SendClientMessage(playerid, -1,"Подразделений нет");
	format(string, sizeof(string), "{FF6347}1.{ffffff} Отсутствие подразделения\n");
	for(new i,count; i < DN; i ++)
	{
		dialog_listitem_values[playerid][count] = cache_get_row_int(i, 0, mysql);
		cache_get_row(i, 2, DA, mysql);
		cache_get_row(i, 3, DO, mysql);
		//dialog_listitem_values[playerid][count] = division_id;
        count++;
		format(string, sizeof(string), "%s{FF6347}%d. {ffffff}%s %s\n", string,i+2, DO,DA);
	}
	cache_delete(result, mysql);
	if(!ShowPlayerDialogEx(playerid, 9668, 2, "{F2C934}Смена подразделения", string, "Выбор", "Назад"))SendClientMessage(playerid, COLOR_GREY, "Недоступно в данный момент.");
	return 1;
}
Вот код диалога:
PHP:
case 9668:
		{
			if(response)
			{
				new idDiv[MAX_PLAYERS];
				new divIDs = GetPVarInt(playerid,"divID"),
					DA[7];
				if(listitem == 0) {
					SendClientMessage(playerid,-1,"подразделение убрано");
					SetString(PlayerInfo[divIDs][Division],"");
				}
				else
				{
					idDiv[playerid] = dialog_listitem_values[playerid][listitem];
					//new stringM[90];
					//format(stringM, sizeof(stringM), "SELECT `DA` FROM `divisions` ORDER BY `ID`");
					new Cache:result = mysql_query(mysql, "SELECT `DA` FROM `divisions` ORDER BY `ID`");
					cache_get_row(idDiv[playerid],0,DA,mysql);
					SetString(PlayerInfo[divIDs][Division],DA);
					format(string,sizeof(string),"Вы выдали подразделение %s, ID - %d",DA,idDiv[playerid]);
					SendClientMessage(playerid,COLOR_RED,string);
					cache_delete(result, mysql);
					//format(string,sizeof(string),"дорабатывается. ид выбранного подразделения %d",dialog_listitem_values[playerid][listitem-1]);

					//SendClientMessage(playerid,COLOR_RED,string);
				}
				DeletePVar(playerid,"divID");
			}
		}
Вот скриншот таблицы подразделений:
 

gangzone.ini

Lalka
Пользователь
Регистрация
21 Май 2015
Сообщения
599
Реакции
282
Попробуй

PHP:
new divIDs = GetPVarInt(playerid,"divID");
DeletePVar(playerid,"divID");
if(listitem == 0) 
{
    SendClientMessage(playerid,-1,"подразделение убрано");
    SetString(PlayerInfo[divIDs][Division],"");
}
else
{
	new idDiv = dialog_listitem_values[playerid][listitem-1];
    new stringM[90],
    	DA[7];
    format(stringM, sizeof(stringM), "SELECT `DA` FROM `divisions` WHERE `ID`='%d' LIMIT 1", idDiv);
    new Cache:result = mysql_query(mysql, stringM);
    cache_get_row(idDiv,0,DA,mysql); 
    cache_delete(result, mysql);
    SetString(PlayerInfo[divIDs][Division],DA);
    format(string,sizeof(string),"Вы выдали подразделение %s, ID - %d",DA,idDiv);
    SendClientMessage(playerid,COLOR_RED,string);

    //format(string,sizeof(string),"дорабатывается. ид выбранного подразделения %d",idDiv);
    //SendClientMessage(playerid,COLOR_RED,string);
}
 

Den4ik-Den

Участник форума
Пользователь
Регистрация
23 Ноя 2014
Сообщения
127
Реакции
2
PHP:
[17:21:33 10/02/19] [WARNING] CMySQLResult::GetRowData - invalid row ('6') or field index ('0') (Query: "SELECT `DA` FROM `divisions` WHERE `ID`='6' LIMIT 1")
Выбираю любой дивизион - выдает NULL.
UPD: Пофиксил эту ошибку, исправив строчку.
С
PHP:
cache_get_row(idDiv,0,DA,mysql);
На
PHP:
cache_get_row(0,0,DA,mysql);
gangzone.ini - спасибо!
Можно закрывать.
 
Последнее редактирование:

Serg_Brain

• Администратор •
Команда форума
Administrator
Регистрация
15 Янв 2012
Сообщения
3,933
Реакции
259
Закрыто, проблема решена.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи онлайн

Реклама

Сверху