Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Команда обновления информации дома

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

ThomasFlores

Новичок
Привет всем! Уже долгое время не могу создать команду, которая обновляет некоторую информацию о доме, например, цену, класс, квартплату. Хочу сделать её так, чтобы сразу записывала изменение в БД, но у меня не выходит... Сделал две команды: одна создаёт координаты дома, другая изменяет координаты личного транспорта у этого дома. Вот код, как я их делал:

PHP:
      if(strcmp(cmd, "/createhouse", true) == 0)
	{
        if(PlayerInfo[playerid][pAdmin] < 7) return true;
	    tmp = strtok(cmdtext, idx);
	    if(!strlen(tmp))return SendClientMessage(playerid, -1, "Введите: /createhouse [ID дома]" ) ;
        new newstring[40];
	    mysql_real_escape_string(tmp, newstring);
	    new gethouse[80];
	    format(gethouse, sizeof(gethouse), "SELECT * FROM `houses` WHERE ID = '%s'",  tmp);
	    new Cache: ljasdasdg = mysql_query(dbHandle,gethouse,true);
		if(cache_num_rows() > 0) return SendClientMessage(playerid,COLOR_GRAD1,"Такой ID дома уже существует");
        if(cache_num_rows() == 0)
		{
    		new Float: lwx, Float:lwy, Float:lwz;
      		GetPlayerPos(playerid, lwx, lwy, lwz);
			new mquery[1024];
			mysql_format(dbHandle, mquery, sizeof(mquery), "INSERT INTO houses (hExitX, hExitY, hExitZ, ID) VALUES ('%f','%f','%f','%e')", lwx, lwy, lwz , tmp) ;
			mysql_pquery(dbHandle, mquery);
			format(query,sizeof(query),"ID дома № %s был успешно создан",tmp);
			SendClientMessage(playerid, 0x187bf1AA,query);
		}
		cache_delete(ljasdasdg);
	    return 1;
	}

        if(strcmp(cmd, "/updateposcar", true) == 0)
	{
        if(PlayerInfo[playerid][pAdmin] < 7) return true;
        tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Ввведите: /updateposcar [ID дома]");
	    new newstring[40];
	    mysql_real_escape_string(tmp, newstring);
	    new getint[80];
	    format(getint, sizeof(getint), "SELECT * FROM `houses` WHERE ID = '%s'",  tmp);
	    new Cache: ljasdasdg = mysql_query(dbHandle,getint,true);
		if(cache_num_rows() == 0) return SendClientMessage(playerid,COLOR_GRAD1,"Такого ID дома не существует");
        if(cache_num_rows() > 0)
		{
		    new Float: PosCar[3], Float: AnglePos;
	        GetPlayerFacingAngle(playerid,AnglePos);
			GetPlayerPos(playerid,PosCar[0],PosCar[1],PosCar[2]);
			new mquery[1024];
			mysql_format(dbHandle, mquery, sizeof(mquery), "UPDATE houses SET hCarX = '%f', hCarY = '%f', hCarZ = '%f', hCarA = '%f' WHERE ID = '%e'", PosCar[0], PosCar[1], PosCar[2], AnglePos, tmp);
	        mysql_pquery(dbHandle, mquery);
			format(query,sizeof(query),"Координаты личного транспорта для дома № %s были успешно обновлены",tmp);
			SendClientMessage(playerid, 0x187bf1AA,query);
		}
		cache_delete(ljasdasdg);
	    return 1;
	}

С ними проблем у меня не возникло. Не получается создать именно команду, по которой нужно задействовать определенный ID дома, например, /updateprice [ID дома] [Цена]
Примерно так я создавал команды такого типа:


PHP:
        if(strcmp(cmd, "/updateprice", true) == 0)
	{
        if(PlayerInfo[playerid][pAdmin] < 7) return true;
        tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Ввведите: /updateprice [ID дома] [Цена]");
		new IDHome;
		IDHome = srval(tmp);
	    new newstring[40];
	    mysql_real_escape_string(tmp, newstring);
	    new getint[80];
	    format(getint, sizeof(getint), "SELECT * FROM `houses` WHERE ID = '%s'",  tmp);
	    new Cache: ljasdasdg = mysql_query(dbHandle,getint,true);
		if(cache_num_rows() == 0) return SendClientMessage(playerid,COLOR_GRAD1,"Такого ID дома не существует");
        if(cache_num_rows() > 0)
		{
            tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Ввведите: /updateprice [ID дома] [Цена]");
			new PriceHome;
			PriceHome = srval(tmp);
			new mquery[1024];
			mysql_format(dbHandle, mquery, sizeof(mquery), "UPDATE houses SET Price = '%e' WHERE ID = '%e'", PriceHome,IDHome);
	        mysql_pquery(dbHandle, mquery);
			format(query,sizeof(query),"Цена для дома № %s была успешно обновлена",IDHome);
			SendClientMessage(playerid, 0x187bf1AA,query);
		}
		cache_delete(ljasdasdg);
	    return 1;
	}

В сообщении "Цена для дома № ... была успешно обновлена" писалось не то, что я на самом деле писал в этой самой команде. Например я писал /updateprice 500 100000, а мне выдавало "Цена для дома № e была успешно обновлена"
Я менял сабж %e на %s и %d, сообщение, которое мне выдавало после ввода команды изменялось, но не так, как должно быть.
Я переписывал эту команду разными способами, пытался сделать и что-то типо /selhouse [ID], чтобы ID который я впишу сохранился под переменную, чтобы потом уже просто ввести /updateprice [Цена] (То есть без ID), так как я уже записал ID в переменную, но и так же ничего не получалось.

Подскажите как мне сделать эту систему :( Может свой способ какой-нибудь?
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу