Написание плагинов

Anpic1

Участник
Сообщения
213
Реакции
46
Здравствуйте. Кто может прикрепить команду !contact при проверки игрока, чтобы игрок не просто написал Discord в чат, а написал команду (Пример !contact Alesha#13241). Если игрок уже ввел дискорд, ему бы писать, что вы уже ввели контакт
 

Вложения

  • CM_cc 1.1.8.sp
    16.4 КБ · Просмотры: 8
Последнее редактирование:

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Может кто помочь с плагином?
Нужно убрать привязку вип, сделать доступ всем игрокам по команде !kill
Не бесплатно, напишите в лс кто готов помочь.
Сообщения автоматически склеены:

Попробуй, если работает, то добавлю команду
 

Вложения

  • killscreen.smx
    20.6 КБ · Просмотры: 1

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Помогите пожалуйста, как это реализовать?
Если игрок вип, идет проверка групп между той что сейчас стоит у игрока и той что мне нужна
Если группы равны, то выполняется код, если нет то выполняется другой код
VIP Rikko
 

danil253467

💘Italo-Disco & Neon One Love💘
Сообщения
90
Реакции
52
Помогите пожалуйста, как это реализовать?
Если игрок вип, идет проверка групп между той что сейчас стоит у игрока и той что мне нужна
Если группы равны, то выполняется код, если нет то выполняется другой код
VIP Rikko
C++:
char sCurrentGroup[32];
char sNeedGroup[32] = "Твоя группа";

VIP_GetClientVIPGroup(client, sCurrentGroup, sizeof(sCurrentGroup));

if(strcmp(sNeedGroup, sCurrentGroup) == 0)
{
    // Здесь выполняется один код
}
else
{
    // Здесь выполняется другой код
}
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
C++:
char sCurrentGroup[32];
char sNeedGroup[32] = "Твоя группа";

VIP_GetClientVIPGroup(client, sCurrentGroup, sizeof(sCurrentGroup));

if(strcmp(sNeedGroup, sCurrentGroup) == 0)
{
    // Здесь выполняется один код
}
else
{
    // Здесь выполняется другой код
}
Спасибо большое
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Подскажите пожалуйста, где тут надо поставить повтор функции
C-подобный:
int GiveTakeValueHandler(Menu hMenu, MenuAction mAction, int iClient, int iPick)
{
    switch (mAction)
    {
        case MenuAction_End: delete hMenu;
        case MenuAction_Cancel: if (iPick == MenuCancel_ExitBack) g_iAdminType[0][iClient] == 2 ? CasesAdminMenu(iClient):ChoiceCase(iClient);
        case MenuAction_Select:
        {
            char sPick[32], sValues[2][16];
            hMenu.GetItem(iPick, sPick, sizeof sPick);
            
            ExplodeString(sPick, "|", sValues, sizeof sValues, sizeof sValues[]);

            ChangeValueMenu(iClient, sValues[0], sValues[1]);           
        }
    }
}

Вот предупреждение компиллера: warning 209: function "CasesAdminMenu" should return a value
warning 209: function "ChoiceCase" should return a value
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Подскажите пожалуйста, где тут надо поставить повтор функции
C-подобный:
int GiveTakeValueHandler(Menu hMenu, MenuAction mAction, int iClient, int iPick)
{
    switch (mAction)
    {
        case MenuAction_End: delete hMenu;
        case MenuAction_Cancel: if (iPick == MenuCancel_ExitBack) g_iAdminType[0][iClient] == 2 ? CasesAdminMenu(iClient):ChoiceCase(iClient);
        case MenuAction_Select:
        {
            char sPick[32], sValues[2][16];
            hMenu.GetItem(iPick, sPick, sizeof sPick);
         
            ExplodeString(sPick, "|", sValues, sizeof sValues, sizeof sValues[]);

            ChangeValueMenu(iClient, sValues[0], sValues[1]);        
        }
    }
}

Вот предупреждение компиллера: warning 209: function "CasesAdminMenu" should return a value
warning 209: function "ChoiceCase" should return a value
C++:
int GiveTakeValueHandler(Menu hMenu, MenuAction mAction, int iClient, int iPick)
{
    switch (mAction)
    {
        case MenuAction_End: delete hMenu;
        case MenuAction_Cancel: if (iPick == MenuCancel_ExitBack) g_iAdminType[0][iClient] == 2 ? CasesAdminMenu(iClient):ChoiceCase(iClient);
        case MenuAction_Select:
        {
            char sPick[32], sValues[2][16];
            hMenu.GetItem(iPick, sPick, sizeof sPick);
          
            ExplodeString(sPick, "|", sValues, sizeof sValues, sizeof sValues[]);

            ChangeValueMenu(iClient, sValues[0], sValues[1]);         
        }
    }
    return 0;
}
функции CasesAdminMenu и ChoiceCase отправьте, либо сами в конце добавить возвращающее значение
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
C++:
int GiveTakeValueHandler(Menu hMenu, MenuAction mAction, int iClient, int iPick)
{
    switch (mAction)
    {
        case MenuAction_End: delete hMenu;
        case MenuAction_Cancel: if (iPick == MenuCancel_ExitBack) g_iAdminType[0][iClient] == 2 ? CasesAdminMenu(iClient):ChoiceCase(iClient);
        case MenuAction_Select:
        {
            char sPick[32], sValues[2][16];
            hMenu.GetItem(iPick, sPick, sizeof sPick);
         
            ExplodeString(sPick, "|", sValues, sizeof sValues, sizeof sValues[]);

            ChangeValueMenu(iClient, sValues[0], sValues[1]);        
        }
    }
    return 0;
}
функции CasesAdminMenu и ChoiceCase отправьте, либо сами в конце добавить возвращающее значение
Все так же, предупреждение осталось
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Что вы пишете? Вашего текста нет, добавли только return 0;
1676994340551.png
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
void CasesAdminMenu(int iClient)
{
Menu hMenu = new Menu(CasesAdminMenuHandler);

hMenu.SetTitle("Кейсы: Управление\n ");

hMenu.AddItem(NULL_STRING, "Изменить количество кейсов");
hMenu.AddItem(NULL_STRING, "Изменить количество ключей");
hMenu.AddItem(NULL_STRING, "Изменить количество универсальных ключей\n ");
hMenu.AddItem(NULL_STRING, "Сбросить перезарядку кейса\n ");

hMenu.AddItem(NULL_STRING, "Подкрутка");

hMenu.ExitBackButton = true;
hMenu.Display(iClient, 0);
return CasesAdminMenu;
}

void ChoiceCase(int iClient)
{
Menu hMenu = new Menu(ChoiceCaseMenuMenuHandler);

hMenu.SetTitle("Кейсы: Выберите кейс\n ");

char sCaseID[8];

for (int i; i < MAX_CASES; i++)
{
if (g_iCasesValues.bExist)
{
IntToString(i, sCaseID, sizeof sCaseID);
hMenu.AddItem(sCaseID, g_iCasesValues.sCaseName);
}
}

hMenu.ExitBackButton = true;
hMenu.Display(iClient, 0);
}

Ну как обычно, раза 2 ответили о и все, дальше думай сам
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
warning 209: function "CasesAdminMenu" should return a value
warning 209: function "ChoiceCase" should return a value
Так, а где код этих функций, раз они что-то должны возвращать, и где ты "повтор функции" вычитал?
И тебе правильно написали: в конце функции GiveTakeValueHandler() должна быть строка с return 0;, чтобы компилятор SM1.11+ не ругался.
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Так, а где код этих функций, раз они что-то должны возвращать, и где ты "повтор функции" вычитал?
И тебе правильно написали: в конце функции GiveTakeValueHandler() должна быть строка с return 0;, чтобы компилятор SM1.11+ не ругался.
Код я выше скинул, перед вашим сообщением, return 0; писал, не помогло, предупреждение осталось
 

danil253467

💘Italo-Disco & Neon One Love💘
Сообщения
90
Реакции
52
Подскажите пожалуйста, где тут надо поставить повтор функции
C-подобный:
int GiveTakeValueHandler(Menu hMenu, MenuAction mAction, int iClient, int iPick)
{
    switch (mAction)
    {
        case MenuAction_End: delete hMenu;
        case MenuAction_Cancel: if (iPick == MenuCancel_ExitBack) g_iAdminType[0][iClient] == 2 ? CasesAdminMenu(iClient):ChoiceCase(iClient);
        case MenuAction_Select:
        {
            char sPick[32], sValues[2][16];
            hMenu.GetItem(iPick, sPick, sizeof sPick);
           
            ExplodeString(sPick, "|", sValues, sizeof sValues, sizeof sValues[]);

            ChangeValueMenu(iClient, sValues[0], sValues[1]);          
        }
    }
}

Вот предупреждение компиллера: warning 209: function "CasesAdminMenu" should return a value
warning 209: function "ChoiceCase" should return a value
Попробуйте вот так сделать...
C++:
int GiveTakeValueHandler(Menu hMenu, MenuAction mAction, int iClient, int iPick)
{
    switch (mAction)
    {
        case MenuAction_End: delete hMenu;
        case MenuAction_Cancel:
        {
            if(iPick == MenuCancel_ExitBack)
            {
                if(g_iAdminType[0][iClient] == 2)
                {
                    CasesAdminMenu(iClient);
                }
                else
                {
                    eChoiceCase(iClient);
                }
            }
        }
        case MenuAction_Select:
        {
            char sPick[32], sValues[2][16];
            hMenu.GetItem(iPick, sPick, sizeof sPick);
            
            ExplodeString(sPick, "|", sValues, sizeof sValues, sizeof sValues[]);

            ChangeValueMenu(iClient, sValues[0], sValues[1]);           
        }
    }
   return 0;
}
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Попробуйте вот так сделать...
C++:
int GiveTakeValueHandler(Menu hMenu, MenuAction mAction, int iClient, int iPick)
{
    switch (mAction)
    {
        case MenuAction_End: delete hMenu;
        case MenuAction_Cancel:
        {
            if(iPick == MenuCancel_ExitBack)
            {
                if(g_iAdminType[0][iClient] == 2)
                {
                    CasesAdminMenu(iClient);
                }
                else
                {
                    eChoiceCase(iClient);
                }
            }
        }
        case MenuAction_Select:
        {
            char sPick[32], sValues[2][16];
            hMenu.GetItem(iPick, sPick, sizeof sPick);
           
            ExplodeString(sPick, "|", sValues, sizeof sValues, sizeof sValues[]);

            ChangeValueMenu(iClient, sValues[0], sValues[1]);          
        }
    }
   return 0;
}
Спасибо большое, помогло)
Сообщения автоматически склеены:

?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
Код я выше скинул
заключай код между тегами [CODE][/CODE], а не [SPOILER][/SPOILER]

Эта функции не должна ничего возвращать, потому что они - void
C-подобный:
void CasesAdminMenu(int iClient)
{
    Menu hMenu = new Menu(CasesAdminMenuHandler);

    hMenu.SetTitle("Кейсы: Управление\n ");

    hMenu.AddItem(NULL_STRING, "Изменить количество кейсов");
    hMenu.AddItem(NULL_STRING, "Изменить количество ключей");
    hMenu.AddItem(NULL_STRING, "Изменить количество универсальных ключей\n ");
    hMenu.AddItem(NULL_STRING, "Сбросить перезарядку кейса\n ");

    hMenu.AddItem(NULL_STRING, "Подкрутка");

    hMenu.ExitBackButton = true;
    hMenu.Display(iClient, 0);
}
Здесь нужно было убрать return CasesAdminMenu;

C-подобный:
void ChoiceCase(int iClient)
{
    Menu hMenu = new Menu(ChoiceCaseMenuMenuHandler);

    hMenu.SetTitle("Кейсы: Выберите кейс\n ");

    char sCaseID[8];
    for (int i; i < MAX_CASES; i++)
    { 
        if (g_iCasesValues.bExist)
        {  
            IntToString(i, sCaseID, sizeof sCaseID);
            hMenu.AddItem(sCaseID, g_iCasesValues.sCaseName);
        }
    }

    hMenu.ExitBackButton = true;
    hMenu.Display(iClient, 0);
}
А тут изначально всё норм было.
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
заключай код между тегами [CODE][/CODE], а не [SPOILER][/SPOILER]

Эта функции не должна ничего возвращать, потому что они - void
C-подобный:
void CasesAdminMenu(int iClient)
{
    Menu hMenu = new Menu(CasesAdminMenuHandler);

    hMenu.SetTitle("Кейсы: Управление\n ");

    hMenu.AddItem(NULL_STRING, "Изменить количество кейсов");
    hMenu.AddItem(NULL_STRING, "Изменить количество ключей");
    hMenu.AddItem(NULL_STRING, "Изменить количество универсальных ключей\n ");
    hMenu.AddItem(NULL_STRING, "Сбросить перезарядку кейса\n ");

    hMenu.AddItem(NULL_STRING, "Подкрутка");

    hMenu.ExitBackButton = true;
    hMenu.Display(iClient, 0);
}
Здесь нужно было убрать return CasesAdminMenu;

C-подобный:
void ChoiceCase(int iClient)
{
    Menu hMenu = new Menu(ChoiceCaseMenuMenuHandler);

    hMenu.SetTitle("Кейсы: Выберите кейс\n ");

    char sCaseID[8];
    for (int i; i < MAX_CASES; i++)
    {
        if (g_iCasesValues.bExist)
        { 
            IntToString(i, sCaseID, sizeof sCaseID);
            hMenu.AddItem(sCaseID, g_iCasesValues.sCaseName);
        }
    }

    hMenu.ExitBackButton = true;
    hMenu.Display(iClient, 0);
}
А тут изначально всё норм было.
Понял, Спасибо большое
Сообщения автоматически склеены:

Подскажите пожалуйста, как это реализовать:
Есть буфер с определенными словами (например: Телефон, планшет, ноутбук, пк) которые берется с конфига
Как сделать так чтоб эти слова выводились по центру экрана так, чтоб показывало текущее слово, предыдущее и следующее
Например:
Телефон (это предыдущее)
Планшет (это текущее)
Ноутбук (это следующее)
 
Последнее редактирование:

pe4enka

Участник
Сообщения
18
Реакции
0
Привет, пишу по поводу помощи с сервером.
Есть небольшая кучка основных проблем и багов:
1 Не работает VipRegenHp выше 100hp (Лечит до 100 дальше не идёт)
2 Аналогичнная проблема со шприцами
3 Не работает список вип игроков в Admin панельке
4 Плагин Whistle не воспроизводит музыку и нужно что бы он срабатывал при нажатие на E+R
5 Не у всех скачиваются скины с FASTDL и бегают большие Ероры
Если можете что то отдельно подправить буду рад
 
Сверху Снизу