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

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

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

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

    Иными словами, в варианте с LIMIT ты лишь добавишь дополнительную отправку запроса в базу, тратя на это процессорное время и усложнив код в несколько раз. Весь остальной код у тебя будет практически таким же, за исключением отсутствия удаления кэша (но отчищать переменные при закрытии диалога всё так же придётся, а так же придётся как-то определять какую именно строку выбрал игрок, соотнося её с данными в таблице).
    В общем, твой советчик - Григорий Остер от мира программирования :)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

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

    Иными словами, в варианте с LIMIT ты лишь добавишь дополнительную отправку запроса в базу, тратя на это процессорное время и усложнив код в несколько раз. Весь остальной код у тебя будет практически таким же, за исключением отсутствия удаления кэша (но отчищать переменные при закрытии диалога всё так же придётся, а так же придётся как-то определять какую именно строку выбрал игрок, соотнося её с данными в таблице).
    В общем, твой советчик - Григорий Остер от мира программирования :)
    Спасибо за пояснение)
    UPD, по теме.
    Вообщем, я по пробовал работать с индексом.
    По страницам бегаю отлично, но, беда в том, что после первого ввода команды, выходит ошибка с нет активного кэша.

    PHP код:
                new string[78 MAX_PLAYER_NAME 50];
    format(stringsizeof(string), "SELECT * FROM `"TABLES"` WHERE BINARY `nickname`='%s' AND `dates`='%s' ORDER BY `mysql_id` DESC;",names_player,dates3);
    mysql_function_query(m_connectstringtrue"OnLoadCallBack""d",playerid);
                
                
    forward OnLoadCallBack(playerid);
    public 
    OnLoadCallBack(playerid)// Пришёл ответ из самого стока 
    {
        new 
    rows cache_get_row_count(m_connect);
        if(
    rows == 0) return SCMError(playerid,"[Log Info]: {FFFFFF}Логов не найдено.");
        if(
    GetPVarInt(playerid,"ID_Test") == 1)
        {
            
    DeletePVar(playerid,"_NickName");
            
    DeletePVar(playerid,"ID_Test");
            
    cache_delete(Cache:CacheID_List[playerid],m_connect);
            
    PageCount_List[playerid] = _:CacheID_List[playerid] = -1;
        }
        
    CacheID_List[playerid] = cache_save(m_connect);
        
    PageID_List[playerid] = 0;
        
    PageCount_List[playerid] = rows;
        
    SetPVarInt(playerid,"ID_Test",1);
        
    Show_PlayerListID(playerid);
        return 
    1;
    }
    stock Show_PlayerListID(playerid)
    {
        if(
    CacheID_List[playerid] == Cache:-1) return SCMError(playerid"[Server]: {FFFFFF}Нет активного кэша с информацией");
        
    cache_set_active(CacheID_List[playerid],m_connect);

        static 
    dialog_string[750];
        
    dialog_string[0] = EOS;
        new 
    load_p_act[30],rows,i,load_name[MAX_PLAYER_NAME],load_mysql_dd;
        
    PageID_List[playerid]*20;
        
    rows i+20;
        if(
    rows PageCount_List[playerid]) rows PageCount_List[playerid];
        for(; 
    rowsi++)
        {
            
    load_mysql_dd cache_get_field_content_int(i"mysql_id",m_connect);
            
    cache_get_field_content(i"nickname"load_name,m_connect,MAX_PLAYER_NAME);
            
    cache_get_field_content(i"p_act"load_p_act,m_connect,30);
            
    format(dialog_stringsizeof(dialog_string), "%s[%d] | %s\n"dialog_string,load_mysql_ddload_p_act);
        }
        if(
    PageCount_List[playerid] > MAX_ROWS_LIST && rows != PageCount_List[playerid])   strcat(dialog_string"Далее\n");
        if(
    PageID_List[playerid] != 0strcat(dialog_string"Назад");
        
        
        new 
    str[27];
        
    format(str,sizeof(str),""COLOR_SERVER"%s",load_name);
        
    SPD(playeriddID_A_Panel_LogsDIALOG_STYLE_LISTstrdialog_string"Выбор""Отмена");
        
    SetPVarString(playerid,"log_NickName",load_name);
        return 
    1;

    И сам диалог:

    PHP код:
    stock Show_InPlayer(playerid,listitem)
    {
        new 
    idx PageID_List[playerid]*PageCount_List[playerid]+listitem;
        
    printf("idx: %d",idx);
        new 
    test_0[30],test_1[30],test_2[30],test_3[30];
        new 
    load_name[MAX_PLAYER_NAME];
        
    cache_get_field_content(idx,"test_1",test_0,Mysql_Log,30);
        
    cache_get_field_content(idx,"test_2",test_1,Mysql_Log,30);
        
    cache_get_field_content(idx,"test_3",test_2,Mysql_Log,30);
        
    cache_get_field_content(idx,"test_4",test_3,Mysql_Log,30);
        
    //=========//
        
    GetPVarString(playerid,"_NickName",load_name,MAX_PLAYER_NAME);
        new 
    str_r[400];
        
    format(str_r,sizeof(str_r),"%s\n%s\n%s\%s",load_name,test_0,test_1,test_2,test_3);
        
    SPD(playeriddID_DialogDIALOG_STYLE_MSGBOX"Info"str_r"Ок","Назад");
        return 
    1;

    Ошибка:
    PHP код:
    [07:31:28 08/30/19] [WARNINGcache_get_field_content no active cache
    [07:31:28 08/30/19] [WARNINGcache_get_field_content no active cache
    [07:31:28 08/30/19] [WARNINGcache_get_field_content no active cache
    [07:31:28 08/30/19] [WARNINGcache_get_field_content no active cache 
    Я так понимаю, что жалуется на загрузку данных из стока, НО, вот вопрос, если idx совпадает, и всё как бы нормально должно быть, почему же ошибка?
    Она появляется именно тогда, когда кэша в принципе и не может быть, жмем в диалоге кнопку назад, и снова нажимаем на 1 наименование из списка, и вуаля, всё нормально работает, закрываем диалог, открываем снова, и снова ошибка с загрузкой данных....
    Последний раз редактировалось Сергей; 30.08.2019 в 09:48.

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

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    cache_set_active используй при всяком обращении к сохранённому кэшу. Стоит отправить какой-то другой запрос в БД и плагин сразу переключается с твоего сохранённого кэша, из-за чего ошибка и появляется.
    Хорошо, добавляем cache_set_active в сток с показом инфы, вводим команду, нажимаем на 1 из пунктов в диалоге, инфа появляется, пробуем повторить комбинацию ещё несколько раз, работает, НО, на 4-тый раз уже всё не так, на 5-тый раз уже всё ломается, непонятно почему...
    Ошибка:

    PHP код:
    [15:47:55 08/30/19] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('42') (Query"SELECT * FROM `accounts` WHERE BINARY `nickname`='Names' AND `dates`='28/08/2019' ORDER BY `mysql_id` DESC;")
    [
    15:47:55 08/30/19] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('42') (Query"SELECT * FROM `accounts` WHERE BINARY `nickname`='Names' AND `dates`='28/08/2019' ORDER BY `mysql_id` DESC;")
    [
    15:47:55 08/30/19] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('42') (Query"SELECT * FROM `accounts` WHERE BINARY `nickname`='Names' AND `dates`='28/08/2019' ORDER BY `mysql_id` DESC;")
    [
    15:47:55 08/30/19] [ERRORCMySQLResult::GetRowDataByName() - invalid row index ('42') (Query"SELECT * FROM `accounts` WHERE BINARY `nickname`='Names' AND `dates`='28/08/2019' ORDER BY `mysql_id` DESC;"
    Последний раз редактировалось Сергей; 30.08.2019 в 18:13.

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

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, а это тот запрос, с которым ты работаешь изначально? Если нет, то не везде проставил cache_set_active
    Да, это именно первый запрос
    Где ещё я его мог упустить? Если есть сток с информацией, и есть диалог, в котором я хожу по страницам, и сам собственно сток с инфой в котором уже есть cache_set_active

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Сергей Посмотреть сообщение
    Да, это именно первый запрос
    Где ещё я его мог упустить? Если есть сток с информацией, и есть диалог, в котором я хожу по страницам, и сам собственно сток с инфой в котором уже есть cache_set_active
    Если это изначальный запрос, значит проблема в формуле, по которой определяешь индекс строки. Ну той, которая
    "номер_страницы*максимальное_число_строк_на_странице+listitem"
    Логируй все переменные.

    Система, на самом деле, крайне простая. Главное раз вникнуть и понять принципы её работы. Там всё работает на нескольких переменных и, при этом, нет никаких лимитов на количество данных, которые возвращаются из базы.
    Последний раз редактировалось DeimoS; 30.08.2019 в 23:35.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

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

    Логируй все переменные.

    Система, на самом деле, крайне простая. Главное раз вникнуть и понять принципы её работы. Там всё работает на нескольких переменных и, при этом, нет никаких лимитов на количество данных, которые возвращаются из базы.
    Так непонятно почему после 4-5 открываний диалога с информацией всё идёт по пи, к чёрту вообщем, вот что именно не понятно

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

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

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

    Steve Pavlina

 

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

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

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

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

Ваши права

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