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

    Статус
    Оффлайн
    Регистрация
    19.04.2014
    Адрес
    Уфа, Россия
    Сообщений
    319
    Репутация:
    52 ±
    "DeimoS" не могли бы объяснить какая разница между вашим посылаемым запросом либо если я буду посылать так:

    PHP код:
    forward OnPlayerDataLoaded(playerid); 
    PHP код:
    new connectionHandle;
    enum E_PLAYER
    {
        
    PlayerName[MAX_PLAYER_NAME]
    };
    new 
    PlayerInfo[MAX_PLAYERS][E_PLAYER]; 

    PHP код:
    connectionHandle mysql_connect("127.0.0.1""root""db_dayton""");
    if(
    mysql_errno() != 0)
            print(
    "Не удается подключиться к базе данных!"); 
    PHP код:
        new query[128];
        
    GetPlayerName(playeridPlayerInfo[playerid][PlayerName], MAX_PLAYER_NAME);
        
    mysql_format(connectionHandlequerysizeof(query), "SELECT * FROM `players` WHERE `username` = '%e'"PlayerInfo[playerid][PlayerName]);
        
    mysql_tquery(connectionHandlequery"OnPlayerDataLoaded""d"playerid); 
    PHP код:
    public OnPlayerDataLoaded(playerid)
    {
        
    /*...*/
        
    return 1;


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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Если речь о mysql_tquery, то, если открыть инклюд MySQL, можно увидеть такой макрос:
    PHP код:
    #define mysql_function_query(%0,%1,%2,%3,"%4"%5)     mysql_tquery(%0,%1,%3,#%4%5) 
    То бишь, разницы никакой нет. Просто в mysql_function_query добавлен параметр кэширования, как я понимаю, для наглядности во время чтения кода (то бишь, чтоб можно было узнать о назначении запроса, не выискивая текст самого запроса). Я привык пользоваться этим макросом поэтому и использовал его. Описывать настоящую функцию не стал, ибо и так много информации сторонней в уроке.
    Ну а если что-то ещё интересует - прошу уточнить.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    01.09.2014
    Сообщений
    16
    Репутация:
    0 ±
    Почему не сохраняет другие переменные ? Я добавляю допустим "Admin", в игре я устанавливаю себе уровень "Admin" = 5. При выходе игрока срабатывает stock SaveAccount, но Admin = 5 он не записывает. Как был 0, так и остался.

    PHP код:
    format(query_stringsizeof(query_string), "%s `Admin` = '%d'"query_stringpInfo[playerid][pAdmin]); // (14+3) допустим 
    PHP код:
    stock SaveAccount(playerid)  

        new 
    query_string[(21)+(16+11)+(19+MAX_PLAYER_NAME)+(16+30)+(14+3)] = "UPDATE `accounts` SET"
         
        
    format(query_stringsizeof(query_string), "%s `player_name` = '%s'"query_stringpInfo[playerid][pName]); 
        
    format(query_stringsizeof(query_string), "%s `password` = '%s'"query_stringpInfo[playerid][pPassword]); 

        
    format(query_stringsizeof(query_string), "%s `Admin` = '%d'"query_stringpInfo[playerid][pAdmin]); // (14+3) допустим

        
    format(query_stringsizeof(query_string), "%s WHERE `ID` = '%d'"query_stringpInfo[playerid][pID]); 
        
    mysql_function_query(mysql_connect_IDquery_stringfalse"""");  
        return 
    1;  


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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Во-первых, сделайте логирование запроса
    PHP код:
    stock SaveAccount(playerid)   
    {  
        new 
    query_string[(21)+(16+11)+(19+MAX_PLAYER_NAME)+(16+30)+(14+3)] = "UPDATE `accounts` SET";  
          
        
    format(query_stringsizeof(query_string), "%s `player_name` = '%s',"query_stringpInfo[playerid][pName]);  
        
    format(query_stringsizeof(query_string), "%s `password` = '%s',"query_stringpInfo[playerid][pPassword]);  

        
    format(query_stringsizeof(query_string), "%s `Admin` = '%d'"query_stringpInfo[playerid][pAdmin]); // (14+3) допустим 

        
    format(query_stringsizeof(query_string), "%s WHERE `ID` = '%d'"query_stringpInfo[playerid][pID]);  
        
    mysql_function_query(mysql_connect_IDquery_stringfalse"""");   
        
    printf("\n\n%s\n\n"query_string);
        return 
    1;   

    Во-вторых, скиньте скрин вкладки "структура" из phpMyAdmin
    Последний раз редактировалось DeimoS; 09.10.2014 в 16:17.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    19.04.2014
    Адрес
    Уфа, Россия
    Сообщений
    319
    Репутация:
    52 ±
    PHP код:
    default:
    {
        
    ShowPlayerDialog(playeriddLoginDIALOG_STYLE_MSGBOX"Оповещение""{FFFFFF}Вы были кикнуты с сервера.\n{FF0000}Причина: Превышен лимит попыток на ввод пароля.\n{FFFFFF}Для выхода с сервера введите \"/q\" в чат""Вход""Выход");
        return 
    Kick(playerid);

    Этот диалог не выводит. Не успевает оповестить игрока перед киком.


    PHP код:
    forward KickPlayer(playerid);
    public 
    KickPlayer(playerid) return Kick(playerid);
    stock KickSendClientMessage(playeridcolormessage[])
    {
        
    SendClientMessage(playeridcolormessage);
        
    SetTimerEx("KickPlayer"10000"d"playerid);


    PHP код:
    default: KickSendClientMessage(playerid0xFE6500FF"Превышен лимит попыток на ввод пароля. Для выхода с сервера введите \"/q\""); 

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Nurick Посмотреть сообщение
    PHP код:
    default:
    {
        
    ShowPlayerDialog(playeriddLoginDIALOG_STYLE_MSGBOX"Оповещение""{FFFFFF}Вы были кикнуты с сервера.\n{FF0000}Причина: Превышен лимит попыток на ввод пароля.\n{FFFFFF}Для выхода с сервера введите \"/q\" в чат""Вход""Выход");
        return 
    Kick(playerid);

    Этот диалог не выводит. Не успевает оповестить игрока перед киком.


    PHP код:
    forward KickPlayer(playerid);
    public 
    KickPlayer(playerid) return Kick(playerid);
    stock KickSendClientMessage(playeridcolormessage[])
    {
        
    SendClientMessage(playeridcolormessage);
        
    SetTimerEx("KickPlayer"10000"d"playerid);


    PHP код:
    default: KickSendClientMessage(playerid0xFE6500FF"Превышен лимит попыток на ввод пароля. Для выхода с сервера введите \"/q\""); 
    В начало мода
    PHP код:
    forward KickPublic(playerid);
    public 
    KickPublic(playerid) return Kick(playerid);

    #define Kick(%0) SetTimerEx("KickPublic", 100, false, "i", %0) 
    Не меня ничего местами и всё, никаких проблем не будет :) Думал об этом написать, но, опять же, и так много в уроке информации, которая не относится к регистрации
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    01.09.2014
    Сообщений
    16
    Репутация:
    0 ±
    Какой-то бред. Вроде ничего не менял. Опять не сохраняет переменную pAdmin и к тому же теперь и ID аккаунта в логах показывает ID = 0. Хотя в таблице записывает ID = 111. Что это может быть?

    Логи:
    PHP код:
    UPDATE `accountsSET `Name` = 'Semen_Petrov', `Key` = '123456', `Admin` = '6' WHERE `ID` = '0' 
    Аккаунт в таблице:




    Stock как был, так и остался. Вроде ничего не менял.

    PHP код:
    stock SaveAccount(playerid)
    {
        new 
    query_string[(21)+(16+11)+(19+MAX_PLAYER_NAME)+(16+30)+(20)] = "UPDATE `accounts` SET";

        
    format(query_stringsizeof(query_string), "%s `Name` = '%s',"query_stringPlayerInfo[playerid][pName]);
        
    format(query_stringsizeof(query_string), "%s `Key` = '%s',"query_stringPlayerInfo[playerid][pKey]);
        
        
    format(query_stringsizeof(query_string), "%s `Admin` = '%d'"query_stringPlayerInfo[playerid][pAdmin]);

        
    format(query_stringsizeof(query_string), "%s WHERE `ID` = '%d'"query_stringPlayerInfo[playerid][pID]);
        
    mysql_function_query(mysql_connect_IDquery_stringfalse"""");
        
    player_logged{playerid} = 0;
        
    printf("\n\n%s\n\n"query_string);
        return 
    1;


  9. #18
    Аватар для Nurick
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.04.2014
    Адрес
    Уфа, Россия
    Сообщений
    319
    Репутация:
    52 ±
    Разве запятая не должна быть после 'Admin'

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Nurick Посмотреть сообщение
    Разве запятая не должна быть после 'Admin'
    Если запятая будет после 'Admin', то выйдет следующее:
    PHP код:
    `Admin` = '%d'WHERE `ID` = '%d' 
    Что совсем неверно. В уроке об этом сказано.



    Цитата Сообщение от Stats Посмотреть сообщение
    Какой-то бред. Вроде ничего не менял. Опять не сохраняет переменную pAdmin и к тому же теперь и ID аккаунта в логах показывает ID = 0. Хотя в таблице записывает ID = 111. Что это может быть?

    Логи:
    PHP код:
    UPDATE `accountsSET `Name` = 'Semen_Petrov', `Key` = '123456', `Admin` = '6' WHERE `ID` = '0' 
    Аккаунт в таблице:




    Stock как был, так и остался. Вроде ничего не менял.

    PHP код:
    stock SaveAccount(playerid)
    {
        new 
    query_string[(21)+(16+11)+(19+MAX_PLAYER_NAME)+(16+30)+(20)] = "UPDATE `accounts` SET";

        
    format(query_stringsizeof(query_string), "%s `Name` = '%s',"query_stringPlayerInfo[playerid][pName]);
        
    format(query_stringsizeof(query_string), "%s `Key` = '%s',"query_stringPlayerInfo[playerid][pKey]);
        
        
    format(query_stringsizeof(query_string), "%s `Admin` = '%d'"query_stringPlayerInfo[playerid][pAdmin]);

        
    format(query_stringsizeof(query_string), "%s WHERE `ID` = '%d'"query_stringPlayerInfo[playerid][pID]);
        
    mysql_function_query(mysql_connect_IDquery_stringfalse"""");
        
    player_logged{playerid} = 0;
        
    printf("\n\n%s\n\n"query_string);
        return 
    1;

    Во-первых, добавьте проверку на авторизацию:
    PHP код:
    stock SaveAccount(playerid)
    {
        if(!
    player_logged{playerid}) return 1;
        new 
    query_string[(21)+(16+11)+(19+MAX_PLAYER_NAME)+(16+30)+(20)] = "UPDATE `accounts` SET";

        
    format(query_stringsizeof(query_string), "%s `Name` = '%s',"query_stringPlayerInfo[playerid][pName]);
        
    format(query_stringsizeof(query_string), "%s `Key` = '%s',"query_stringPlayerInfo[playerid][pKey]);
        
        
    format(query_stringsizeof(query_string), "%s `Admin` = '%d'"query_stringPlayerInfo[playerid][pAdmin]);

        
    format(query_stringsizeof(query_string), "%s WHERE `ID` = '%d'"query_stringPlayerInfo[playerid][pID]);
        
    mysql_function_query(mysql_connect_IDquery_stringfalse"""");
        
    player_logged{playerid} = 0;
        
    printf("\n\n%s\n\n"query_string);
        return 
    1;

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

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

    Steve Pavlina

  11. #20
    Аватар для Stats
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.09.2014
    Сообщений
    16
    Репутация:
    0 ±
    Пожалуйста. До этого все же было нормально, в смысле когда мы разобрались с запятыми в format.

    PHP код:
    forward UploadPlayerAccount(playerid);
    public 
    UploadPlayerAccount(playerid)
    {
        
    PlayerInfo[playerid][pID] = cache_get_field_content_int(0"ID"mysql_connect_ID);
        
    PlayerInfo[playerid][pAdmin] = cache_get_field_content_int(0"Admin"mysql_connect_ID);
        
    SendClientMessage(playerid0xFFFFFF00"Вы успешно авторизировались!");
        
    player_logged{playerid} = 1;
        
    SpawnPlayer(playerid);
        return 
    1;


 

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

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

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

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

Ваши права

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