Вопросы

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

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


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

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

  • 2
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
public OnPlayerCommandReceived(playerid, cmdtext[])
{
    if (PlayerInfo[playerid][pAdmin] > 0 && !AdminLogged[playerid])
    {
        ShowPlayerDialog(playerid, D_ALOGIN, 1"{ffffff}Авторизация""{ffffff}Введите Ваш пароль от админ.доступа""Далее",">>>");
    }
}

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

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

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

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


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

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

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


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

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

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

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


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

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

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

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

 

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


Ссылка на сообщение
  • 0
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

казалось бы, причем тут формат

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


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

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

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

 

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


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

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

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


Ссылка на сообщение
  • 0
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 дайте код диалога, к которому ведёт /alogin

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


Ссылка на сообщение
  • 0
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
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

@R0m4ik 

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

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

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


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

@R0m4ik 

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


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

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

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

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


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

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

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


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

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

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

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

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

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

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


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

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

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


Ссылка на сообщение
  • 0
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

@R0m4ik

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

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

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


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

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

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

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


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

@LoX_1337, Спасибо все работает!

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

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


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

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

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

    • Mister Odin
      От Mister Odin
       
      new
       g_teleport_list[39][E_TELEPORT_LIST] = {  {"Спавн пгт.Батырево", 1802.3612, 2508.4824, 15.8887},  {"Спавн г.Арзамас", -113.5887, 977.7222, 12.0346},     {"Спавн г.Южный", 2744.2770, -2446.7246, 21.8988},     {"Центральный банк", 1852.020385,2040.791381,15.892713},  {"Рублёвка", -837.7783, 888.6161, 12.7232},  {"Казино", 1332.4252, 2358.7014, 17.6641},  {"Битва за контейнеры", 614.5167, 1722.3566, 12.0709},  {"Автосалон низкого класса", 2493.9616, -722.9544, 12.3315},  {"Автосалон среднего класса", 1407.7449, 455.4801, 13.1630},  {"Автосалон высокого класса", -14.0637, 2614.5664, 10.9892},   {"Мотосалон Harley Davidson", 785.720153, 750.465087, 12.000024},  {"Автошкола", 1909.174438,2227.679687,15.708162},  {"Военкомат", 1916.778564,2302.411376,15.574637},  {"Правительство области", -139.140975,593.789611,12.145712},  {"Отдел полиции №1 (ГИБДД)", 1906.805786,-2234.382812,11.257631},  {"Отдел полиции №2 (УМВД)", 2581.309326,-2416.139892,21.960090},  {"Отдел ФСБ", 1823.904663,2095.636718,15.848405},  {"Городская больница г.Арзамас", -285.797210,581.851562,12.120290},   {"СМИ", -317.708038,821.221679,13.051450},  {"Воинская часть", 1703.197265,1678.025878,15.279437},  {"Арзамасская ОПГ", 438.705322,1046.505126,12.002637},  {"Батыревская ОПГ", 1941.203857,2161.006591,15.705187},  {"Лыткаринская ОПГ", -2346.002441,75.257041,21.002962},  {"Шахта", 2381.5727, 1726.4451, -2.1506},  {"Завод", -1062.6697, 2204.1894, 38.0964},  {"Инкосация", 1864.1374, 2011.7136, 15.8546},  {"Транспортная Компания", 2362.1115, 1972.5627, 15.5530},  {"База механиков", 1840.918090,-118.025146,15.695312},  {"Курьерская служба доставки", 2764.509765,-2396.882568,21.890625},  {"Аренда автобуса(Южный)", 2771.041992,-2454.780761,21.845964},  {"Аренда автобуса(Арзамас)", -127.487670,943.652648,12.142824},   {"Аренда автобуса(Батырево)", 1798.986328,2529.591552,15.664262},  {"Гоночная трасса", -1568.7784, 1611.8305, 36.3971},  {"Дом на горе", -789.5397, -456.7479, 741.1422},  {"СТО и тюнинг-ателье", 1856.1375, -122.3266, 15.6888},  {"Аренда транспорта пгт.Батырево", 1763.641723,2255.673339,15.865348},  {"Аренда транспорта г.Арзамас", -36.923530,1360.673583,12.002090},  {"Аренда транспорта г.Южный", 1966.599975,-2603.943603,10.820312},  {"Тайный интерьер в Лыткарино", -2424.5818, 2846.3291, 40.7908} };