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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±

    Не загружается текст из базы в массив через sscanf

    Стал я значит делать систему рангов на MySQL
    и столкнулся с такой проблемой:
    В базе данных данные хранятся таким вот образом:
    Test1,Test2,Test3 - Это у нас f_rank0
    Теперь я их загружаю, и после использования sscanf данные просто ломаются...

    PHP код:
    forward LoadOrganCallBack();
    public 
    LoadOrganCallBack()
    {
        new 
    time GetTickCount(); 
        new 
    rowsfields;
        
    cache_get_data(rowsfields,MysqlConnect);
        new 
    tt;
        if(
    rows)
        {
            for(new 
    0rowsi++) 
            {
                
    tt cache_get_field_content_int(i, !"id_f_mysql"MysqlConnect);
                
    cache_get_field_content(i, !"f_name"Organization[tt][NAME],MysqlConnect24);
                
                
    cache_get_field_content(i, !"f_rank0"F_RANKS[tt][0],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank1"F_RANKS[tt][1],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank2"F_RANKS[tt][2],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank3"F_RANKS[tt][3],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank4"F_RANKS[tt][4],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank5"F_RANKS[tt][5],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank6"F_RANKS[tt][6],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank7"F_RANKS[tt][7],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank8"F_RANKS[tt][8],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank9"F_RANKS[tt][9],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank10"F_RANKS[tt][10],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank11"F_RANKS[tt][11],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank12"F_RANKS[tt][12],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank13"F_RANKS[tt][13],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank14"F_RANKS[tt][14],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank14"F_RANKS[tt][14],MysqlConnect80);
                
    cache_get_field_content(i, !"f_rank15",F_RANKS[tt][15], MysqlConnect80);
                
                
    sscanf(F_RANKS[tt][0], "p<,>s[40]s[40]s[40]",FrackUP[0][tt][0],FrackUP[1][tt][0],FrackUP[2][tt][0]); 
                
    sscanf(F_RANKS[tt][1], "p<,>s[40]s[40]s[40]",FrackUP[0][tt][1],FrackUP[1][tt][1],FrackUP[2][tt][1]); 
                
    printf("ID: %d | Name1: %s | Name2: %s | Name3: %s\n",tt,FrackUP[0][tt][0],FrackUP[1][tt][0],FrackUP[2][tt][0]);
                
    printf("ID: %d | Name1: %s | Name2: %s | Name3: %s\n",tt,FrackUP[0][tt][1],FrackUP[1][tt][1],FrackUP[2][tt][1]);    
            }
        }
        
        for(new 
    us 0us 16us++)
        {
            
    sscanf(F_RANKS[tt][us], "p<,>s[40]s[40]s[40]",FrackUP[0][tt][us],FrackUP[1][tt][us],FrackUP[2][tt][us]); 
            
    strmid(F_RANKS[tt][us], FrackUP[0][tt][us], 06464);
            
            
    sscanf(F_RANKS[FracID][us], "p<,>s[40]s[40]s[40]",FrackUP[0][FracID][us],FrackUP[1][FracID][us],FrackUP[2][FracID][us]); 
            
    printf("%d | %s %s %s",us,FrackUP[0][tt][us],FrackUP[1][tt][us],FrackUP[2][tt][us]);
            
            
    printf("Name: %s",FrackUP[0][tt][1]);
        }
        
        
    printf("[MySQL]: Стандартные название рангов загружены за %d мс.",GetTickCount() - time);
        return 
    1;

    Примеры поломки:
    PHP код:
    [20:57:33ООНССММММСППNNNone || Name 
    PHP код:
    [20:46:40] [1ПNNNone] [2зидент ] [3Unchanged] {FFFFFF}| Names test 
    Последний раз редактировалось Сергей; 28.11.2018 в 16:18.

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

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

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    PHP код:
    new F_RANKS[6][15] - 6 Сколько фракций 15 рангов
    new FrackUP[3][6][156 фракций 15 рангов 

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

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

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

    Steve Pavlina

  5. #5
    Аватар для Сергей
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    PHP код:
    forward LoadOrganCallBack();
    public 
    LoadOrganCallBack()
    {
        new 
    rowsfields;
        new 
    time GetTickCount();
        
    cache_get_data(rowsfields,MysqlConnect);
        
    cache_get_row_count(rows); // узнаем сколько в таблице строк
        
    for(new 0rowsi++) 
        {
            new 
    tt cache_get_field_content_int(i, !"id_f_mysql"MysqlConnect);
            
    cache_get_field_content(i, !"f_name"UPD_Rank[tt][frac_name],MysqlConnect24);
            
            
    cache_get_field_content(i"f_rank0"F_RANKS[tt][0],MysqlConnect60);
            
    cache_get_field_content(i"f_rank1"F_RANKS[tt][1],MysqlConnect60);
            
    cache_get_field_content(i"f_rank2"F_RANKS[tt][2],MysqlConnect60);
            
    cache_get_field_content(i"f_rank3"F_RANKS[tt][3],MysqlConnect60);
            
    cache_get_field_content(i"f_rank4"F_RANKS[tt][4],MysqlConnect60);
            
    cache_get_field_content(i"f_rank5"F_RANKS[tt][5],MysqlConnect60);
            
    cache_get_field_content(i"f_rank6"F_RANKS[tt][6],MysqlConnect60);
            
    cache_get_field_content(i"f_rank7"F_RANKS[tt][7],MysqlConnect60);
            
    cache_get_field_content(i"f_rank8"F_RANKS[tt][8],MysqlConnect60);
            
    cache_get_field_content(i"f_rank9"F_RANKS[tt][9],MysqlConnect60);
            
    cache_get_field_content(i"f_rank10"F_RANKS[tt][10],MysqlConnect60);
            
    cache_get_field_content(i"f_rank11"F_RANKS[tt][11],MysqlConnect60);
            
    cache_get_field_content(i"f_rank12"F_RANKS[tt][12],MysqlConnect60);
            
    cache_get_field_content(i"f_rank13"F_RANKS[tt][13],MysqlConnect60);
            
    cache_get_field_content(i"f_rank14"F_RANKS[tt][14],MysqlConnect60);
            
    cache_get_field_content(i"f_rank15"F_RANKS[tt][15],MysqlConnect60);    
        }
        for(new 
    us 0us 16us++)
        {
            new 
    f_m_upd 1;
            new 
    f_m_upd1 2;
            
    sscanf(F_RANKS[f_m_upd][us], "p<,>s[23]s[22]s[25]"FractionRankName[f_m_upd][us][0], FractionRankName[f_m_upd][us][1], FractionRankName[f_m_upd][us][2]);  
            
    sscanf(F_RANKS[f_m_upd1][us], "p<,>s[23]s[22]s[25]"FractionRankName[f_m_upd1][us][0], FractionRankName[f_m_upd1][us][1], FractionRankName[f_m_upd1][us][2]);
            
    SetTimer("UPD_Timeres",3000,false);
        }
        
    //SetTimer("UPD_Timeres",3000,false);
        
    printf("[MySQL]: Стандартные название рангов загружены за %d мс.\n",GetTickCount() - time);
        return 
    1;

    Проблема в том, что я не могу получить нужные мне значения т.е

    Какого аффекта я хотел добиться?
    Чтобы использовать

    PHP код:
    FractionRankName[frac][rank][0],FractionRankName[frac][rank][1],FractionRankName[frac][rank][2]

    Где в переменнойFractionRankName[frac][rank][0хранится текст из бд Test1
    FractionRankName
    [frac][rank][1] - Test2
    FractionRankName
    [frac][rank][2] - Test3 

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

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

    Должно быть так:
    PHP код:
    new array[что_то][что_то][ячейки_под_текст]; 
    А сейчас у тебя
    PHP код:
    new array[что_то][что_то][что_то]; 
    Как я понимаю. Либо загрузка сделана криво
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  7. Пользователь сказал cпасибо:
    Сергей (29.11.2018)
  8. #7
    Аватар для Сергей
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Так говорю же, у тебя в массиве нет места под текст. Все ячейки заняты, из-за чего текст и начинает залезать на следующую меру.

    Должно быть так:
    PHP код:
    new array[что_то][что_то][ячейки_под_текст]; 
    А сейчас у тебя
    PHP код:
    new array[что_то][что_то][что_то]; 
    Как я понимаю. Либо загрузка сделана криво
    Разобрался. Спасибо.

 

 

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

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

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

Ваши права

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