Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 30 ПерваяПервая 123412 ... ПоследняяПоследняя
Показано с 11 по 20 из 299
  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
    Адрес
    Восточный Мордор
    Сообщений
    4,353
    Репутация:
    1633 ±
    Если речь о mysql_tquery, то, если открыть инклюд MySQL, можно увидеть такой макрос:
    PHP код:
    #define mysql_function_query(%0,%1,%2,%3,"%4"%5)     mysql_tquery(%0,%1,%3,#%4%5) 
    То бишь, разницы никакой нет. Просто в mysql_function_query добавлен параметр кэширования, как я понимаю, для наглядности во время чтения кода (то бишь, чтоб можно было узнать о назначении запроса, не выискивая текст самого запроса). Я привык пользоваться этим макросом поэтому и использовал его. Описывать настоящую функцию не стал, ибо и так много информации сторонней в уроке.
    Ну а если что-то ещё интересует - прошу уточнить.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 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
    Адрес
    Восточный Мордор
    Сообщений
    4,353
    Репутация:
    1633 ±
    Во-первых, сделайте логирование запроса
    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.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 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
    Адрес
    Восточный Мордор
    Сообщений
    4,353
    Репутация:
    1633 ±
    Цитата Сообщение от 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) 
    Не меня ничего местами и всё, никаких проблем не будет :) Думал об этом написать, но, опять же, и так много в уроке информации, которая не относится к регистрации
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 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
    Адрес
    Восточный Мордор
    Сообщений
    4,353
    Репутация:
    1633 ±
    Цитата Сообщение от 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 покажите
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 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 из 30 ПерваяПервая 123412 ... ПоследняяПоследняя

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

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

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

Ваши права

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