Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 13 из 31 ПерваяПервая ... 3 11 12 13 14 15 23 ... ПоследняяПоследняя
Показано с 121 по 130 из 308
  1. #121
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от stimorol Посмотреть сообщение
    DeimoS, здравствуйте. Возник вопрос по проверке авторизовался игрок или нет.
    Если мне нужно использовать данную проверку в командах, можно сделать так?:
    PHP код:
    if(!player_is_authorized{playerid}) return true
    Пример команды:
      Открыть/закрыть

    PHP код:
    CMD:hp(playerid)
    {
        if(!
    player_is_authorized{playerid}) return true;
        
    SetPlayerHealth(playerid100);
        return 
    true;

    Да, именно так и нужно делать. Можно и сообщение выводить при этом.
    Хотя проще не в каждой команде делать проверку, а, в случае с DC_CMD, в том же OnPlayerCommandReceived. Например, так:
    PHP код:
    public OnPlayerCommandReceived(playeridcmdtext[])
    {
        if(!
    player_is_authorized{playerid}) return 0;// запретить выполнение команды
        /*Вариант с сообщением
        if(!player_is_authorized{playerid})
        {
            SendClientMessage(playerid, 0xFF0000FF, "Ошибка: {FFFFFF}Авторизируйтесь, прежде чем использовать команды");
            return 0;// запретить выполнение команды
        }*/
        
    return 1// разрешить выполнение команды

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    04.08.2015
    Сообщений
    55
    Репутация:
    1 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Да, именно так и нужно делать. Можно и сообщение выводить при этом.
    Хотя проще не в каждой команде делать проверку, а, в случае с DC_CMD, в том же OnPlayerCommandReceived. Например, так:
    PHP код:
    public OnPlayerCommandReceived(playeridcmdtext[])
    {
        if(!
    player_is_authorized{playerid}) return 0;// запретить выполнение команды
        /*Вариант с сообщением
        if(!player_is_authorized{playerid})
        {
            SendClientMessage(playerid, 0xFF0000FF, "Ошибка: {FFFFFF}Авторизируйтесь, прежде чем использовать команды");
            return 0;// запретить выполнение команды
        }*/
        
    return 1// разрешить выполнение команды

    Т.е. если добавить в мод паблик:
    PHP код:
    public OnPlayerCommandReceived(playeridcmdtext[])
    {
        if(!
    player_is_authorized{playerid}) return false;
        return 
    true;

    то в будущем можно не добавлять в каждую команду проверку:
    PHP код:
    if(!player_is_authorized{playerid}) return true
    Всё правильно?

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

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    Все так и есть.

  4. #124
    Аватар для stimorol
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.08.2015
    Сообщений
    55
    Репутация:
    1 ±
    Возник ещё кое-какой вопрос.

    Вот я оптимизировал код, который нужно вставить в паблик OnPlayerConnect:
    PHP код:
    GetPlayerName(playeridPlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    static 
    fmt_str[] = "SELECT * FROM `accounts` WHERE `Name` = '%s'";
    new 
    query_string[sizeof(fmt_str)-2+MAX_PLAYER_NAME];
    format(query_stringsizeof(query_string), fmt_strPlayerInfo[playerid][pName]);
    mysql_function_query(mysql_connect_idquery_stringtrue"CheckRegisterPlayer""i"playerid); 
    В строке:
    PHP код:
    format(query_stringsizeof(query_string), fmt_strPlayerInfo[playerid][pName]); 
    Нужно использовать format или mysql_format? Или вообще без разницы?

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

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

    Вот я оптимизировал код, который нужно вставить в паблик OnPlayerConnect:
    PHP код:
    GetPlayerName(playeridPlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    static 
    fmt_str[] = "SELECT * FROM `accounts` WHERE `Name` = '%s'";
    new 
    query_string[sizeof(fmt_str)-2+MAX_PLAYER_NAME];
    format(query_stringsizeof(query_string), fmt_strPlayerInfo[playerid][pName]);
    mysql_function_query(mysql_connect_idquery_stringtrue"CheckRegisterPlayer""i"playerid); 
    В строке:
    PHP код:
    format(query_stringsizeof(query_string), fmt_strPlayerInfo[playerid][pName]); 
    Нужно использовать format или mysql_format? Или вообще без разницы?
    В данном случае без разницы
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    16.11.2015
    Сообщений
    116
    Репутация:
    10 ±
    Деймос, может в урок регистрации добавишь ту часть кода что скидывал мне по mysql отслеживание качества подключений? Будет 2 варианта, простой и более менее сложный.

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

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    16.11.2015
    Сообщений
    116
    Репутация:
    10 ±
    Код:
    mysql_connect_ID = mysql_connect(данные_для_подключения);
    MySQLConnectError(mysql_errno(), 0);
    
    stock MySQLConnectError(error_id, attempt = 0)
    {
        switch(error_id)
        {
            case 0:
            {
                SetGameModeText("Evil Scripter v.0.1");
                SendRconCommand("hostname ServerName");
                SendRconCommand("language Русский/Russian");
                SendRconCommand("weburl DeimoS");
                if(attempt) SendRconCommand("password 0");
                print("Подключение к базе данных удалось");
                return 1;
            }
            case 1044:
            {
                print("Подключение к базе данных не удалось [Указано неизвестное имя пользователя]");
                SendRconCommand("hostname MySQL: Неизвестное имя пользователя");
                SendRconCommand("password 666555");
            }
            case 1045:
            {
                print("Подключение к базе данных не удалось [Указан неизвестный пароль]");
                SendRconCommand("hostname MySQL: Неизвестный пароль");
                SendRconCommand("password 666555");
            }
            case 1049:
            {
                print("Подключение к базе данных не удалось [Указана неизвестная база данных]");
                SendRconCommand("hostname MySQL: Неизвестная база данных");
                SendRconCommand("password 666555");
            }
            case 2003:
            {
                print("Подключение к базе данных не удалось [Хостинг с базой данных недоступен]");
                SendRconCommand("hostname MySQL: Хостинг недоступен");
                SendRconCommand("password 666555");
            }
            case 2005:
            {
                print("Подключение к базе данных не удалось [Указан неизвестный адрес хостинга]");
                SendRconCommand("hostname MySQL: Невалидный адрес хостинга");
                SendRconCommand("password 666555");
            }
            default:
            {
                printf("Подключение к базе данных не удалось [Неизвестная ошибка. Код ошибки: <%d>]", error_id);
                new string[38+11];
                format(string, sizeof(string), "hostname MySQL: Неизвестная ошибка [%d]", error_id);
                SendRconCommand(string);
                SendRconCommand("password 666555");
            }
        }
        SendRconCommand("language Closed [MySQL_Error]");
        SendRconCommand("weburl Closed [MySQL_Error]");
        SetGameModeText("Closed [MySQL_Error]");
        SetTimer("@___Reconnect_MySQL", 1000, 0);
        return 1;
    } 
    
    @___Reconnect_MySQL();
    @___Reconnect_MySQL()
    {
        mysql_close(mysql_connect_ID);
        mysql_connect_ID = mysql_connect(данные_для_подключения);
        MySQLConnectError(mysql_errno(), 1);
        return 1;
    }

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

    Статус
    Оффлайн
    Регистрация
    04.08.2015
    Сообщений
    55
    Репутация:
    1 ±
    Деймос, привет.

    Можешь пожалуйста объяснить принцип подсчёта символов для записи в query_string, в данном стоке:
    PHP код:
    stock SaveAccount(playerid

        new 
    query_string[(21)+(15+11)+(19+MAX_PLAYER_NAME)+(16+30)] = "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 WHERE `id` = '%d'"query_stringpInfo[playerid][pID]); 
        
    mysql_function_query(mysql_connect_idquery_stringfalse""""); 
        return 
    1

    Просто уже сижу битые 40 минут, пытаюсь понять, но увы всё не доходит.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Сначала идёт подсчёт тех строк, что нам уже известны и что 100% меняться не будут
    (21) - "UPDATE `accounts` SET" - тут и так всё понятно
    (15+11) - "%s WHERE `id` = '%d'" - 15 (вообще 16 :c) на саму строку и 11 символов для ID
    Далее уже идут строки, которые могут постоянно изменяться/добавляться (те format, что находятся между объявлением массива и последним format с WERE)
    (19+MAX_PLAYER_NAME) - "%s `player_name` = '%s'," - 19 (опять же, 20, но это уже мой косяк, ибо лень было пересчитывать размеры строк и просто скопировал массивы со старого урока :с) на саму строку и MAX_PLAYER_NAME под ник
    (16+30) - "%s `password` = '%s'" - 16 под строку и 30 под пароль
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  11. Пользователь сказал cпасибо:
    stimorol (21.03.2016)
 

 
Страница 13 из 31 ПерваяПервая ... 3 11 12 13 14 15 23 ... ПоследняяПоследняя

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

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

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

Ваши права

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