MySQL | Система личного Т.С.
#1

Начал создавать систему личного Т.С.
Столкнулся с такой проблемой что транспорт тупо не выгружается из Базы Данных.
PHP Code:
enum E_VEHICLE_DATA {
    
ORM_v_ormid,
    
_v_stream_id,
    
_v_stream_url[128],
    
// mysql synced
    
v_uid,
    
v_model,
    
v_owner,
    
Floatv_pos_x,
    
Floatv_pos_y,
    
Floatv_pos_z,
    
Floatv_angle,
    
Floatv_fuel,
    
v_paint_job,
    
v_color_1,
    
v_color_2,
    
v_component[10],
    
Floatv_cost
}
new 
V[MAX_VEHICLES][E_VEHICLE_DATA]; 
Если прогонять через цикл (т.е. sizeof V) то делается 2000 тыс. проверок и машина появляется...но, этот вариант мне не подходит, по скольку Т.С. нужно спавнить при входе игрока на сервер, поэтому в диалоге, который отвечает за успешный вход, я добавил следующее:
PHP Code:
        new P[playerid][p_vehicle];
        new 
ORMormid V[x][_v_ormid] = orm_create("vehicles");
        
orm_addvar_int(ormidV[x][v_uid], "VID");
        
orm_setkey(ormid"VID");
        
orm_addvar_int(ormidV[x][v_model], "Model");
        
orm_addvar_int(ormidV[x][v_owner], "Owner");
        
orm_addvar_float(ormidV[x][v_pos_x], "Pos_X");
        
orm_addvar_float(ormidV[x][v_pos_y], "Pos_Y");
        
orm_addvar_float(ormidV[x][v_pos_z], "Pos_Z");
        
orm_addvar_float(ormidV[x][v_angle], "Angle");
        
orm_addvar_float(ormidV[x][v_fuel], "Fuel");
        
orm_addvar_int(ormidV[x][v_paint_job], "Paint_Job");
        
orm_addvar_int(ormidV[x][v_color_1], "Color_1");
        
orm_addvar_int(ormidV[x][v_color_2], "Color_2");
        
orm_addvar_float(ormidV[x][v_cost], "Cost");
        
va_SendClientMessage(playerid,-1,"%d",V[playerid][v_model]); // для дебага
        
orm_select(ormid"OnMySQL_SelectVehicles""d"playerid); 
PHP Code:
//тут уже проверка на то есть ли у игрока Т.С. или нет.
forward OnMySQL_SelectVehicles(playerid);
public 
OnMySQL_SelectVehicles(playerid)
{
    if(
P[playerid][p_vehicle] >= 1){
        
SendClientMessage(playerid,-1,"asda");
        new 
P[playerid][p_vehicle];
        
Vehicle_Add(V[x][v_model],V[x][v_pos_x],V[x][v_pos_y],V[x][v_pos_z],V[x][v_angle],V[x][v_color_1],V[x][v_color_2]);
        
va_SendClientMessage(playerid,-1,"%d | %.4f | %.4f | %.4f | %.4f | %d | %d",V[x][v_model],V[x][v_pos_x],V[x][v_pos_y],V[x][v_pos_z],V[x][v_angle],V[x][v_color_1],V[x][v_color_2]);
    }

Тут проблема в том что везде пишет 0, а если это Float, то 00.0000.
Я еще пробовал сделать так:
PHP Code:
//не работает
new P[playerid][p_vehicle];
V[x][v_model]...
//не работает
V[playerid][v_model
Что-бы я не пробовал, всегда вижу одно число: 0

Как я делал через цикл:
PHP Code:
forward OnMySQL_SelectVehicles();
public 
OnMySQL_SelectVehicles()
{
    for(new 
x=0sizeof(V); x++){
        
V[x][_v_ormid] = orm_create("vehicles");
        
orm_addvar_int(V[x][_v_ormid], V[x][v_uid], "VID");
        
orm_setkey(V[x][_v_ormid], "VID");
        
orm_addvar_int(V[x][_v_ormid], V[x][v_model], "Model");
        
orm_addvar_int(V[x][_v_ormid], V[x][v_owner], "Owner");
        
orm_addvar_float(V[x][_v_ormid], V[x][v_pos_x], "Pos_X");
        
orm_addvar_float(V[x][_v_ormid], V[x][v_pos_y], "Pos_Y");
        
orm_addvar_float(V[x][_v_ormid], V[x][v_pos_z], "Pos_Z");
        
orm_addvar_float(V[x][_v_ormid], V[x][v_angle], "Angle");
        
orm_addvar_float(V[x][_v_ormid], V[x][v_fuel], "Fuel");
        
orm_addvar_int(V[x][_v_ormid], V[x][v_paint_job], "Paint_Job");
        
orm_addvar_int(V[x][_v_ormid], V[x][v_color_1], "Color_1");
        
orm_addvar_int(V[x][_v_ormid], V[x][v_color_2], "Color_2");
        
orm_addvar_float(V[x][_v_ormid], V[x][v_cost], "Cost");
        
orm_apply_cache(V[x][_v_ormid], x);
        
Vehicle_Add(V[x][v_model],V[x][v_pos_x],V[x][v_pos_y],V[x][v_pos_z],V[x][v_angle],V[x][v_color_1],V[x][v_color_2]);
        
printf("%d | %.4f | %.4f | %.4f | %.4f | %d | %d",V[x][v_model],V[x][v_pos_x],V[x][v_pos_y],V[x][v_pos_z],V[x][v_angle],V[x][v_color_1],V[x][v_color_2]);
    }

Результат который выдает printf: http://pastebin.com/kb0wDmDL

У меня больше нету идей...
Смотрел код у модах из паблика, но там какая-то дичь...

Вопрос: Как сделать так, что-бы при входе, спавнилась машина игрока.

P.S: Владелец вычисляется из p_vehicle.
PHP Code:
SendClientMessage(playerid,-1,"%d",P[playerid][p_vehicle]);
// выдаст то значение что есть в БД, в моём случае это число 1
// Elegy что должна появлятся по координатам 0 0 3, в БД тоже находится под число 1, т.е. VID = 1 
P.S.S: Если будет нужна еще информация, я с радостью её предоставлю.
Reply
#2

Ничего не понял. Что значит не выгружается из БД?
Если ты хочешь подгрузить личный ТС, то в базе можно прочесть ту машину, которая принадлежит игроку по столбцу ""Owner"". Я надеюсь, что в "Owner" ты хранишь БД_ИД игрока.
Reply
#3

Quote:
Originally Posted by White_116
View Post
Ничего не понял. Что значит не выгружается из БД?
Если ты хочешь подгрузить личный ТС, то в базе можно прочесть ту машину, которая принадлежит игроку по столбцу ""Owner"". Я надеюсь, что в "Owner" ты хранишь БД_ИД игрока.
Да, в столбце Owner UID игрока, в моем случае это 1.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)