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

    Статус
    Оффлайн
    Регистрация
    15.08.2019
    Сообщений
    13
    Репутация:
    0 ±

    cache_get_value_name записывает пустую строку вместо текста

    Сама проблема в заголовке. Например, мне нужен пароль из базы данных, и чтобы его получить, я ввожу это:
    1. cache_get_value_name(0, "pass", account[playerid][pass]);

    Однако я получаю пустую строку. Логов никаких почему-то нет. Почему так происходит и как это можно исправить? Так происходит совершенно со всеми данными, которые я пытаюсь извлечь.

  2. #2
    Аватар для Pa4enka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2016
    Адрес
    Украина
    Сообщений
    157
    Репутация:
    35 ±
    Значит проблема в запросе. Больше кода надо.

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

    Статус
    Оффлайн
    Регистрация
    15.08.2019
    Сообщений
    13
    Репутация:
    0 ±
    Цитата Сообщение от Pa4enka Посмотреть сообщение
    Значит проблема в запросе. Больше кода надо.
    1. public OnPlayerConnect(playerid)
    2. {
    3. TextDrawShowForPlayer(playerid, logo0);
    4. TextDrawShowForPlayer(playerid, logo1);
    5. TextDrawShowForPlayer(playerid, logo2);
    6. GetPlayerName(playerid, account[playerid][name], MAX_PLAYER_NAME);
    7. new query[50+MAX_PLAYER_NAME];
    8. format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `name` = '%s'", account[playerid][name]);
    9. mysql_tquery(c_handle, query, "FindPlayerInTable", "i", playerid);
    10. return 1;
    11. }

    1. public FindPlayerInTable(playerid)
    2. {
    3. new rows;
    4. cache_get_row_count(rows);
    5. if(!rows)
    6. {
    7. // ...
    8. }
    9. else
    10. {
    11. LoadAuth(playerid);
    12. new account_name[MAX_PLAYER_NAME+6];
    13. format(account_name, sizeof(account_name), "Name: %s", account[playerid][name]);
    14. PlayerTextDrawSetString(playerid, auth6[playerid], account_name);
    15. PlayerTextDrawShow(playerid, auth0[playerid]);
    16. PlayerTextDrawShow(playerid, auth1[playerid]);
    17. PlayerTextDrawShow(playerid, auth2[playerid]);
    18. PlayerTextDrawShow(playerid, auth3[playerid]);
    19. PlayerTextDrawShow(playerid, auth4[playerid]);
    20. PlayerTextDrawShow(playerid, auth5[playerid]);
    21. PlayerTextDrawShow(playerid, auth6[playerid]);
    22. PlayerTextDrawShow(playerid, auth7[playerid]);
    23. PlayerTextDrawShow(playerid, auth9[playerid]);
    24. PlayerTextDrawShow(playerid, auth11[playerid]);
    25. PlayerTextDrawShow(playerid, auth13[playerid]);
    26. SelectTextDraw(playerid, 0x609ccaaa);
    27. cache_get_value_name(0, "pass", account[playerid][pass]);
    28. cache_get_value_name_int(0, "id", account[playerid][id]);
    29. }
    30. }


    Меня больше всего интересует то, почему не выдает ошибок в логах. Если бы там хоть что-то писало, можно было бы сделать хоть какие-то выводы.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от annas2001 Посмотреть сообщение
    Сама проблема в заголовке. Например, мне нужен пароль из базы данных, и чтобы его получить, я ввожу это:
    1. cache_get_value_name(0, "pass", account[playerid][pass]);

    Однако я получаю пустую строку. Логов никаких почему-то нет. Почему так происходит и как это можно исправить? Так происходит совершенно со всеми данными, которые я пытаюсь извлечь.
    1. cache_get_value_name(0, "pass", account[playerid][pass], /*размер массива*/);


    В текущем твоём варианте вместо третьего аргумента автоматически вызывается "sizeof". Но sizeof не сможет определить размер отдельного члена перечисления и поэтому вернёт 0. Как итог - функция cache_get_value_name не сможет записать в массив строку длиннее 0 символов =)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    15.08.2019
    Сообщений
    13
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    1. cache_get_value_name(0, "pass", account[playerid][pass], /*размер массива*/);


    В текущем твоём варианте вместо третьего аргумента автоматически вызывается "sizeof". Но sizeof не сможет определить размер отдельного члена перечисления и поэтому вернёт 0. Как итог - функция cache_get_value_name не сможет записать в массив строку длиннее 0 символов =)
    Спасибо)

 

 

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

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

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

Ваши права

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