Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4

Тема: Фракции

  1. #1
    Аватар для Sarah
    Пользователь

    Статус
    Оффлайн
    Регистрация
    28.11.2015
    Адрес
    Moscow City
    Сообщений
    50
    Репутация:
    6 ±

    Фракции

    Всем привет
    Мне нужно чтобы загрузка шла с 1 фракции, а не с 0, поэтому, когда ставлю в цикле "<=", то выскакивают ошибки:
    Когда ставлю "<" загрузка идет с 2 фракции

    PHP код:
    [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('1') (Query"SELECT * FROM `fractions`")
    [
    ERRORcache_get_field_content_int invalid datatype
    [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('1') (Query"SELECT * FROM `fractions`")
    [
    ERRORCMySQLResult::GetRowDataByName() - invalid row index ('1') (Query"SELECT * FROM `fractions`")
    [
    ERRORCMySQLResult::GetRowDataByName() - invalid row index ('1') (Query"SELECT * FROM `fractions`"
    PHP код:
    @_LoadFrac();
    @
    _LoadFrac() {
        new 
    rowsfields;
        
    cache_get_data(rowsfields);
        for(new 
    1<= rowsi++) {
            
    Frac[i][id] = cache_get_field_content_int(i"ID"mysqlc);
            
    cache_get_field_content(i"Name"Frac[i][fName], mysqlc32);
            
    cache_get_field_content(i"Leader"Frac[i][fLeader], mysqlc32);
            
    cache_get_field_content(i"Assistant"Frac[i][fAssistant], mysqlc32);
            
    TOTALFRAC++;
        }
        
    printf("%d - uploaded fractions"TOTALFRAC);
        return 
    true;


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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    +- так
    PHP код:
    @_LoadFrac(); 
    @
    _LoadFrac() { 
        new 
    fields
        
    cache_get_data(TOTALFRACfields); 
        for(new 
    iidTOTALFRACi++) { 
            
    id cache_get_field_content_int(i"ID"mysqlc); 
            
    cache_get_field_content(i"Name"Frac[id][fName], mysqlc32); 
            
    cache_get_field_content(i"Leader"Frac[id][fLeader], mysqlc32); 
            
    cache_get_field_content(i"Assistant"Frac[id][fAssistant], mysqlc32); 
        } 
        
    printf("%d - uploaded fractions"TOTALFRAC); 
        return 
    true

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

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

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    Sarah (03.01.2018)
  4. #3
    Аватар для Sarah
    Пользователь

    Статус
    Оффлайн
    Регистрация
    28.11.2015
    Адрес
    Moscow City
    Сообщений
    50
    Репутация:
    6 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    +- так
    PHP код:
    @_LoadFrac(); 
    @
    _LoadFrac() { 
        new 
    fields
        
    cache_get_data(TOTALFRACfields); 
        for(new 
    iidTOTALFRACi++) { 
            
    id cache_get_field_content_int(i"ID"mysqlc); 
            
    cache_get_field_content(i"Name"Frac[id][fName], mysqlc32); 
            
    cache_get_field_content(i"Leader"Frac[id][fLeader], mysqlc32); 
            
    cache_get_field_content(i"Assistant"Frac[id][fAssistant], mysqlc32); 
        } 
        
    printf("%d - uploaded fractions"TOTALFRAC); 
        return 
    true

    Если не сложно, можешь объяснить то что ты сделал
    Он рабочий, спасибо :)

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Исправил цикл загрузки?)
    Цикл, в первую очередь, нужен для обработки кэша, который вернулся в результате запроса к БД. Идентификаторы в кэше начинаются не с 1, а с 0. Эти идентификаторы никак не связаны с твоими ID фракций, поэтому нельзя использовать переменную цикла, которой обращаешься к кэшу, как индекс массива.

    Собственно, я сделал 2 отдельные переменные: одну для обработки кэша, а другую для работы с массивом. Во вторую переменную записывается значение столбца ID из БД, ибо это, как я понимаю, и есть ID фракции.

    Только лучше вот так сделать на всякий случай
    PHP код:
    @_LoadFrac(); 
    @
    _LoadFrac() { 
        new 
    fields
        
    cache_get_data(TOTALFRACfields); 
        for(new 
    iidTOTALFRACi++) 
        { 
            
    id cache_get_field_content_int(i"ID"mysqlc); 
            if(!(
    <= id sizeof(Frac))
            {
                
    //Сюда можешь добавить сообщение в логи о том, что ID фракции невалиден, так как больше, чем ячеек в массиве Frac
                
    continue;
            }
            
    cache_get_field_content(i"Name"Frac[id][fName], mysqlc32); 
            
    cache_get_field_content(i"Leader"Frac[id][fLeader], mysqlc32); 
            
    cache_get_field_content(i"Assistant"Frac[id][fAssistant], mysqlc32); 
        } 
        
    printf("%d - uploaded fractions"TOTALFRAC); 
        return 
    true

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

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

    Steve Pavlina

 

 

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

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

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

Ваши права

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