Проблема с командой
#1

В чем может быть проблема?
когда я ввожу /addhouse 3 500 (например, 3 это класс, 500 это цена). Дом создался, и показывает что hValue (стоимость дома) ровна интерьеру hKlass. Подскажите как исправить?


Код:
    if(!strcmp(cmd,"/addhouse",true))
	{
        if (PINFO[playerid][pAdminLVL] < 7) return SendMe(playerid, CGRADD, YouCanNot);
        new cena, klass;
        tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))  return SendMe(playerid, CWHITE,"Введите: /addhouse [класс] [стоимость]");
		klass = strval(tmp);
		if(!strlen(tmp))  return SendMe(playerid, CWHITE,"Введите: /addhouse [класс] [стоимость]");
		cena = strval(tmp);
		if(!strlen(tmp))  return SendMe(playerid, CWHITE,"Введите: /addhouse [класс] [стоимость]");
		new Float: posX, Float: posY, Float: posZ;
        GetPlayerPos(playerid, posX, posY, posZ);
        TotalHouse++;
        HomeInfo[TotalHouse][hID] = TotalHouse;
        HomeInfo[TotalHouse][hEntrance][0] = posX;
        HomeInfo[TotalHouse][hEntrance][1] = posY;
        HomeInfo[TotalHouse][hEntrance][2] = posZ;
        HomeInfo[TotalHouse][hLock] = 1;
        HomeInfo[TotalHouse][hKlass] = klass;
        HomeInfo[TotalHouse][hValue] = cena;
        if(HomeInfo[TotalHouse][hKlass] == 0)
        {
            HomeInfo[TotalHouse][hInt] = 10;
            HomeInfo[TotalHouse][hExit][0] = 421.7613;
            HomeInfo[TotalHouse][hExit][1] = 2536.4836;
            HomeInfo[TotalHouse][hExit][2] = 10.0000;
        }
        else if(HomeInfo[TotalHouse][hKlass] == 1)
        {
            HomeInfo[TotalHouse][hInt] = 6;
            HomeInfo[TotalHouse][hExit][0] = -68.8618;
            HomeInfo[TotalHouse][hExit][1] = 1352.2183;
            HomeInfo[TotalHouse][hExit][2] = 1080.2109;
        }
        else if(HomeInfo[TotalHouse][hKlass] == 2)
        {
            HomeInfo[TotalHouse][hInt] = 5;
            HomeInfo[TotalHouse][hExit][0] = 22.7405;
            HomeInfo[TotalHouse][hExit][1] = 1404.3799;
            HomeInfo[TotalHouse][hExit][2] = 1084.4297;
        }
        else if(HomeInfo[TotalHouse][hKlass] == 3)
        {
            HomeInfo[TotalHouse][hInt] = 12;
            HomeInfo[TotalHouse][hExit][0] = 2324.3367;
            HomeInfo[TotalHouse][hExit][1] = -1148.6296;
            HomeInfo[TotalHouse][hExit][2] = 1050.7101;
        }
        else
        {
            HomeInfo[TotalHouse][hInt] = 5;
            HomeInfo[TotalHouse][hExit][0] = 140.2206;
            HomeInfo[TotalHouse][hExit][1] = 1367.2734;
            HomeInfo[TotalHouse][hExit][2] = 1083.8612;
        }
        format(mysql_query, sizeof(mysql_query), "INSERT INTO `house` (`hEntrance0`, `hEntrance1`,`hEntrance2`, `hLock`,`hKlass`,`hValue`,`hExit0`,`hExit1`,`hExit2`) VALUES ('%f', '%f', '%f', '1','%d','%d','%f','%f','%f')",
        posX,posY,posZ,klass,cena,HomeInfo[TotalHouse][hExit][0],HomeInfo[TotalHouse][hExit][1],HomeInfo[TotalHouse][hExit][2]);
        mysql_function_query(connects, mysql_query, false, "", "");
        HomeInfo[TotalHouse][hPickup] = CreatePickupAC(1273, 23, HomeInfo[TotalHouse][hEntrance][0], HomeInfo[TotalHouse][hEntrance][1], HomeInfo[TotalHouse][hEntrance][2],-1);
        HomeInfo[TotalHouse][hMIcon] = CreateDynamicMapIcon(HomeInfo[TotalHouse][hEntrance][0], HomeInfo[TotalHouse][hEntrance][1], HomeInfo[TotalHouse][hEntrance][2], 31, -1, 0, -1, -1, 100.0);
	    SendMes(playerid,CWHITE,"Вы создали дом. %d [KLASS: %d]", cena, klass);
	    SaveHouse(TotalHouse);
        return 1;
    }
Также мне в чате пишет два раза интерьер.. что такое может быть? p.s mysql r31
Reply
#2

PHP код:
ormat(mysql_querysizeof(mysql_query), "INSERT INTO `house` (`hEntrance0`, `hEntrance1`,`hEntrance2`, `hLock`,`hKlass`,`hValue`,`hExit0`,`hExit1`,`hExit2`) VALUES ('%f', '%f', '%f', '1','%d','%d','%f','%f','%f')",
        
posX,posY,posZ,klass,cena,HomeInfo[TotalHouse][hExit][0],HomeInfo[TotalHouse][hExit][1],HomeInfo[TotalHouse][hExit][2]); 
Эм.. Что за единица то? омг.
PHP код:
format(mysql_querysizeof(mysql_query), "INSERT INTO `house` (`hEntrance0`, `hEntrance1`,`hEntrance2`, `hLock`,`hKlass`,`hValue`,`hExit0`,`hExit1`,`hExit2`) VALUES ('%f', '%f', '%f', '%d','%d','%d','%f','%f','%f')",
        
posX,posY,posZ,klass,cena,HomeInfo[TotalHouse][hExit][0],HomeInfo[TotalHouse][hExit][1],HomeInfo[TotalHouse][hExit][2]); 
Reply
#3

Quote:
Originally Posted by Grem17
Посмотреть сообщение
PHP код:
ormat(mysql_querysizeof(mysql_query), "INSERT INTO `house` (`hEntrance0`, `hEntrance1`,`hEntrance2`, `hLock`,`hKlass`,`hValue`,`hExit0`,`hExit1`,`hExit2`) VALUES ('%f', '%f', '%f', '1','%d','%d','%f','%f','%f')",
        
posX,posY,posZ,klass,cena,HomeInfo[TotalHouse][hExit][0],HomeInfo[TotalHouse][hExit][1],HomeInfo[TotalHouse][hExit][2]); 
Эм.. Что за единица то? омг.
PHP код:
format(mysql_querysizeof(mysql_query), "INSERT INTO `house` (`hEntrance0`, `hEntrance1`,`hEntrance2`, `hLock`,`hKlass`,`hValue`,`hExit0`,`hExit1`,`hExit2`) VALUES ('%f', '%f', '%f', '%d','%d','%d','%f','%f','%f')",
        
posX,posY,posZ,klass,cena,HomeInfo[TotalHouse][hExit][0],HomeInfo[TotalHouse][hExit][1],HomeInfo[TotalHouse][hExit][2]); 
Это запрос в базу данных.
Reply
#4

Я вижу что это запрос в базу. Я спросил что там за единица в твоем запросе и поправил её на %d.
Reply
#5

Quote:
Originally Posted by Grem17
Посмотреть сообщение
Я вижу что это запрос в базу. Я спросил что там за единица в твоем запросе и поправил её на %d.
1 - Это закрытие самого дома. Уже автоматически его закрывает. Зачем на %d менять?
ничего не изменится, ошибка в чем-то другом..
Reply
#6

Теперь вижу, я его перепутал. hLock с hKlass. -__- тупанул, как говорится
PHP код:
new cenaklass;
tmp strtok(cmdtextidx);
if(!
strlen(tmp))  return SendMe(playeridCWHITE,"Введите: /addhouse [класс] [стоимость]");
klass strval(tmp);
tmp strtok(cmdtextidx);
if(!
strlen(tmp))  return SendMe(playeridCWHITE,"Введите: /addhouse [класс] [стоимость]");
cena strval(tmp); 
Уже и не юзаю 100 лет strtok, на sscanf перешел. Попробуй так. Кажись strtok дважды юзнуть надо ибо ты записываешь в цену и класс одно и то же
Reply
#7

Спасибо большое, Вы мне очень помогли.

Но теперь проблема возникает в домах. При загрузке заметил лишний дом, который в конце создается.



С чем это может быть связано? и нужно ли в таблице включать AUTO_INCREMENT ? p.s щас включено у меня)
Reply
#8

Нужно.
Каким образом он может создаться при загрузке ?
Reply
#9

Выявил ошибку, с загрузкой домов.

Код:
publics: LoadHouses()
{
    static rows, fields;
	cache_get_data(rows, fields);
	new temp[64];
	if(rows)
	{
        for(new he = 0;he < rows; he++)
		{
	  	    cache_get_row(he, 0, temp), HomeInfo[he][hID] = strval(temp);
            cache_get_row(he, 1, temp), HomeInfo[he][hEntrance][0] = floatstr(temp);
            cache_get_row(he, 2, temp), HomeInfo[he][hEntrance][1] = floatstr(temp);
            cache_get_row(he, 3, temp), HomeInfo[he][hEntrance][2] = floatstr(temp);
            cache_get_row(he, 4, temp), HomeInfo[he][hExit][0] = floatstr(temp);
            cache_get_row(he, 5, temp), HomeInfo[he][hExit][1] = floatstr(temp);
            cache_get_row(he, 6, temp), HomeInfo[he][hExit][2] = floatstr(temp);
            cache_get_row(he, 7, temp), strmid(HomeInfo[he][hOwner], temp, 0, strlen(temp), 255);
            cache_get_row(he, 8, temp), HomeInfo[he][hValue] = strval(temp);
            cache_get_row(he, 9, temp), HomeInfo[he][hHel] = strval(temp);
            cache_get_row(he, 10, temp), HomeInfo[he][hInt] = strval(temp);
            cache_get_row(he, 11, temp), HomeInfo[he][hLock] = strval(temp);
            cache_get_row(he, 12, temp), HomeInfo[he][hOwned] = strval(temp);
            cache_get_row(he, 13, temp), HomeInfo[he][hTakings] = strval(temp);
            cache_get_row(he, 14, temp), HomeInfo[he][hOnline] = strval(temp);
            cache_get_row(he, 15, temp), HomeInfo[he][hNarko] = strval(temp);
            cache_get_row(he, 16, temp), HomeInfo[he][hOgrablen] = strval(temp);
            cache_get_row(he, 17, temp), HomeInfo[he][hKlass] = strval(temp);
            cache_get_row(he, 18, temp), HomeInfo[he][hSafe] = strval(temp);
            cache_get_row(he, 19, temp), HomeInfo[he][hCarPoc][0] = floatstr(temp);
            cache_get_row(he, 20, temp), HomeInfo[he][hCarPoc][1] = floatstr(temp);
            cache_get_row(he, 21, temp), HomeInfo[he][hCarPoc][2] = floatstr(temp);
            cache_get_row(he, 22, temp), HomeInfo[he][hCarPoc][3] = floatstr(temp);
            cache_get_row(he, 23, temp), HomeInfo[he][hCar] = strval(temp);
            cache_get_row(he, 24, temp), HomeInfo[he][hGun][0] = strval(temp);
            cache_get_row(he, 25, temp), HomeInfo[he][hGun][1] = strval(temp);
            cache_get_row(he, 26, temp), HomeInfo[he][hGun][2] = strval(temp);
            cache_get_row(he, 27, temp), HomeInfo[he][hGun][3] = strval(temp);
            cache_get_row(he, 28, temp), HomeInfo[he][hGun][4] = strval(temp);
            cache_get_row(he, 29, temp), HomeInfo[he][hGunAmmo][0] = strval(temp);
            cache_get_row(he, 30, temp), HomeInfo[he][hGunAmmo][1] = strval(temp);
            cache_get_row(he, 31, temp), HomeInfo[he][hGunAmmo][2] = strval(temp);
            cache_get_row(he, 32, temp), HomeInfo[he][hGunAmmo][3] = strval(temp);
            cache_get_row(he, 33, temp), HomeInfo[he][hGunAmmo][4] = strval(temp);
			TotalHouse++;
		}
       	printf("- Домов загружено %d",TotalHouse);
	}
Дело в том что, когда я создаю дом все нормально, 4 дома например создал. Дальше перезапускаю свой сервер, и 1 дома просто нету, он уходит. Мое подозрение что на 0 координаты.
Т.е было 4, стало 3..

Помогите народ?
Reply
#10

Обновил пост выше.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)