Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 13
  1. #1
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±

    Не сохраняет авто после перезагрузки сервера.

    Всем привет! Щас постараюсь как можно подробней описать проблему.

    Написал на сервер систему автомобилей. Так вот... Игрок купил автомобиль, указал ему спавн (где авто будет появляться после перезагрузки сервера), все что он сделал сохранилось в таблицу mySQL. Но стоит перезагрузить сервер, то если игрок захочет поменять авто спавн то он уже не сохранится... То есть после перезагрузки сервера перестает работать сохранение...

    Вот такие ошибки появляются в mysql_log:

    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1997')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1997')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1997')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1997')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1998')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1998')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1998')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1998')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1998')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1998')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1998')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1998')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1999')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1999')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1999')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1999')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1999')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1999')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1999')
    [22:07:15] [ERROR] CMySQLResult::GetRowDataByName() - invalid row index ('1999')

    Это только небольшой кусок всех ошибок... Их там просто дох*ра....

    Вот код загрузки авто:

    PHP код:
    public LoaginAuto()
    {
        new 
    vehicleid[MAX_VEHICLES];
        new 
    query_string3[350];
        for(new 
    iMAX_VEHICLESi++)
        {
            
    pVehicle[i][pX] = cache_get_field_content_float(i"X"mysql_connect_ID);
            
    pVehicle[i][pY] = cache_get_field_content_float(i"Y"mysql_connect_ID);
            
    pVehicle[i][pZ] = cache_get_field_content_float(i"Z"mysql_connect_ID);
            
    pVehicle[i][pAngle] = cache_get_field_content_float(i"Angle"mysql_connect_ID);
            
    cache_get_field_content(i"Name"pVehicle[i][pName], mysql_connect_ID24);
            
    pVehicle[i][pID] = cache_get_field_content_int(i"ID"mysql_connect_ID);
            
    pVehicle[i][pStatus] = cache_get_field_content_int(i"Status"mysql_connect_ID);
            
    pVehicle[i][pColor] = cache_get_field_content_int(i"Color"mysql_connect_ID);

            if(
    pVehicle[i][pID] > 0)
            {
                if(
    pVehicle[i][pX] == && pVehicle[i][pY] == && pVehicle[i][pZ] == 0)
                {
                    new 
    query_string[200];
                    
    format(query_stringsizeof(query_string), "DELETE FROM `Auto` WHERE `X` = '%f'"pVehicle[i][pX]);
                    
    mysql_function_query(mysql_connect_IDquery_string false"""");
                } 
                else{
                    
    vehicleid{i} = AddStaticVehicle(pVehicle[i][pID], pVehicle[i][pX], pVehicle[i][pY], pVehicle[i][pZ], pVehicle[i][pAngle], pVehicle[i][pColor],pVehicle[i][pColor]);
                    
    mysql_format(mysql_connect_IDquery_string3sizeof(query_string3), "UPDATE `accounts` SET `AutoID`='%d' WHERE `Name` = '%d'"vehicleid{i}, pVehicle[i][pName]);
                    
    mysql_function_query(mysql_connect_IDquery_string3false"""");
                }
            }
        }
        return 
    1;

    Вот код сохранения (вызывается каждые 20 секунд в таймере):

    PHP код:
    public SaveAuto()
    {
        for(new 
    iMAX_VEHICLESi++)
        {
            if(
    pVehicle[i][pID] > 0)
            {
                new 
    query_string1[500];
                
    mysql_format(mysql_connect_ID,query_string1sizeof(query_string1),"UPDATE `Auto` SET `ID`='%d', `Color`='%d', `Status`='%d', `X`='%f', `Y`='%f', `Z`='%f', `Angle`='%f' WHERE `Name`='%s'"pVehicle[i][pID] ,pVehicle[i][pColor], pVehicle[i][pStatus], pVehicle[i][pX], pVehicle[i][pY], pVehicle[i][pZ], pVehicle[i][pAngle], pVehicle[i][pName]);
                
    mysql_function_query(mysql_connect_IDquery_string1false"""");
            }
        }
        return 
    1;

    Код покупки авто:

    PHP код:
    public NewSpawnAutoServer(playeridXYZ)
    {
        if(
    pInfo[playerid][pMoney] < newzenaauto[playerid]) return SendClientMessage(playerid, -1"{D40000}[Ошибка] Вы не смогли оплатить автомобиль!");

        
    pInfo[playerid][pMoney] = pInfo[playerid][pMoney] - newzenaauto[playerid];
        
    GivePlayerMoney(playerid, -newzenaauto[playerid]);

        new 
    vehicleid CreateVehicle(newidauto[playerid], newXauto[playerid], newYauto[playerid], newZauto[playerid], newangleauto[playerid], newcolorauto[playerid], newcolorauto[playerid], -1);
        
    SendClientMessage(playerid, -1"{183DFF}[Оповещение] Автомобиль доставлен на место! Спасибо за покупку!");

        
    pVehicle[vehicleid][pID] = newidauto[playerid];
        
    pVehicle[vehicleid][pColor] = newcolorauto[playerid];
        
    format(pVehicle[vehicleid][pName], 24"%s"pInfo[playerid][pName]);
        
    pInfo[playerid][pAuto] = vehicleid;

        
    newidauto[playerid] = 0;
        
    newcolorauto[playerid] = 0;
        
    newzenaauto[playerid] = 0;
        
    newXauto[playerid] = 0;
        
    newYauto[playerid] = 0;
        
    newZauto[playerid] = 0;
        
    newangleauto[playerid] = 0;

        new 
    query_string1[500];
        
    format(query_string1sizeof(query_string1), "INSERT INTO `Auto` (`ID`, `Name`, `Color`, `Status`, `X`, `Y`, `Z`, `Angle`) VALUES ('%d', '%s', '%d', '%d', '%f', '%f', '%f', '%f')"pVehicle[vehicleid][pID], pVehicle[vehicleid][pName], pVehicle[vehicleid][pColor], pVehicle[vehicleid][pStatus], pVehicle[vehicleid][pX], pVehicle[vehicleid][pY], pVehicle[vehicleid][pZ], pVehicle[vehicleid][pAngle]);
        
    mysql_function_query(mysql_connect_IDquery_string1 false"""");
        return 
    1;

    Буду очень благодарен кто поможет!

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Почему при загрузке используется MAX_VEHICLES? С помощью cache_get_data узнай сколько строк вернул запрос и уже исходя из этого значения запускай цикл.

    Можно даже так:
    PHP код:
    new MAX_PLAYER_VEHICLES 0
    PHP код:
    public LoaginAuto() 

        new 
    vehicleid[MAX_VEHICLES]; 
        
    cache_get_data(mysql_connect_IDMAX_PLAYER_VEHICLESvehicleid[0]);
        new 
    query_string3[350]; 
        for(new 
    iMAX_PLAYER_VEHICLESi++) 
        { 
            
    //... 

    PHP код:
    public SaveAuto() 

        new 
    query_string1[500]; 
        for(new 
    iMAX_PLAYER_VEHICLESi++) 
        { 
            if(
    pVehicle[i][pID] > 0
            { 
                
    mysql_format(mysql_connect_ID,query_string1sizeof(query_string1),"UPDATE `Auto` SET `ID`='%d', `Color`='%d', `Status`='%d', `X`='%f', `Y`='%f', `Z`='%f', `Angle`='%f' WHERE `Name`='%s'"pVehicle[i][pID] ,pVehicle[i][pColor], pVehicle[i][pStatus], pVehicle[i][pX], pVehicle[i][pY], pVehicle[i][pZ], pVehicle[i][pAngle], pVehicle[i][pName]); 
                
    mysql_function_query(mysql_connect_IDquery_string1false""""); 
            } 
        } 
        return 
    1

    PHP код:
    public NewSpawnAutoServer(playeridXYZ

        if(
    pInfo[playerid][pMoney] < newzenaauto[playerid]) return SendClientMessage(playerid, -1"{D40000}[Ошибка] Вы не смогли оплатить автомобиль!"); 

        
    pInfo[playerid][pMoney] = pInfo[playerid][pMoney] - newzenaauto[playerid]; 
        
    GivePlayerMoney(playerid, -newzenaauto[playerid]); 

        new 
    vehicleid CreateVehicle(newidauto[playerid], newXauto[playerid], newYauto[playerid], newZauto[playerid], newangleauto[playerid], newcolorauto[playerid], newcolorauto[playerid], -1); 
        
    SendClientMessage(playerid, -1"{183DFF}[Оповещение] Автомобиль доставлен на место! Спасибо за покупку!"); 

        
    pVehicle[vehicleid][pID] = newidauto[playerid]; 
        
    pVehicle[vehicleid][pColor] = newcolorauto[playerid]; 
        
    format(pVehicle[vehicleid][pName], 24"%s"pInfo[playerid][pName]); 
        
    pInfo[playerid][pAuto] = vehicleid

        
    newidauto[playerid] = 0
        
    newcolorauto[playerid] = 0
        
    newzenaauto[playerid] = 0
        
    newXauto[playerid] = 0
        
    newYauto[playerid] = 0
        
    newZauto[playerid] = 0
        
    newangleauto[playerid] = 0

        new 
    query_string1[500]; 
        
    format(query_string1sizeof(query_string1), "INSERT INTO `Auto` (`ID`, `Name`, `Color`, `Status`, `X`, `Y`, `Z`, `Angle`) VALUES ('%d', '%s', '%d', '%d', '%f', '%f', '%f', '%f')"pVehicle[vehicleid][pID], pVehicle[vehicleid][pName], pVehicle[vehicleid][pColor], pVehicle[vehicleid][pStatus], pVehicle[vehicleid][pX], pVehicle[vehicleid][pY], pVehicle[vehicleid][pZ], pVehicle[vehicleid][pAngle]); 
        
    mysql_function_query(mysql_connect_IDquery_string1 false"""");  
        
    MAX_PLAYER_VEHICLES++;
        return 
    1

    И да, никогда не создавайте переменные (а уж, тем более, массивы) внутри циклов
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #3
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    Авто в mySQL таблице есть... Но почему то оно не заспаунилось при запуске мода... А еще не сохранились почему то координаты авто в таблицу... Команда установки спавна:

    PHP код:
    CMD:spawnauto(playerid)
    {
        new 
    vehicleid GetPlayerVehicleID(playerid);
        if(
    pInfo[playerid][pAuto] <= 0) return SendClientMessage(playerid, -1"{D40000}[Ошибка] У Вас нет автомобиля!");
        if(
    pInfo[playerid][pAuto] == vehicleid)
        {
            
    GetVehiclePos(pInfo[playerid][pAuto], pVehicle[pInfo[playerid][pAuto]][pX], pVehicle[pInfo[playerid][pAuto]][pY], pVehicle[pInfo[playerid][pAuto]][pZ]);
            
    GetVehicleZAngle(pInfo[playerid][pAuto], pVehicle[pInfo[playerid][pAuto]][pAngle]);
            
    SendClientMessage(playerid, -1"{04E100}[Оповещение] Координаты спавна авто установлены!");
        }
        return 
    1;


  4. #4
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Почему при загрузке используется MAX_VEHICLES? С помощью cache_get_data узнай сколько строк вернул запрос и уже исходя из этого значения запускай цикл.

    Можно даже так:
    PHP код:
    new MAX_PLAYER_VEHICLES 0
    А не так?
    PHP код:
    #define MAX_PLAYER_CARS number 

  5. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от KrutoyKrosch Посмотреть сообщение
    Авто в mySQL таблице есть... Но почему то оно не заспаунилось при запуске мода... А еще не сохранились почему то координаты авто в таблицу... Команда установки спавна:

    PHP код:
    CMD:spawnauto(playerid)
    {
        new 
    vehicleid GetPlayerVehicleID(playerid);
        if(
    pInfo[playerid][pAuto] <= 0) return SendClientMessage(playerid, -1"{D40000}[Ошибка] У Вас нет автомобиля!");
        if(
    pInfo[playerid][pAuto] == vehicleid)
        {
            
    GetVehiclePos(pInfo[playerid][pAuto], pVehicle[pInfo[playerid][pAuto]][pX], pVehicle[pInfo[playerid][pAuto]][pY], pVehicle[pInfo[playerid][pAuto]][pZ]);
            
    GetVehicleZAngle(pInfo[playerid][pAuto], pVehicle[pInfo[playerid][pAuto]][pAngle]);
            
    SendClientMessage(playerid, -1"{04E100}[Оповещение] Координаты спавна авто установлены!");
        }
        return 
    1;

    Покажи содержимое mysql_log

    Цитата Сообщение от m1n1vv Посмотреть сообщение
    А не так?
    PHP код:
    #define MAX_PLAYER_CARS number 
    Нет, ибо при создании нового авто мы прибавляем к этой переменной единицу, дабы циклы работали верно
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  6. #6
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    PHP код:
    [23:51:27] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('149')
    [
    23:51:27] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('149')
    [
    23:51:27] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('149')
    [
    23:51:27] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('149')
    [
    23:51:27] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('149')
    [
    23:51:27] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('149')
    [
    23:51:27] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('149')
    [
    23:51:27] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('149')
    [
    23:51:27] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('149')
    [
    23:51:27] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('149')
    [
    23:51:27] [ERROR"cache_get_data" invalid connection handle (ID 0

  7. #7
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Покажи весь OnGameModeInIt
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. #8
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    PHP код:
    public OnGameModeInit()
    {
        
    mysql_connect_ID mysql_connect(MYSQL_CONNECT_INFO);//Коннект к mySQL
        
    SetGameModeText("RUS");//Имя мода
        
    SendRconCommand("hostname •••••••California||RP||RUS•••••••");
        
    SetTimer("PickupMapiconHaus"10000);
        
    SetTimer("TimerGlobal",10001);//Сохранение АКК
        
    SetTimer("FuelCar"200001);
        
    SetTimer("Speed"1001);
        
    SetTimer("Recklama",600000,1);
        
    SetTimer("SaveHaus"150001);
        
    SetTimer("SaveAuto"200001);

        
    TaxiCall 999;

        
    DisableInteriorEnterExits();//Удаление входа выхода
        
    EnableStuntBonusForAll(0);//Бонус 0
        
    ManualVehicleEngineAndLights();

        
    /*==========================ТЕКСТДРАВ SPEED==========================*/

        
    Textdraw0 TextDrawCreate(501.199981444.273345"usebox");
        
    TextDrawLetterSize(Textdraw00.000000, -11.433704);
        
    TextDrawTextSize(Textdraw0628.4000240.000000);
        
    TextDrawAlignment(Textdraw01);
        
    TextDrawColor(Textdraw00);
        
    TextDrawUseBox(Textdraw0true);
        
    TextDrawBoxColor(Textdraw0102);
        
    TextDrawSetShadow(Textdraw00);
        
    TextDrawSetOutline(Textdraw00);
        
    TextDrawFont(Textdraw00);

        
    Textdraw1 TextDrawCreate(503.999908350.933441"Speed:");
        
    TextDrawLetterSize(Textdraw10.4499991.600000);
        
    TextDrawAlignment(Textdraw11);
        
    TextDrawColor(Textdraw18388863);
        
    TextDrawSetShadow(Textdraw10);
        
    TextDrawSetOutline(Textdraw11);
        
    TextDrawBackgroundColor(Textdraw151);
        
    TextDrawFont(Textdraw11);
        
    TextDrawSetProportional(Textdraw11);

        
    Textdraw2 TextDrawCreate(506.399993370.346679"Fuel:");
        
    TextDrawLetterSize(Textdraw20.4499991.600000);
        
    TextDrawAlignment(Textdraw21);
        
    TextDrawColor(Textdraw28388863);
        
    TextDrawSetShadow(Textdraw20);
        
    TextDrawSetOutline(Textdraw21);
        
    TextDrawBackgroundColor(Textdraw251);
        
    TextDrawFont(Textdraw21);
        
    TextDrawSetProportional(Textdraw21);

        
    Textdraw3 TextDrawCreate(504.799957390.506683"Condition:");
        
    TextDrawLetterSize(Textdraw30.4499991.600000);
        
    TextDrawAlignment(Textdraw31);
        
    TextDrawColor(Textdraw38388863);
        
    TextDrawSetShadow(Textdraw30);
        
    TextDrawSetOutline(Textdraw31);
        
    TextDrawBackgroundColor(Textdraw351);
        
    TextDrawFont(Textdraw31);
        
    TextDrawSetProportional(Textdraw31);

        
    Textdraw4 TextDrawCreate(506.400238412.906768"Engine:");
        
    TextDrawLetterSize(Textdraw40.4499991.600000);
        
    TextDrawAlignment(Textdraw41);
        
    TextDrawColor(Textdraw48388863);
        
    TextDrawSetShadow(Textdraw40);
        
    TextDrawSetOutline(Textdraw41);
        
    TextDrawBackgroundColor(Textdraw451);
        
    TextDrawFont(Textdraw41);
        
    TextDrawSetProportional(Textdraw41);
        
    /*======================ВЫДАЧА БЕНЗИНА============*/
        
    for(new vehveh MAX_VEHICLESveh++){Fuel{veh} = 150;}
        
        
    Interior();
        
    Pickup();
        
    Auto();
        
    ObjectMove();

        
    mysql_function_query(mysql_connect_ID,"SELECT * FROM `doma`"true"LoaginHaus","");  
        
    mysql_function_query(mysql_connect_ID,"SELECT * FROM `Auto`"true"LoaginAuto","");  
        return 
    1;


  9. #9
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Хмм, странно... А логи точно свежие? Попробуй удалить файл с логами, запустить сервер и опять скинуть содержимое
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  10. #10
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    Так я так и сделал... Все свежее...

    - - - Добавлено - - -

    Могу скинуть вообще весь код системы и таблицу mySQL в лс. Идет?

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •