02:08
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: AXE, Weddew  
не создается машина
_BigSm0ke_Дата: Воскресенье, 24.06.2012, 22:12 | Сообщение # 1
Местный
Группа: I'm V.I.P.
Сообщений: 674
Награды: 5
Город: Москва
Репутация: 127
Замечания: 0%
Статус:
Code
for(new i = 1; i == car_num; i++)
   {
       if(CarInfo[i][cSale] ==1)
       {
     CarMassive[i] = CreateVehicle(CarInfo[i][cModel],CarInfo[i][cx],CarInfo[i][cy],CarInfo[i][cz],CarInfo[i][cangle],CarInfo[i][cColor1],CarInfo[i][cColor2],1);
     printf("CarMassive[%d]=%d",i,CarMassive[i]);
    }
   }


Code
LoadCarInfo()
{
      new query[1024],result[1024];
      format(query,sizeof(query),"SELECT COUNT(*) FROM `pcars`");
   mysql_query(query);
   mysql_store_result();
   car_num = mysql_num_rows();
   printf("Car_Nums: %d",car_num);
      for(new i = 1; i == car_num; i++)
   {
       format(query, sizeof(query), "SELECT * FROM `pcars` WHERE `cID` = '%i'" ,i);
        mysql_query(query);
       mysql_store_result();
       if(mysql_num_rows() == 1)
    {
        mysql_fetch_row_format(result, "|");
        sscanf(result, "p<|>iiiiiiiffffii",
        CarInfo[i][cID],
        CarInfo[i][cOwnerID],
        CarInfo[i][cModel],
        CarInfo[i][cCost],
        CarInfo[i][cSale],
        CarInfo[i][cWeapon],
        CarInfo[i][cAmmo],
        CarInfo[i][cx],
        CarInfo[i][cy],
        CarInfo[i][cz],
        CarInfo[i][cangle],
     CarInfo[i][cColor1],
     CarInfo[i][cColor2]);
        mysql_free_result();
        printf("Çàãðóçêà ìàøèí:");
      printf("ID %d, Âëàäåëåö %d, Ìîäåëü %d, Öåíà %d",CarInfo[i][cID],CarInfo[i][cOwnerID],CarInfo[i][cModel],CarInfo[i][cCost]);
    }
   }
   return 1;
}


Идея такая,есть таблица с машинами, добавляются они туда владельцем авторынка, если машина продается cSale = 1 то спавним её при запуске мода .. ну и так далее кто в нее сядет тот купит и т.п., а те которые уже куплены cSale = 0; то они заспавнятся при заходе в игру владельца...
Пока тестирую только на одной машине. Есть машина, она продается cSale=1; но она не появляется почемуто... хотя из таблицы все данные записываются нормально проверял сто раз... в чем может быть проблема



LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
Продаю РП мод: подробнее тут
Решаю задачи по техническим дисциплинам, подробнее тут


Сообщение отредактировал _BigSm0ke_ - Воскресенье, 24.06.2012, 22:13
BorogДата: Воскресенье, 24.06.2012, 23:10 | Сообщение # 2
Долгожитель
Группа: I'm V.I.P.
Сообщений: 1362
Награды: 43
Город: Москва
Репутация: 1249
Замечания: 20%
Статус:
_BigSm0ke_,
  • Во-первых зачем ты начинаешь читать массив со второй ячайки?

    for(new i = 1; i == car_num; i++)
    {
    if(CarInfo[i][cSale] ==1)
    ...
    Массив с 0 начинается, а не с 1
    Во втором коде тоже самое. Только в нем не забудь еще в запросе к i единицу прибавлять

  • Во-вторых некорректно используется ф-ия
    if(mysql_num_rows() == 1)

    Она возвращает кол-во найденных строк. А ты записываешь данные, только если найдена одна единственная
    Оставь просто: if(mysql_num_rows())

    Больше беглым взглядом никаких косяков не увидел. Исправляй эти пока


    Silver Break
    http://s-break.ru/
    http://vk.com/sbreak
  • _BigSm0ke_Дата: Понедельник, 25.06.2012, 00:03 | Сообщение # 3
    Местный
    Группа: I'm V.I.P.
    Сообщений: 674
    Награды: 5
    Город: Москва
    Репутация: 127
    Замечания: 0%
    Статус:
    насчет первого я знаю, просто чтобы без смещений этих было начинаю с 1 .. а то запутаюсь....
    насчет второго ок...
    все равно данные все считываются нормально, в массив записываются, проверено, а машина не создается.. почему?



    LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
    Продаю РП мод: подробнее тут
    Решаю задачи по техническим дисциплинам, подробнее тут
    KämpferДата: Понедельник, 25.06.2012, 01:09 | Сообщение # 4
    Освоившийся
    Группа: Продвинутые
    Сообщений: 114
    Награды: 15
    Город: /
    Репутация: 163
    Замечания: 40%
    Статус:
    Идет обработка первого запроса, он прерывается вторым => первый уже не продолжиться, у тебя полученные результаты заменены новыми со 2 запроса.. Зачем тут 2 запроса не понятно, достаточно одного:
    Code
    stock    LoadCarInfo( )  
    {  
        
       mysql_query( "SELECT * FROM `pcars`" );  
       mysql_store_result( );  
       if( !mysql_num_rows( ) ) print( "Таблица пуста!" );  
       else
       {
        new result[1024];  
        while( mysql_fetch_row_format( result, "|" ) )
        {
         sscanf( result, "p<|>iiiiiiiffffii",  CarInfo[ i ][ cID ],  
                                  CarInfo[ i ][ cOwnerID ],  
                                  CarInfo[ i ][ cModel ],  
                                  CarInfo[ i ][ cCost ],  
                                  CarInfo[ i ][ cSale ],  
                                  CarInfo[ i ][ cWeapon ],  
                                  CarInfo[ i ][ cAmmo ],  
                                  CarInfo[ i ][ cx ],  
                                  CarInfo[ i ][ cy ],  
                                  CarInfo[ i ][ cz ],  
                                  CarInfo[ i ][ cangle ],  
                                  CarInfo[ i ][ cColor1 ],  
                                  CarInfo[ i ][ cColor2 ] );  
        }
        print( "Данные выгружены!" );  
       }
       mysql_free_result( );  
       return true;  
    }

    Добавлено (25.06.2012, 01:09)
    ---------------------------------------------
    забыл переменную i инициализировать и прибавлять, там сам уже разберешься!


    Гитлер капут

    Можно сопротивляться вторжению армий, вторжению идей сопротивляться невозможно. ©

    Оплачиваемая личная помощь, исправление и оптимизация кода, написание небольших скриптов.
    skype: kampfer_88
    _BigSm0ke_Дата: Понедельник, 25.06.2012, 11:27 | Сообщение # 5
    Местный
    Группа: I'm V.I.P.
    Сообщений: 674
    Награды: 5
    Город: Москва
    Репутация: 127
    Замечания: 0%
    Статус:
    первый запрос чтобы посчитать к-во записей и сохранить их в переменную car_num


    LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
    Продаю РП мод: подробнее тут
    Решаю задачи по техническим дисциплинам, подробнее тут
    _BigSm0ke_Дата: Понедельник, 25.06.2012, 13:36 | Сообщение # 6
    Местный
    Группа: I'm V.I.P.
    Сообщений: 674
    Награды: 5
    Город: Москва
    Репутация: 127
    Замечания: 0%
    Статус:
    Народ ну помогите в чем проблема... я не пойму.. вот .. упрощу даже задачу...
    есть команда:
    Code
    CMD:cveh(playerid, params[])
    {
         new i=1;
         CreateVehicle(CarInfo[i][cModel],CarInfo[i][cx],CarInfo[i][cy],CarInfo[i][cz],CarInfo[i][cangle],CarInfo[i][cColor1],CarInfo[i][cColor2],0);
         new strstr[512];
         format(strstr,sizeof(strstr),"id=%d,model=%d,x: %f, y: %f, z: %f,angle=%f",CarInfo[i][cID],CarInfo[i][cModel],CarInfo[i][cx],CarInfo[i][cy],CarInfo[i][cz],CarInfo[i][cangle]);
         SendClientMessage(playerid,COLOR_LTBLUE,strstr);
         return 1;
    }


    вот что в игре

    [cut noguest=результат от команды 1]

    [/cut]

    Хотя если я например сделаю вот такую команду:

    Code
    CMD:cveh(playerid, params[])
    {
         new i=1;
          new Float:px,Float:py,Float:pz;
          GetPlayerPos(playerid,px,py,pz);
          CreateVehicle(CarInfo[i][cModel],px,py,pz,CarInfo[i][cangle],CarInfo[i][cColor1],CarInfo[i][cColor2],0);
         //CreateVehicle(CarInfo[i][cModel],CarInfo[i][cx],CarInfo[i][cy],CarInfo[i][cz],CarInfo[i][cangle],CarInfo[i][cColor1],CarInfo[i][cColor2],0);
         new strstr[512];
         format(strstr,sizeof(strstr),"id=%d,model=%d,x: %f, y: %f, z: %f,angle=%f",CarInfo[i][cID],CarInfo[i][cModel],px,py,pz,CarInfo[i][cangle]);
         SendClientMessage(playerid,COLOR_LTBLUE,strstr);
         return 1;
    }


    то машина сразу создается...

    [cut noguest=результат от команды 2]

    [/cut]

    получается проблема в координатах... но какая?? ....что за бред? помогите плиз



    LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
    Продаю РП мод: подробнее тут
    Решаю задачи по техническим дисциплинам, подробнее тут


    Сообщение отредактировал _BigSm0ke_ - Понедельник, 25.06.2012, 13:43
    ПлохишДата: Понедельник, 25.06.2012, 14:25 | Сообщение # 7
    Новенький
    Группа: Пользователи
    Сообщений: 62
    Награды: 0
    Город: Йошкар-Ола
    Репутация: -93
    Замечания: 60%
    Статус:
    _BigSm0ke_, я не понял, в чем у тебя проблема?
    если ты хочешь узнать почему создается машина, то во втором случае, ты узнаешь координаты местоположения игрока и создаешь там машину, а в первом, ты координаты загружаешь насколько я понял из файла и машина не создается, т.к. либо неправильно прописаны координаты в файле, либо их вообще нету.



    Plohysh Style
    [img]http://s006.radikal.ru/i214/1206/5e/893d7989eb30.gif[/img]
    КАК ВСТАВИТЬ КАРТИНКУ В ПОДПИСЬ?!?!!?
    _BigSm0ke_Дата: Понедельник, 25.06.2012, 15:54 | Сообщение # 8
    Местный
    Группа: I'm V.I.P.
    Сообщений: 674
    Награды: 5
    Город: Москва
    Репутация: 127
    Замечания: 0%
    Статус:
    а че по скрину не видно чтоли что в первом случае координаты нормальные? а машина почему то блин не создается....


    LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
    Продаю РП мод: подробнее тут
    Решаю задачи по техническим дисциплинам, подробнее тут
    SoupДата: Понедельник, 25.06.2012, 16:56 | Сообщение # 9
    Новенький
    Группа: Пользователи
    Сообщений: 26
    Награды: 0
    Город: Москоу
    Репутация: -386
    Замечания: 100%
    Статус:
    Проблема в цикле.
    for(new i = 1; i == car_num; i++)

    Что такое car num и с чем его едят ?
    Попробуй так:

    Code
    for(new i = 1; i == car_num; i++)
        {
            if(CarInfo[i][cSale] ==1)
            {
            car_num ++;
          CarMassive[i] = CreateVehicle(CarInfo[i][cModel],CarInfo[i][cx],CarInfo[i][cy],CarInfo[i][cz],CarInfo[i][cangle],CarInfo[i][cColor1],CarInfo[i][cColor2],1);
          printf("CarMassive[%d]=%d",i,CarMassive[i]);
         }
        }


    Либо:

    Quote
    for(new i = 1; i < car_num; i++)
    {
    if(CarInfo[i][cSale] ==1)
    {
    CarMassive[i] = CreateVehicle(CarInfo[i][cModel],CarInfo[i][cx],CarInfo[i][cy],CarInfo[i][cz],CarInfo[i][cangle],CarInfo[i][cColor1],CarInfo[i][cColor2],1);
    printf("CarMassive[%d]=%d",i,CarMassive[i]);
    }

    KämpferДата: Понедельник, 25.06.2012, 21:36 | Сообщение # 10
    Освоившийся
    Группа: Продвинутые
    Сообщений: 114
    Награды: 15
    Город: /
    Репутация: 163
    Замечания: 40%
    Статус:
    _BigSm0ke_, вы меня, конечно, извините, но вы идиот или да?
    Я постом выше все разжевал и даже ВСЕ за вас написал, в чем трудность взять мой код и разобрать, ебн*й в рот, совсем обленились "скриптеры"...



    Гитлер капут

    Можно сопротивляться вторжению армий, вторжению идей сопротивляться невозможно. ©

    Оплачиваемая личная помощь, исправление и оптимизация кода, написание небольших скриптов.
    skype: kampfer_88
    _BigSm0ke_Дата: Понедельник, 25.06.2012, 23:49 | Сообщение # 11
    Местный
    Группа: I'm V.I.P.
    Сообщений: 674
    Награды: 5
    Город: Москва
    Репутация: 127
    Замечания: 0%
    Статус:
    я конечно извиню вас, но все что вы пишите мне не надо и система сохранения и загрузки данных из бд у меня работает как часы... а проблема была в другом и она уже решена, так что спасибо за внимание, тему можете закрыть...


    LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
    Продаю РП мод: подробнее тут
    Решаю задачи по техническим дисциплинам, подробнее тут
    KämpferДата: Вторник, 26.06.2012, 00:21 | Сообщение # 12
    Освоившийся
    Группа: Продвинутые
    Сообщений: 114
    Награды: 15
    Город: /
    Репутация: 163
    Замечания: 40%
    Статус:
    Quote (_BigSm0ke_)
    но все что вы пишите мне не надо и система сохранения и загрузки данных из бд у меня работает как часы...

    эт вряд ли, после выложенного кода выше, который осуществляет взаимодействие с базой (запросы)...
    Там где достаточно одного запроса после которого циклом можно обработать все полученные из базы данные, у вас 2 запроса, да и к тому же в случае удаления например элемента с идентификатором (идом) 3, вы уже потеряете одну запись (в конце), при выгрузке данных в мод.
    Вприцнипи если вы не принимаете советов, тех кто знает поболее вас, то смысла что-то объяснять я не вижу, удачи.



    Гитлер капут

    Можно сопротивляться вторжению армий, вторжению идей сопротивляться невозможно. ©

    Оплачиваемая личная помощь, исправление и оптимизация кода, написание небольших скриптов.
    skype: kampfer_88
    _BigSm0ke_Дата: Среда, 27.06.2012, 16:41 | Сообщение # 13
    Местный
    Группа: I'm V.I.P.
    Сообщений: 674
    Награды: 5
    Город: Москва
    Репутация: 127
    Замечания: 0%
    Статус:
    Quote (Kämpfer)
    эт вряд ли, после выложенного кода выше, который осуществляет взаимодействие с базой (запросы)...
    Там где достаточно одного запроса после которого циклом можно обработать все полученные из базы данные, у вас 2 запроса, да и к тому же в случае удаления например элемента с идентификатором (идом) 3, вы уже потеряете одну запись (в конце), при выгрузке данных в мод.
    Вприцнипи если вы не принимаете советов, тех кто знает поболее вас, то смысла что-то объяснять я не вижу, удачи.


    да чето я погорячился)) Я понял что вы имеете ввиду...

    Quote (Kämpfer)
    stock    LoadCarInfo( )  
    {  
        
       mysql_query( "SELECT * FROM `pcars`" );  
       mysql_store_result( );  
       if( !mysql_num_rows( ) ) print( "Таблица пуста!" );  
       else
       {
        new result[1024];  
        while( mysql_fetch_row_format( result, "|" ) )
        {
         sscanf( result, "p<|>iiiiiiiffffii",  CarInfo[ i ][ cID ],  
                                  CarInfo[ i ][ cOwnerID ],  
                                  CarInfo[ i ][ cModel ],  
                                  CarInfo[ i ][ cCost ],  
                                  CarInfo[ i ][ cSale ],  
                                  CarInfo[ i ][ cWeapon ],  
                                  CarInfo[ i ][ cAmmo ],  
                                  CarInfo[ i ][ cx ],  
                                  CarInfo[ i ][ cy ],  
                                  CarInfo[ i ][ cz ],  
                                  CarInfo[ i ][ cangle ],  
                                  CarInfo[ i ][ cColor1 ],  
                                  CarInfo[ i ][ cColor2 ] );  
        }
        print( "Данные выгружены!" );  
       }
       mysql_free_result( );  
       return true;  
    }


    можете поподробнее расписать как тут считывание происходит? немогу понять... вы сразу всю таблицу считываете а как потом данные в массив заносятся? чето несоображу...



    LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
    Продаю РП мод: подробнее тут
    Решаю задачи по техническим дисциплинам, подробнее тут
    KämpferДата: Среда, 27.06.2012, 16:52 | Сообщение # 14
    Освоившийся
    Группа: Продвинутые
    Сообщений: 114
    Награды: 15
    Город: /
    Репутация: 163
    Замечания: 40%
    Статус:
    SELECT * FROM `pcars`- данный запрос "вытащит" все поля из таблицы pcars, далее, функцией mysql_num_rows( ) - проверяем, если вернуло 0 полей, то просто сообщаем что таблица пуста и все, если же их > 0 то запускаем цикл, while( mysql_fetch_row_format( result, "|" ) ) - который будет выполнятся пока не будет обработана каждая строка таблицы, при каждом проходе цикла, в result записывается новая строка из БД, в которой поля написаны единой строкой и разделяются знаком "|", разделить каждое поле и записать в свою ячейку нам помогает функция sscanf, она раскидывает каждое значение в свою ячейку массива CarInfo, и дальше перескакивает на следующую строку которую вернул запрос, тем самым мы просто циклом перебираем все, вернувшиеся нам в результате запроса, строки таблицы. Ну и в конце мы освобождаем результаты которые были сохранены в памяти плагина после запроса, функцией mysql_free_result( ), собственно все.


    Гитлер капут

    Можно сопротивляться вторжению армий, вторжению идей сопротивляться невозможно. ©

    Оплачиваемая личная помощь, исправление и оптимизация кода, написание небольших скриптов.
    skype: kampfer_88
    _BigSm0ke_Дата: Среда, 27.06.2012, 21:14 | Сообщение # 15
    Местный
    Группа: I'm V.I.P.
    Сообщений: 674
    Награды: 5
    Город: Москва
    Репутация: 127
    Замечания: 0%
    Статус:
    а сохранять как машины лучше?


    LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
    Продаю РП мод: подробнее тут
    Решаю задачи по техническим дисциплинам, подробнее тут
    • Страница 1 из 2
    • 1
    • 2
    • »
    Поиск:





     


     


     
    Хостинг от uCoz samp.at.ua