PDA

Просмотр полной версии : [Вопрос] Проблема с недвижимостью



Snoop_Dog
17.05.2015, 11:27
Всем Здравствуйте!
Вообщем сделал бизнес нефтевышка но есть проблема, когда создаю нефтевышку через команду(все записывается в БД).
Создал 2 нефтевышки, в БД у переменной "ID" Стоить Дополнение AUTO_INCREMENT и нефтевышки записываются с "ID" = 1(а не с 0)
Но когда запускаю мод подходя к этим нефтевышкам показывает с 0 "ID".

Купив нефтевышку с ID = 0 не чего не происходит,
Купив нефтевышку с ID = 1 все записывается в БД как надо, но после захода на сервер подходя к нефтевышки с ID = 1 она продается а у нефтевышки с ID = 0 Показывает Имя игрока который купил,

В БД записывается все правильно с ID = 1

Убрав AUTO_INCREMENT с переменной ID все создается но когда создаёшь одну нефтевышку она записывается,но создав 2-ю в логе выходит такая вот ошибка - Duplicate entry '0' for key 'PRIMARY'
И в БД записывается только одна нефтевышка это с ID = 0.

Как решить проблему не подскажите?

Daniel_Cortez
17.05.2015, 11:42
Всё очень просто, оставьте AUTO_INCREMENT и при загрузке данных из базы считывайте в 0-й слот данные из 1-й записи в БД, в 1-й слот - из 2-й и т.д.
Покажу на примере двух массивов:


// исходный массив
new a[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 11 ячеек
// в массив B нужно скопировать данные из массива A, не считая 0-й ячейки:
new b[sizeof(a)-1]; // 10 ячеек
for(new i=0; i<sizeof(b); ++i)
b[i] = a[i+1];
// теперь выведем содержимое массива B:
for(new i=0; i<sizeof(b); ++i)
printf("B[%d] = %d", i, b[i]);
// будут выведены числа от 1 до 10, число 0 не попадёт в B

Надеюсь, уловили идею.

Snoop_Dog
18.05.2015, 13:52
Всё очень просто, оставьте AUTO_INCREMENT и при загрузке данных из базы считывайте в 0-й слот данные из 1-й записи в БД, в 1-й слот - из 2-й и т.д.
Покажу на примере двух массивов:


// исходный массив
new a[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 11 ячеек
// в массив B нужно скопировать данные из массива A, не считая 1-й ячейки:
new b[sizeof(a)-1]; // 10 ячеек
for(new i=0; i<sizeof(b); ++i)
b[i] = a[i+1];
// теперь выведем содержимое массива B:
for(new i=0; i<sizeof(b); ++i)
printf("B[%d] = %d", i, b[i]);
// будут выведены числа от 1 до 10, число 0 не попадёт в B

Надеюсь, уловили идею.

Все получилось. Спасибо!