PDA

Просмотр полной версии : [Вопрос] Не спавнятся (не загружаются) авто



SteveStage
13.11.2019, 21:30
Вот код:

public OnGameModeInit()
{
mysql_function_query(connect_mysql, "SELECT * FROM `cars`", true, "@_LoadCars", "");
return true;
}
@_LoadCars();
@_LoadCars()
{
new
rows,
fields;
cache_get_data(rows, fields);

for(new i; i != rows; i++)
{
car[i][cModel] = cache_get_field_content_int(i, "Model");
car[i][cX] = cache_get_field_content_float(i, "X");
car[i][cY] = cache_get_field_content_float(i, "Y");
car[i][cZ] = cache_get_field_content_float(i, "Z");
car[i][cZ] = cache_get_field_content_float(i, "A");
car[i][cHP] = cache_get_field_content_float(i, "HP");
car[i][cColor1] = cache_get_field_content_int(i, "Color1");
car[i][cColor2] = cache_get_field_content_int(i, "Color2");
car[i][cDmg1] = cache_get_field_content_int(i, "Dmg1");
car[i][cDmg2] = cache_get_field_content_int(i, "Dmg2");
car[i][cDmg3] = cache_get_field_content_int(i, "Dmg3");
car[i][cDmg4] = cache_get_field_content_int(i, "Dmg4");
car[i][cPrice] = cache_get_field_content_int(i, "Price");
car[i][cID] = cache_get_field_content_int(i, "ID");
car[i][cPaintjob] = cache_get_field_content_int(i, "Paintjob");
cache_get_field_content(i, "Name", car[i][cName], MAX_PLAYER_NAME+1);
allcars++;
if(!strcmp(car[i][cName], "None"))
allbuycars++;
LoadInfoCar(i);
}
return true;
}
stock LoadInfoCar(i)
{
car[i][cVeh] = CreateVehicle(car[i][cModel], car[i][cX], car[i][cY], car[i][cZ], car[i][cA], car[i][cColor2], car[i][cColor2], 0);
UpdateVehicleDamageStatus(car[i][cVeh], car[i][cDmg1], car[i][cDmg2], car[i][cDmg3], car[i][cDmg4]);
SetVehicleHealth(car[i][cVeh], car[i][cHP]);
if(car[i][cPaintjob] > 0)
ChangeVehiclePaintjob(car[i][cVeh], car[i][cPaintjob]-1);
else if(!strcmp(car[i][cName], "None"))
{
car[i][cPrice] = ModelPrice[car[i][cModel]-400];
static const
fmt_str[] = "Автомобиль продается за %d$";
new
str[sizeof(fmt_str)-2+11+1];
format(str, sizeof(str), fmt_str, car[i][cPrice]);
car[i][cTDPrice] = CreateDynamic3DTextLabel(str, COLOR_YELLOW, 0, 0, 0.6, 20.0, INVALID_PLAYER_ID, i, 0, -1, -1, -1, 100.0);
}
return true;
}
enum cInfo {
cVeh, cName[MAX_PLAYER_NAME+1], cID, Float:cX, Float:cY, Float:cZ, Float:cA, cModel, cClass, cColor1, cColor2, cDmg1, cDmg2, cDmg3, cDmg4, Float:cHP,
cPrice, cPaintjob, Text3D:cTDPrice
} // classes: economy, standart, comfort, sport (4)
new
car[MAX_VEHICLES][cInfo],
allcars,
allbuycars;

Но загрузки авто не происходит, хотелось бы узнать, почему (транспорт не спавнится)

https://pixs.ru/image/wR9Rw

Вот таблица

UnO
14.11.2019, 01:41
Логируй каждый этап выполнения этого кода и найдёшь трабл.
Кроме того, в первую очередь я бы mysql_log чекнул.

Daniel_Cortez
14.11.2019, 06:22
Беглым взглдом удалось заметить вот это:

car[i][cZ] = cache_get_field_content_float(i, "Z");
car[i][cZ] = cache_get_field_content_float(i, "A");

Угол поворота сохраняется не в то поле, перезаписывая координату Z.

DeimoS
14.11.2019, 14:31
А так же не по теме вопроса, но я бы советовал давать наименование столбцам/таблицам строго в нижнем регистре и в единственном числе, разделяя слова нижним слэшем. Это в разы уменьшит шанс допущения опечаток (что очень легко сделать с разным регистром) и упростит запоминание названий столбцов.

SteveStage
18.11.2019, 14:05
Логируй каждый этап выполнения этого кода и найдёшь трабл.
Кроме того, в первую очередь я бы mysql_log чекнул.

В том то и дело, что mysql_log не появляется

DeimoS
18.11.2019, 14:10
В том то и дело, что mysql_log не появляется

Ну так значит синтаксических ошибок в запросе нет и нужно либо логические ошибки искать, либо искать проблему в коде загрузки. Вон уже Daniel_Cortez указал тебе на ошибку, которая и может быть причиной.
Ну а если даже после исправления указанной ошибки не исправится ничего, то, как уже написали, printf в зубы и проверяешь какие данные и как загружаются, а после сравниваешь их с тем, что у тебя в БД.

SteveStage
18.11.2019, 14:10
Беглым взглдом удалось заметить вот это:

car[i][cZ] = cache_get_field_content_float(i, "Z");
car[i][cZ] = cache_get_field_content_float(i, "A");

Угол поворота сохраняется не в то поле, перезаписывая координату Z.

Проблема не в этом



Ну а если даже после исправления указанной ошибки не исправится ничего, то, как уже написали, printf в зубы и проверяешь какие данные и как загружаются, а после сравниваешь их с тем, что у тебя в БД.

Ок, отпишу

Странно, но после срабатывания паблика OnGameModeInit координаты Y, Z в таблице обнуляются, и они уже логируются нулями

SteveStage
18.11.2019, 15:41
Почему в таблице не сохраняются данные после ввода их в столбцы?

DeimoS
18.11.2019, 15:48
Для начала опиши порядок своих действий и дай код

SteveStage
18.11.2019, 15:55
https://www.youtube.com/watch?v=L1FRyAnyBuo&feature=youtu.be

Вот наглядный пример

DeimoS
18.11.2019, 16:15
А столбец ID сделать AUTO_INCREMENT, не? Это как минимум.

SteveStage
18.11.2019, 16:44
https://ibb.co/fYtjMsj

Хотя в таблице с аккаунтами точно такое же поле с AI

DeimoS
18.11.2019, 16:53
Удали столбец и создай его по новой, сразу указав для него AI

SteveStage
18.11.2019, 16:58
Сработало, дело в Auto Increment столбца ID

DeimoS
18.11.2019, 17:15
Вопрос решён? Или ты про изменение данных в таблице?

SteveStage
18.11.2019, 17:20
Вопрос решён. Я про таблицу, но дело было именно в этом