Вопросы

R0m4ik
Новичок в PAWN

Привет всем пользователям pawno-rus.ru задаюсь вопросом как заменить обычный /alogin на запрос авторизации при вводе любой команды даже не существующей? Допустим мы ввели команду "/ksdjaksdsajk" и нас попросило авторизоваться в админку тем самым чтобы можно было заменить /alogin как так сделать?

Поделиться сообщением


Ссылка на сообщение

22 ответа на этот вопрос

  • 2
LoX_1337
Активный
24 минуты назад, R0m4ik сказал:

Вылетает Компилятор

Просто пустое окно а внизу пишет типо файл сохранен

public OnPlayerCommandReceived(playerid, cmdtext[])
{
    if (PlayerInfo[playerid][pAdmin] > 0 && AdminLogged[playerid] == false)
    {
        ShowPlayerDialog(playerid, D_ALOGIN, 1"{ffffff}Авторизация""{ffffff}Введите Ваш пароль от админ.доступа""Далее",">>>");
        return 0;
    }
    return 1;
}

Проверьте весь вставленный код, возможно где-то упущена скобка.

Отредактировано пользователем LoX_1337

Заметка от DEST , создано

Не нужно использовать кнопку "Цитата" при ответе на все сообщение. Для этого используйте кнопку "@ Ответить".
Цитата обычно применяется тогда, когда необходимо процитировать лишь часть текста.

Поделиться сообщением


Ссылка на сообщение
  • 1
Sleash
Завсегдатый
public OnPlayerCommandReceived(playerid, cmdtext[])
{
    if (PlayerInfo[playerid][pAdmin] > 0 && !AdminLogged[playerid])
    {
        ShowPlayerDialog(playerid, D_ALOGIN, 1"{ffffff}Авторизация""{ffffff}Введите Ваш пароль от админ.доступа""Далее",">>>");
    }
}

@R0m4ik Вот, это должно помочь.

Проблемы была в том,что не было проверки на то, авторизовывался ли ранее администратор.

Отредактировано пользователем Sleash`en

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@R0m4ik, используете ли какой-нибудь командный процессор? Если да, то какой? Команда /alogin в моде есть ведь?

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN
3 минуты назад, Cawfee сказал:

@R0m4ik, используете ли какой-нибудь командный процессор? Если да, то какой? Команда /alogin в моде есть ведь?

Да zcmd, /alogin в моде есть.

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@R0m4ik, тогда просто в начало OnPlayerCommandReceived следует добавить вызов команды /alogin, если игрок является администратором. В результате, при вводе администратором любой команды, сначала будет вызвана команда /alogin, где осуществится процесс авторизации, затем - та команда, которую администратор вызывал изначально. Что-нибудь около такого:
 

public OnPlayerCommandReceived(playerid, cmdtext[]) {
    if (/* здесь проверка на администратора */) {
        cmd_alogin(playerid);
    }

    // здесь ваш код, если он есть
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN
41 минуту назад, Cawfee сказал:

@R0m4ik, тогда просто в начало OnPlayerCommandReceived следует добавить вызов команды /alogin, если игрок является администратором. В результате, при вводе администратором любой команды, сначала будет вызвана команда /alogin, где осуществится процесс авторизации, затем - та команда, которую администратор вызывал изначально. Что-нибудь около такого:
 


public OnPlayerCommandReceived(playerid, cmdtext[]) {
    if (/* здесь проверка на администратора */) {
        cmd_alogin(playerid);
    }

    // здесь ваш код, если он есть
}

 

Я вставил код но появилась проблема при компиляции появляется появлялся варнинг а после проверки вылетел сервер + мод перестал компилиться вот мой код:

public OnPlayerCommandReceived(playerid, cmdtext[])
{
    if (PlayerInfo[playerid][pAdmin] > 0) {
        cmd_alogin(playerid);
    }
    format(totalstring, 256, "{ffffff}Введите Ваш пароль от админ.доступа",PlayerInfo[playerid][pSendername],PlayerInfo[playerid][pAdmin]);
    ShowPlayerDialog(playerid, D_ALOGIN, 1, "{ffffff}Авторизация", totalstring, "Далее",">>>");
}

  

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@R0m4ik, тогда уж приводите к такому виду:

public OnPlayerCommandReceived(playerid, cmdtext[]) {
    if (PlayerInfo[playerid][pAdmin] > 0) {
        ShowPlayerDialog(playerid, D_ALOGIN, 1"{ffffff}Авторизация""{ffffff}Введите Ваш пароль от админ.доступа""Далее",">>>");
    }
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Sleash
Завсегдатый

@R0m4ik  + Сервер скорее всего вылетел из-за format, так как не было запроса на переменные, но вы их впихнули после текста.

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN
39 минут назад, Cawfee сказал:

@R0m4ik, тогда уж приводите к такому виду:


public OnPlayerCommandReceived(playerid, cmdtext[]) {
    if (PlayerInfo[playerid][pAdmin] > 0) {
        ShowPlayerDialog(playerid, D_ALOGIN, 1"{ffffff}Авторизация""{ffffff}Введите Ваш пароль от админ.доступа""Далее",">>>");
    }
}

 

Казалось бы все отлично но как теперь решить эту проблему? 

 

https://youtu.be/HTPZI_PVZKc если что могу скинуть код где пишет сообщение "Вы авторизовались!" и /alogin могу скинуть

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN
13 минут назад, Sleash`en сказал:

@R0m4ik дайте код диалога, к которому ведёт /alogin

Вот /alogin

 

CMD:alogin(playerid, params[])
{
    if(PlayerLogged[playerid] == 0return 1;
    if(PlayerInfo[playerid][pAdmin] < 1return 1;
    if(AdminLogged[playerid] == truereturn SendClientMessage(playerid, COLOR_GREY, "Вы уже авторизованы!");
    format(totalstring, 256"{ffffff}Введите Ваш пароль от админ.доступа",PlayerInfo[playerid][pSendername],PlayerInfo[playerid][pAdmin]);
    ShowPlayerDialog(playerid, D_ALOGIN, 1"{ffffff}Авторизация", totalstring, "Далее",">>>");
    return true;
}

А вот Диалог D_ALOGIN

 

        case D_ALOGIN:
        {
            if(response)
            {
                if(!strlen(inputtext))
                {
                    format(totalstring, 256"{ffffff}Введите Ваш пароль от админ.доступа",PlayerInfo[playerid][pSendername],PlayerInfo[playerid][pAdmin]);
                    ShowPlayerDialog(playerid, D_ALOGIN, 1"{ffffff}Авторизация", totalstring, "Далее",">>>");
                }
                else if(!strcmp(inputtext, GetAccount(PlayerInfo[playerid][pSendername], "dostup"), true))
                {
                    AdminLogged[playerid] = true;
                    SendClientMessage(playerid, COLOR_GREY, " Вы авторизовались!");
                    TogglePlayerAdminAuthorization(playerid, !IsAdminAuthorized(playerid));
                    if(IsAdminAuthorized(playerid))
                    return 1;
                }
                else
                {
                    SendClientMessage(playerid,COLOR_LIGHTRED, " Вы ввели неверный пароль!");
                    Kick(playerid);
                    format(string, 128" %s не прошел авторизацию в админ.панеле ( IP: %s )",PlayerInfo[playerid][pSendername],PlayerInfo[playerid][pIP]);
                    SendAdminMessage(0xFF4FD9FF, string);

                }
            }
            else { format(string, 128" %s отказался авторизовываться в админке ( IP: %s )",PlayerInfo[playerid][pSendername],PlayerInfo[playerid][pIP]); SendAdminMessage(0xFF4FD9FF, string); Kick(playerid); }
        }

 

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN
7 минут назад, Sleash`en сказал:

public OnPlayerCommandReceived(playerid, cmdtext[])
{
    if (PlayerInfo[playerid][pAdmin] > 0 && AdminLogged[playerid] == false)
    {
        ShowPlayerDialog(playerid, D_ALOGIN, 1"{ffffff}Авторизация""{ffffff}Введите Ваш пароль от админ.доступа""Далее",">>>");
    }
}

@R0m4ik Вот, это должно помочь.

Проблемы была в том,что не было проверки на то, авторизовывался ли ранее администратор.

Это помогает но теперь перестали работать команды. Может ли быть это связано с тем что у меня в OnPlayerCommandPerformed стоит это вобще на сервере когда ввожу команду после авторизации в админке ничего не происходит даже не пишет это сообщение

    #pragma unused cmdtext
    if(!success) return SendClientMessage(playerid,-1," Такой команды не существует, команды сервера вы можете посмотреть в {00ff00}/help");

 

Отредактировано пользователем R0m4ik

Поделиться сообщением


Ссылка на сообщение
  • 0
Sleash
Завсегдатый

@R0m4ik 

попробуйте так:

if(success == -1) return SendClientMessage(playerid,-1," Такой команды не существует, команды сервера вы можете посмотреть в {00ff00}/help");

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN
19 минут назад, Sleash`en сказал:

@R0m4ik 

попробуйте так:


if(success == -1) return SendClientMessage(playerid,-1," Такой команды не существует, команды сервера вы можете посмотреть в {00ff00}/help");

Не работает. UPD: Убрал строку с сообщение что кмд не существует а проблема с /alogin так и осталась

Отредактировано пользователем R0m4ik

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@R0m4ik, вы вводите какую-нибудь команду. Появляется окно с предложением ввести пароль администратора. Вводите. И далее ничего не происходит? А если опять набрать команду?

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN
6 минут назад, Cawfee сказал:

@R0m4ik, вы вводите какую-нибудь команду. Появляется окно с предложением ввести пароль администратора. Вводите. И далее ничего не происходит? А если опять набрать команду?

да я ввожу пароль от админки пишет что я авторизовался но если ввести существующею команду допустим /a, /mm/ /admins, в чат ничего не напишет и консоли тоже 0 реакций.

Не напишет даже "Введите /a [слово]"

И такая фигня будет твориться даже если вы игрок.

Отредактировано пользователем R0m4ik

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN
3 минуты назад, Cawfee сказал:

@R0m4ik, как сейчас выглядит OnPlayerCommandReceived?

@Cawfee вот так 

public OnPlayerCommandReceived(playerid, cmdtext[])
{
    if (PlayerInfo[playerid][pAdmin] > 0 && AdminLogged[playerid] == false)
    {
        ShowPlayerDialog(playerid, D_ALOGIN, 1"{ffffff}Авторизация""{ffffff}Введите Ваш пароль от админ.доступа""Далее",">>>");
    }
}

 

Отредактировано пользователем R0m4ik

Поделиться сообщением


Ссылка на сообщение
  • 0
LoX_1337
Активный

@R0m4ik

public OnPlayerCommandReceived(playerid, cmdtext[])
{
    if (PlayerInfo[playerid][pAdmin] > 0 && AdminLogged[playerid] == false)
    {
        ShowPlayerDialog(playerid, D_ALOGIN, 1"{ffffff}Авторизация""{ffffff}Введите Ваш пароль от админ.доступа""Далее",">>>");
    }
    return 1;
}

Отредактировано пользователем Cawfee

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN

Вылетает Компилятор

Просто пустое окно а внизу пишет типо файл сохранен

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Дебилойд
      От Дебилойд
      Здравствуйте!
      Мы ищем талантливого 3D-моделлера в команду нашего CRMP-проекта!
      Что нужно будет делать:
      Моделировать и адаптировать автомобили.
      Создавать и настраивать скины (модели персонажей).
      Большим плюсом будет:
      Умение создавать качественные и оптимизированные интерьеры.
      Если вы хотите стать частью нашей команды и развивать проект вместе с нами, пишите в ЛС. Ждем ваши портфолио!
    • LORDIKUS
      От LORDIKUS
      Уважаемые участники форума - всех приветствую, кто перешел в беседу моей темы обсуждения. В настоящее время у меня зарождается огромное желание и мысль создать собственный CR:MP проект, но столкнулся с единственной проблемой - с отсутствием команды людей, у которых будет искреннее желание ежедневно вкладывать свой труд на разработку проекта. Особого опыта в скриптинге, маппинге, дизайне или в моделировании у меня не имеется, поэтому такой критерий как опыт в определенной сфере для желающих вступить в команду я не рассматриваю. Так как проект не открыт и находится на начальной стадии создания, мое сотрудничество выстраивается на некоммерческой основе (без выплаты за проделанную работу и труд), однако я не собираюсь отрицать высокую ценность вложенного командой труд — труд, особенно на первой стадии разработки я рассматриваю превыше всего. После открытия проекта в зависимости от коммерции и чистой прибыли каждый участник будет получать настоящую выплату, однако это также может убить еще значительное время. Мне нужна команда, которая проявит искренний интерес в создании общего между командой CR:MP проекта, пожертвует свое время, а также вложит собственный труд благодаря заработанным навыкам. Если вас заинтересовала данная тема обсуждения, пожалуйста, свяжитесь со мной по любым возможным и удобным для вас контактам связи ниже. Спасибо всем, кто зашел в мою беседу!

      🔗 Спец. Связь:
      — DISCORD: https://discord.com/users/1452715348196589691 (перейти по ссылке и добавить в друзья) ИЛИ _shin833_ (ввести никнейм и отправить запрос дружбы)
      — VK: https://vk.com/shin833
      — TG: https://t.me/s_hin833
    • Korochansky
      От Korochansky
      Настало время объявить о скором выпуске первого релиза среды разработки под названием Spawn.

      В настоящее время программа находится на заключительных этапах доработки кода и локализации интерфейса.
      Таким образом, в течение следующей недели будет выпущена быстрая и современная среда разработки, обладающая следующими возможностями (о которых я расскажу сейчас, а о других — позже):
       
      Полнофункциональный локальный Git: 
      Индексирование, фиксации, индикаторы состояния и мягкий/жесткий сброс до любой точки сохранения одним щелчком мыши. Разрабатывайте свой игровой сервер, не боясь его сломать.
      Новички могут рассматривать это как историю кодовой базы вашего сервера (что и есть на самом деле).
       
      Чистый UTF-8 (без BOM): 
      Полный отказ от устаревшей кодировки Windows-1251 (CP1251) для абсолютной стабильности и идеальной совместимости с Git.
      Реализация поддержки CP1251 привела бы к нестабильному поведению программы и ухудшила бы пользовательский опыт.
       
      История изменений строк: Редактор выделяет измененные строки в реальном времени в полях рядом с номерами строк. Это позволяет мгновенно видеть границы изменений, внесенных с момента открытия файла.
       
      Сопоставление и выделение фигурных скобок: мгновенное выделение открывающих и закрывающих фигурных скобок для быстрой навигации по структуре кода и защиты от ошибок компиляции.
       
      Интеграция с SAMPCTL: готовая к использованию автоматизация процессов. Сборка, запуск сервера и менеджер зависимостей (управление библиотеками и плагинами) работают напрямую из интерфейса редактора.
       
      И многое другое...
       
      И самое главное: проект будет с открытым исходным кодом под лицензией GPLv3!
      Следите за новостями о выпуске в репозитории: https://github.com/daniilkorochansky/spawn
    • KodBi
      От KodBi
      шапка
      по одиночке работают
      нужны оба