Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 16
  1. #1
    Аватар для adamand
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2017
    Сообщений
    8
    Репутация:
    1 ±

    CreateDynamicSphere

    Всем привет.
    Проблема собственно говоря с функцией CreateDynamicSphere.
    Я её использую вместо пикапов для домов. Так вот, при создании дома (либо при загрузке из БД при запуске мода) происходит вот что:
    Дом id1 - загружается нормально.
    Дом id2 + id3 - находятся в одном месте
    Дом id4 + id5 - находятся на месте 3 дома.
    Дома дублируются, то есть сфера в сфере, но почему - не знаю.

    Заранее благодарю за помощь.

    Код команды создания домов:

    Код:
    CMD:createhouse(playerid, params[])//добавить проверку на админа
    	{
    	    //if(!PlayerInfo[playerid][pAdmin]) return 1;
    	    if(sscanf(params, "dd", params[0], params[1])) return SendClientMessage(playerid,CWHITE, !"Введите: /createhouse [класс дома (1-3)][цена]");
    	    if(params[0] < 1 || params[0] > 3) return SendClientMessage(playerid,CGREY, !"Вы указали неверный класс дома!");
    	    if(params[1] < 1) return SendClientMessage(playerid,CGREY, !"Вы указали неверное количество денег!");
    		TOTAL_HOUSE++;
    		GetPlayerPos(playerid, House[TOTAL_HOUSE][HEnter][0], House[TOTAL_HOUSE][HEnter][1], House[TOTAL_HOUSE][HEnter][2]);
    		House[TOTAL_HOUSE][ID] = TOTAL_HOUSE;
    		House[TOTAL_HOUSE][Class] = params[0];
    		House[TOTAL_HOUSE][Price] = params[1];
    		House[TOTAL_HOUSE][Lock] = 1;
    		House[TOTAL_HOUSE][Owned] = 0;
    
    		House[TOTAL_HOUSE][EnterPickup] = CreatePickup(1273,1, House[TOTAL_HOUSE][HEnter][0],House[TOTAL_HOUSE][HEnter][1],House[TOTAL_HOUSE][HEnter][2]);
    		House[TOTAL_HOUSE][MapIcons] = CreateDynamicMapIcon(House[TOTAL_HOUSE][HEnter][0],House[TOTAL_HOUSE][HEnter][1],House[TOTAL_HOUSE][HEnter][2],31,0,0,0,-1,130.0);
    		House[TOTAL_HOUSE][Area] = CreateDynamicSphere(House[TOTAL_HOUSE][HEnter][0],House[TOTAL_HOUSE][HEnter][1],House[TOTAL_HOUSE][HEnter][2],1.0,0,0,-1);
    
    		new mysql_query_one[500];
    		mysql_format(MYSQL_CONNECT,mysql_query_one,sizeof(mysql_query_one),"INSERT INTO `"TABLE_HOUSE"` (`ID`,`Owned`,`Owner`,`PosX`,`PosY`,`PosZ`,`Price`,`Class`,`Lock`) VALUES \
    		('%i', '0', 'None', '%f', '%f', '%f', '%i', '%i', '1')", TOTAL_HOUSE, House[TOTAL_HOUSE][HEnter][0], House[TOTAL_HOUSE][HEnter][1], House[TOTAL_HOUSE][HEnter][2],
    		params[1], params[0]);
    		mysql_function_query(MYSQL_CONNECT, mysql_query_one, false, "", "");
    		return 1;
    	}

  2. #2
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Привет! Кидай загрузку домов, и действие при нахождение на дин. Зоне

  3. #3
    Аватар для adamand
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2017
    Сообщений
    8
    Репутация:
    1 ±
    Цитата Сообщение от vasyok28 Посмотреть сообщение
    Привет! Кидай загрузку домов, и действие при нахождение на дин. Зоне
    Загрузка домов:
    Код:
    publics: HouseLoading()
    {
        new rows, fields;
        cache_get_data(rows,fields,MYSQL_CONNECT);
        if(rows)
        {
            for(new i = 1; i <= rows; i++)
            {
                House[i][ID] = cache_get_field_content_int(i-1, "ID", MYSQL_CONNECT);
                House[i][Owned] = cache_get_field_content_int(i-1, "Owned", MYSQL_CONNECT);
                cache_get_field_content(i-1, "Owner", House[i][Owner], MYSQL_CONNECT, 24);
                House[i][HEnter][0] = cache_get_field_content_float(i-1, "PosX", MYSQL_CONNECT);
                House[i][HEnter][1] = cache_get_field_content_float(i-1, "PosY", MYSQL_CONNECT);
                House[i][HEnter][2] = cache_get_field_content_float(i-1, "PosZ", MYSQL_CONNECT);
    
                House[i][Price] = cache_get_field_content_int(i-1, "Price", MYSQL_CONNECT);
                House[i][Class] = cache_get_field_content_int(i-1, "Class", MYSQL_CONNECT);
                House[i][Lock] = cache_get_field_content_int(i-1, "Lock", MYSQL_CONNECT);
                
               	TOTAL_HOUSE++;
                if(!House[i][Owned])
                {
               		House[i][EnterPickup] = CreatePickup(1273, 23, House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2],-1);
                	House[i][MapIcons] = CreateDynamicMapIcon(House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2], 31, CWHITE, 0, -1, -1, 200.0);
               	}
               	else
               	{
               		House[i][EnterPickup] = CreatePickup(19522, 23, House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2],-1);
                	House[i][MapIcons] = CreateDynamicMapIcon(House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2], 32, CWHITE, 0, -1, -1, 100.0);
               	}
               	House[i][Area] = CreateDynamicSphere(House[i][HEnter][0],House[i][HEnter][1],House[i][HEnter][2],1.0,0,0,-1);
            }
        }
        printf("[Система домов]: %i домов было загружено.", TOTAL_HOUSE);
        return true;
    }


    Действие, когда игрок входит в зону.
    Код:
    public OnPlayerEnterDynamicArea(playerid, areaid)
    {
    	if(areaid >= House[1][Area] && areaid <= House[TOTAL_HOUSE][Area])
    	{
    		new house_class[15], mes[128];
    	    new houseid = areaid - House[1][Area]+1;
       		if(houseid == -1) return true;
     		switch(House[houseid][Class])
       		{
        		case 1: house_class = "Ýêîíîì";
          		case 2: house_class = "Ñðåäíèé";
          		case 3: house_class = "Ëþêñ";
          	}
          	if(!House[houseid][Owned])
    		{
          		f(mes, "Íîìåð äîìà: %i\nÄîì ïðîäà¸òñÿ!\n\nÊëàññ: %s\nÑòîèìîñòü: %i$", houseid, house_class, House[houseid][Price]);
    			ShowPlayerDialog(playerid, dBuyHouse,DIALOG_STYLE_MSGBOX,"Äîì ñâîáîäåí",mes,"Êóïèòü","Îòìåíà");
    		}
    		else
    		{
    			f(mes, "Íîìåð äîìà: %i\n\nÂëàäåëåö: %s\n\nÊëàññ: %s", houseid, House[houseid][Owner], house_class);
    			ShowPlayerDialog(playerid, dHouseEnter,DIALOG_STYLE_MSGBOX,"Äîì çàíÿò",mes,"Âîéòè","Îòìåíà");
    		}
    		PlayerInfo[playerid][SelectedHouseID] = houseid;
    	}
    	return 1;
    }

  4. #4
    Аватар для adamand
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2017
    Сообщений
    8
    Репутация:
    1 ±
    Поднимаю

  5. #5
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    PHP код:
    public OnPlayerEnterDynamicArea(playeridareaid)
    {
        if(
    areaid >= House[1][Area] && areaid <= House[TOTAL_HOUSE][Area])
        {
            new 
    house_class[15], mes[128];
            for(new 
    houseid 1houseid != TOTAL_HOUSEhouseid++)
            {
                if(
    House[houseid][Area] != areaid) continue;
                 switch(
    House[houseid][Class])
                   {
                    case 
    1house_class "Ýêîíîì";
                      case 
    2house_class "Ñðåäíèé";
                      case 
    3house_class "Ëþêñ";
                  }
                  if(!
    House[houseid][Owned])
                {
                      
    f(mes"Íîìåð äîìà: %i\nÄîì ïðîäà¸òñÿ!\n\nÊëàññ: %s\nÑòîèìîñòü: %i$"houseidhouse_classHouse[houseid][Price]);
                    
    ShowPlayerDialog(playeriddBuyHouse,DIALOG_STYLE_MSGBOX,"Äîì ñâîáîäåí",mes,"Êóïèòü","Îòìåíà");
                }
                else
                {
                    
    f(mes"Íîìåð äîìà: %i\n\nÂëàäåëåö: %s\n\nÊëàññ: %s"houseidHouse[houseid][Owner], house_class);
                    
    ShowPlayerDialog(playeriddHouseEnter,DIALOG_STYLE_MSGBOX,"Äîì çàíÿò",mes,"Âîéòè","Îòìåíà");
                }
                
    PlayerInfo[playerid][SelectedHouseID] = houseid;
                break;
            }
        }
        return 
    1;

    Последний раз редактировалось Sp1ke; 26.08.2017 в 20:30.

  6. #6
    Аватар для adamand
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2017
    Сообщений
    8
    Репутация:
    1 ±
    Не помогло.

  7. #7
    Аватар для Batya_Montes
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2017
    Адрес
    0x
    Сообщений
    163
    Репутация:
    13 ±
    PHP код:
    public OnPlayerEnterDynamicArea(playeridareaid)
    {
        if(
    areaid >= House[0][Area] && areaid <= House[TOTAL_HOUSE 1][Area])
        {
            new 
    house_class[15], mes[128];
            new 
    houseid areaid House[0][Area];
               if(
    houseid == -1) return true;
             switch(
    House[houseid][Class])
               {
                case 
    1house_class "Ýêîíîì";
                  case 
    2house_class "Ñðåäíèé";
                  case 
    3house_class "Ëþêñ";
              }
              if(!
    House[houseid][Owned])
            {
                  
    f(mes"Íîìåð äîìà: %i\nÄîì ïðîäà¸òñÿ!\n\nÊëàññ: %s\nÑòîèìîñòü: %i$"houseidhouse_classHouse[houseid][Price]);
                
    ShowPlayerDialog(playeriddBuyHouse,DIALOG_STYLE_MSGBOX,"Äîì ñâîáîäåí",mes,"Êóïèòü","Îòìåíà");
            }
            else
            {
                
    f(mes"Íîìåð äîìà: %i\n\nÂëàäåëåö: %s\n\nÊëàññ: %s"houseidHouse[houseid][Owner], house_class);
                
    ShowPlayerDialog(playeriddHouseEnter,DIALOG_STYLE_MSGBOX,"Äîì çàíÿò",mes,"Âîéòè","Îòìåíà");
            }
            
    PlayerInfo[playerid][SelectedHouseID] = houseid;
        }
        return 
    1;


  8. #8
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    ТС:

    1. Можно свой код оборачивать в [php ] [/php] тэг?
    2. Можно залить с нормальной кодировкой из редактора Pawno?
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  9. #9
    Аватар для adamand
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2017
    Сообщений
    8
    Репутация:
    1 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    ТС:

    1. Можно свой код оборачивать в [php ] [/php] тэг?
    2. Можно залить с нормальной кодировкой из редактора Pawno?
    Какой код надо скинуть в удобном для вас виде? Просто не придавал этому особого значения.

    P.S. Мне кажется, что проблема должна быть где-то в создании этих зон (загрузка домов + команда создания дома), ибо если копать паблик с поднятием зоны, то это не исправит баг с созданием двух зон.
    В БД всё верно, кол-во домов совпадает с нужным.
    Добавил команду для вывода переменной TOTAL_HOUSE, в ней данные верны.
    Проблема конкретно в зонах, их почему-то две.

  10. #10
    Аватар для Batya_Montes
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2017
    Адрес
    0x
    Сообщений
    163
    Репутация:
    13 ±
    Цитата Сообщение от adamand Посмотреть сообщение
    Какой код надо скинуть в удобном для вас виде? Просто не придавал этому особого значения.

    P.S. Мне кажется, что проблема должна быть где-то в создании этих зон (загрузка домов + команда создания дома), ибо если копать паблик с поднятием зоны, то это не исправит баг с созданием двух зон.
    В БД всё верно, кол-во домов совпадает с нужным.
    Добавил команду для вывода переменной TOTAL_HOUSE, в ней данные верны.
    Проблема конкретно в зонах, их почему-то две.
    мой вариант проверь, должно работать

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •