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

 



 
          





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





Последние Файлы 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  
[Решено] [MYSQL] Нужна помощь с системой машин
KirjaДата: Понедельник, 19.12.2011, 23:08 | Сообщение # 1
Новенький
Группа: Продвинутые
Сообщений: 35
Награды: 1
Город: Tallinn
Репутация: 5
Замечания: 0%
Статус:
Всем привет!

Кто может помочь переделать файловую систему личных авто на mysql?
А точнее переписать паблик загрузки авто из mysql:
Code
public LoadCar()
{
  new arrCoords[13][64];
  new strFromFile2[256];
  new File: file = fopen("cars.cfg", io_read);
  if (file)
  {
   new idx = 0;
   while (idx < sizeof(CarInfo))
   {
    fread(file, strFromFile2);
    split(strFromFile2, arrCoords, ',');
    CarInfo[idx][cModel] = strval(arrCoords[0]);
    CarInfo[idx][cLocationx] = floatstr(arrCoords[1]);
    CarInfo[idx][cLocationy] = floatstr(arrCoords[2]);
    CarInfo[idx][cLocationz] = floatstr(arrCoords[3]);
    CarInfo[idx][cAngle] = floatstr(arrCoords[4]);
    CarInfo[idx][cColorOne] = strval(arrCoords[5]);
    CarInfo[idx][cColorTwo] = strval(arrCoords[6]);
    strmid(CarInfo[idx][cOwner], arrCoords[7], 0, strlen(arrCoords[7]), 255);
    strmid(CarInfo[idx][cDescription], arrCoords[8], 0, strlen(arrCoords[8]), 255);
    CarInfo[idx][cValue] = strval(arrCoords[9]);
    CarInfo[idx][cOwned] = strval(arrCoords[10]);
    CarInfo[idx][cLock1] = strval(arrCoords[11]);
    CarInfo[idx][cNumber] = strval(arrCoords[12]);
    printf("CarInfo: %d Owner:%s",idx,CarInfo[idx][cOwner]);
    idx++;
   }
  }
  return 1;
}

И паблик сохранения авто в mysql:
Code
public OnPropUpdate()
{
  new idx;
  new File: file2;
   while (idx < sizeof(CarInfo))
  {
   new coordsstring[256];
   format(coordsstring, sizeof(coordsstring), "%d,%f,%f,%f,%f,%d,%d,%s,%s,%d,%d,%d,%d\n",
   CarInfo[idx][cModel],//
   CarInfo[idx][cLocationx],//
   CarInfo[idx][cLocationy],//
   CarInfo[idx][cLocationz],//
   CarInfo[idx][cAngle],//
   CarInfo[idx][cColorOne],//
   CarInfo[idx][cColorTwo],//
   CarInfo[idx][cOwner],//
   CarInfo[idx][cDescription],//
   CarInfo[idx][cValue],//
   CarInfo[idx][cOwned],//
   CarInfo[idx][cLock],
   CarInfo[idx][cNumber]);
   if(idx == 0)
   {
    file2 = fopen("cars.cfg", io_write);
   }
   else
   {
    file2 = fopen("cars.cfg", io_append);
   }
   fwrite(file2, coordsstring);
   idx++;
   fclose(file2);
  }
  return 1;
}


С меня + за помощь!

Fus1Дата: Вторник, 20.12.2011, 02:39 | Сообщение # 2
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
не знаю, в mysql не разбираюсь вообще, ну вот пример как я понял wall

Code
stock bool: LoadCars()
{
     new idx, Field[32], Data[512];
     idx = 2;
   mysql_query("SELECT * FROM `cars`");
    mysql_store_result();
     while(mysql_fetch_row_format(Data, "|"))
     {
      if(idx > sizeof(CarInfo)) break;
   mysql_fetch_field_row(Field, "ID");    Carinfo[idx][ID] = strval(Field);
   idx++;
  }
  mysql_free_result();
  printf("Cars Load: %d", idx-2);
    return true;
}


// Сохранение авто
Code
stock bool: SaveCars(const carid)
{
  new string[512];
  format(string, sizeof(string), "UPDATE `cars` SET `Model`=%d,\",
  CarInfo[carid][cModel]);
  mysql_query(string);
  return true;
}

KirjaДата: Вторник, 20.12.2011, 10:37 | Сообщение # 3
Новенький
Группа: Продвинутые
Сообщений: 35
Награды: 1
Город: Tallinn
Репутация: 5
Замечания: 0%
Статус:
уж слишком маленький код на мой взгляд, мне кажется надо чуть по другому делать.
Fus1Дата: Вторник, 20.12.2011, 11:08 | Сообщение # 4
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Kirja, я тебе написал в пример по 1 функции, остальные переменные добавляй сам.
IInkvizitorДата: Вторник, 20.12.2011, 11:50 | Сообщение # 5
Советчик
Группа: I'm V.I.P.
Сообщений: 1177
Награды: 7
Город: Санкт-Петербург
Репутация: 493
Замечания: 0%
Статус:
Чисто теоретически- открытие файла заменить на соеденение с базой, чтение строки на выборку, изменение или добавление на запросы с UPDATE и INSERT. Не понимаю, в чем сложность?
KirjaДата: Вторник, 20.12.2011, 13:18 | Сообщение # 6
Новенький
Группа: Продвинутые
Сообщений: 35
Награды: 1
Город: Tallinn
Репутация: 5
Замечания: 0%
Статус:
Fus1, кстати, почему idx = 2 если у меня 0 было? :)
ImperealistДата: Вторник, 20.12.2011, 15:53 | Сообщение # 7
Уверенный в себе
Группа: Продвинутые
Сообщений: 205
Награды: 10
Город: Санкт-Петербург
Репутация: 518
Замечания: 100%
Статус:
Если вы не умеете работать с mysql, зачем мод переводить на работу с базой данных?

Code
public LoadCar()  
{  
  mysql_query("SELECT * FROM `vehicles`");
  mysql_store_result();
  if(mysql_num_rows())
  {
   new  
    result[512],
    i = 0;  
   while(mysql_fetch_row_format(result, "|"))
   {
    sscanf(result, "p<|>iffffiis[32]s[32]iiii",  
    CarInfo[i][cModel],
    CarInfo[i][cLocationx],
    CarInfo[i][cLocationy],
    CarInfo[i][cLocationz],
    CarInfo[i][cAngle],
    CarInfo[i][cColorOne],
    CarInfo[i][cColorTwo],
    CarInfo[i][cOwner],
    CarInfo[i][cDescription],
    CarInfo[i][cValue],
    CarInfo[i][cOwned],
    CarInfo[i][cLock1],
    CarInfo[i][cNumber]);  
    printf("CarInfo: %d Owner:%s", i, CarInfo[i][cOwner]);  
    i++;
    mysql_next_row();
   }
   mysql_free_result();
  }
  else print("The table is empty!");
  return 1;  
}



Soviet Connection - open!


KirjaДата: Вторник, 20.12.2011, 17:27 | Сообщение # 8
Новенький
Группа: Продвинутые
Сообщений: 35
Награды: 1
Город: Tallinn
Репутация: 5
Замечания: 0%
Статус:
Imperealist, пытаюсь понять что и как работает, если не сложно, опиши пожалуйста функции, что и как работает.
ImperealistДата: Вторник, 20.12.2011, 19:00 | Сообщение # 9
Уверенный в себе
Группа: Продвинутые
Сообщений: 205
Награды: 10
Город: Санкт-Петербург
Репутация: 518
Замечания: 100%
Статус:
Quote (Imperealist)
mysql_query

Отправляет запрос базе данных.
Quote (Imperealist)
mysql_store_result

Получает и запоминает результат.
Quote (Imperealist)
mysql_num_rows

Возвращает кол-во строк которые вернула БД по запросу.
Quote (Imperealist)
mysql_fetch_row_format(result, "|")

записывает текущую строку в result, разделяя поля символом '|'.
Quote (Imperealist)
mysql_next_row();

Переходит на следующую строку.

Что происходит в моем коде:
Отправляем запрос "SELECT * FROM `vehicles`" - который получает всю таблицу vehicles.

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

sscanf - разделяет всю строку и записывает все значения в необходимые поля.

Добавлено (20.12.2011, 19:00)
---------------------------------------------

Quote (Imperealist)
разделяет всю строку и записывает все значения в необходимые поля.

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



Soviet Connection - open!


KirjaДата: Вторник, 20.12.2011, 19:17 | Сообщение # 10
Новенький
Группа: Продвинутые
Сообщений: 35
Награды: 1
Город: Tallinn
Репутация: 5
Замечания: 0%
Статус:
как я понял в sscanf i = int, s = string и f = float верно?
ImperealistДата: Вторник, 20.12.2011, 19:25 | Сообщение # 11
Уверенный в себе
Группа: Продвинутые
Сообщений: 205
Награды: 10
Город: Санкт-Петербург
Репутация: 518
Замечания: 100%
Статус:
Kirja, да, там очень много особеннстей и возможностей форматирования.
Подробнее: http://forum.sa-mp.com/showthread.php?t=120356



Soviet Connection - open!


KirjaДата: Вторник, 20.12.2011, 22:47 | Сообщение # 12
Новенький
Группа: Продвинутые
Сообщений: 35
Награды: 1
Город: Tallinn
Репутация: 5
Замечания: 0%
Статус:
у меня проблема, я пользуюсь библиотекой a_sampmysql.inc и там нету mysql_next_row(); и mysql_fetch_row_format(result, "|") , чем их можно заменить?
ImperealistДата: Вторник, 20.12.2011, 23:26 | Сообщение # 13
Уверенный в себе
Группа: Продвинутые
Сообщений: 205
Награды: 10
Город: Санкт-Петербург
Репутация: 518
Замечания: 100%
Статус:
Kirja, Скачать нормальный плагин от Джи Стайла...


Soviet Connection - open!


KirjaДата: Вторник, 20.12.2011, 23:40 | Сообщение # 14
Новенький
Группа: Продвинутые
Сообщений: 35
Награды: 1
Город: Tallinn
Репутация: 5
Замечания: 0%
Статус:
у меня и так плагин от g-stylez, у меня инклуды павно другие
ВеликсДата: Вторник, 20.12.2011, 23:52 | Сообщение # 15
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
Quote (Kirja)
у меня и так плагин от g-stylez, у меня инклуды павно другие

Инклуд один, а плагин другой?.. Извращенцы =\



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


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