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

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Ice_Sochi, отловом наличия натива какого-то или лучше библиотеки (если клиентмод её регает, конечно).
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@7pElllHuK, посмотри как написаны плагины для взаимодействием админменю SM. Там проверяется наличие библиотеки. Также в кое-каких (обычно в плагинах для випки рико) плагинах проверяется наличие натива.
Если нужного элемента не обнаружено, то код не выполняется. Но в любом случае нужно чтобы соответствующий инклюд был добавлен в исходник плагина.
Сообщения автоматически склеены:

@Synd1qate, это и тебе ответ, кстати.
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
@7pElllHuK, посмотри как написаны плагины для взаимодействием админменю SM. Там проверяется наличие библиотеки. Также в кое-каких (обычно в плагинах для випки рико) плагинах проверяется наличие натива.
Если нужного элемента не обнаружено, то код не выполняется. Но в любом случае нужно чтобы соответствующий инклюд был добавлен в исходник плагина.
Сообщения автоматически склеены:

@Synd1qate, это и тебе ответ, кстати.
Хорошо, огромное спасибо
 

GG Allin

Участник
Сообщения
15
Реакции
5
Добрый! Подскажите, как можно побегать с ботом VIP чтобы его спасти? Я карту скачал as_Arctic. У меня не добавляется этот заложник. Я не знаю, как его добавить. Может есть плагины или нужно всего лиш добавить его типа bot_add_vip ? Спасибо. V34 SourceMod Version: 1.7.3-stable+5265

Пишут вот такое: игра сама случайным образом назначает VIP-ом одного из игроков в команде спецназа (CT). Если бот случайно становится VIP-ом, он будет выполнять свою роль..
По-моему возле имени должно появится слово VIP, но у меня ничего не происходит.

добавил вот этот плагин
L 09/07/2024 - 17:56:56: [SM] Displaying call stack trace for plugin "VIPMod.smx":
L 09/07/2024 - 17:56:56: [SM] [0] Line 19, vip/configuration.inc::RegisterCVars()
L 09/07/2024 - 17:56:56: [SM] [1] Line 35, VIPMod.sp::OnPluginStart()
 

Вложения

  • Снимок.JPG
    Снимок.JPG
    47.1 КБ · Просмотры: 26
Последнее редактирование:

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Добрый! Подскажите, как можно побегать с ботом VIP чтобы его спасти? Я карту скачал as_Arctic. У меня не добавляется этот заложник. Я не знаю, как его добавить. Может есть плагины или нужно всего лиш добавить его типа bot_add_vip ? Спасибо. V34 SourceMod Version: 1.7.3-stable+5265

Пишут вот такое: игра сама случайным образом назначает VIP-ом одного из игроков в команде спецназа (CT). Если бот случайно становится VIP-ом, он будет выполнять свою роль..
По-моему возле имени должно появится слово VIP, но у меня ничего не происходит.

добавил вот этот плагин
L 09/07/2024 - 17:56:56: [SM] Displaying call stack trace for plugin "VIPMod.smx":
L 09/07/2024 - 17:56:56: [SM] [0] Line 19, vip/configuration.inc::RegisterCVars()
L 09/07/2024 - 17:56:56: [SM] [1] Line 35, VIPMod.sp::OnPluginStart()
Приветствую. Ну насчёт игры с ботом(-ами), можете обратиться сюда
 

-=|УЧЕНИК|=-

вся жизнь,сплошной цирк.
Сообщения
876
Реакции
212
Всем привет!
Возможно ли что-то подобное и простенькое написать,как в этом плагине?
Ну только чтоб не по стимам было,а по флагам.
Или может возможно этот отредактировать.
Заранее благодарю
 

Вложения

  • cmd_access.sp
    1.3 КБ · Просмотры: 16

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Всем привет!
Возможно ли что-то подобное и простенькое написать,как в этом плагине?
Ну только чтоб не по стимам было,а по флагам.
Или может возможно этот отредактировать.
Заранее благодарю
Возможно
 

Raptor01

Участник
Сообщения
4
Реакции
0
Вопрос такой, как лучше сделать телепортировать все аналогичные сущности до одной сущности и расположить их рядом до определенного радиуса?

PHP:
...
    IdWitch[witchid] = IdWitch[witchid];
            GetEntPropVector(witchid, Prop_Send, "m_vecOrigin", vecPos);
            
            vecPos[0]+=vecDir[0];
            vecPos[1]+=vecDir[1];
            vecPos[2]+=vecDir[2];
            AddWitch();
...
    
    public TeleportWitch()
{
    for (int entity = 1; entity <= GetMaxEntities(); entity++)
    {
        char netclass[64];
        if (IsValidEdict(entity) && GetEntityNetClass(entity, netclass, sizeof(netclass)))
        {
            if(StrEqual(netclass, "Witch"))
            {
                if(entity != IdWitch[entity])
                {
                    vecPos[0]+=vecDir[0]+20.0;
                    vecPos[1]+=vecDir[1]+20.0;
                    //vecPos[2]+=vecDir[2];
                    TeleportEntity(entity, vecPos, NULL_VECTOR, NULL_VECTOR);
                }
            }
        }
    }
}
 

DarkerZ

Участник
Сообщения
395
Реакции
175
Вопрос такой, как лучше сделать телепортировать все аналогичные сущности до одной сущности и расположить их рядом до определенного радиуса?

PHP:
...
    IdWitch[witchid] = IdWitch[witchid];
            GetEntPropVector(witchid, Prop_Send, "m_vecOrigin", vecPos);
           
            vecPos[0]+=vecDir[0];
            vecPos[1]+=vecDir[1];
            vecPos[2]+=vecDir[2];
            AddWitch();
...
   
    public TeleportWitch()
{
    for (int entity = 1; entity <= GetMaxEntities(); entity++)
    {
        char netclass[64];
        if (IsValidEdict(entity) && GetEntityNetClass(entity, netclass, sizeof(netclass)))
        {
            if(StrEqual(netclass, "Witch"))
            {
                if(entity != IdWitch[entity])
                {
                    vecPos[0]+=vecDir[0]+20.0;
                    vecPos[1]+=vecDir[1]+20.0;
                    //vecPos[2]+=vecDir[2];
                    TeleportEntity(entity, vecPos, NULL_VECTOR, NULL_VECTOR);
                }
            }
        }
    }
}
Может что-то отсюда для себя подчеркнёшь
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Всем добрый день, подскажите пожалуйста, как получить ID выбранного игрока в MenuHandler_ShowPlayerMenu
Пробовал так:
Попытка:
char sTarget[10];
int iUserId, iTarget;
hMenu.GetItem(iItem, sTarget, sizeof(sTarget));
iUserId = StringToInt(sTarget);
iTarget = GetClientOfUserId(iUserId);
либо работает не корректно, либо выбивает ошибку (то индекс клиента некорректный, то выдает не того игрока что я выбрал)

C-подобный:
void ShowUser(int iClient)
{
    Menu hMenu = new Menu(MenuHandler_ShowPlayerMenu);
    hMenu.ExitBackButton = true;

    char sBuff[MAX_NAME_LENGTH], id[8];

    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i) && !IsClientSourceTV(i))
        {
            IntToString(GetClientUserId(i), id, sizeof(id));
            GetClientName(i, sBuff, sizeof(sBuff));
            hMenu.AddItem(id, sBuff);
        }
    }

    hMenu.SetTitle("Выберите игрока (%i):\n", hMenu.ItemCount);
    hMenu.Display(iClient, MENU_TIME_FOREVER);
}

public int MenuHandler_ShowPlayerMenu(Menu hMenu, MenuAction mAction, int iClient, int iItem)
{
    switch(mAction)
    {
        case MenuAction_Select:
        {
            char iTarget[8];
            hMenu.GetItem(iItem, iTarget, sizeof(iTarget));
        }

        case MenuAction_End: delete hMenu;
    }

    return 0;
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@7pElllHuK, попробуй размер для char, где у тебя UserId, сделать везде одинаковым и равным 12 (всё равно компилер округляет размер до большего числа, кратного 4).
Просто UserId может у тебя оказаться из 8 или более символов, а ты передаёшь только первые 7 из них.
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
@7pElllHuK, попробуй размер для char, где у тебя UserId, сделать везде одинаковым и равным 12 (всё равно компилер округляет размер до большего числа, кратного 4).
Просто UserId может у тебя оказаться из 8 или более символов, а ты передаёшь только первые 7 из них.
Помогло, спасибо большое
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Подскажите пожалуйста, что это за ошибка и из-за чего она появляется: Cbuf_AddTextWithMarkers: buffer overflow, сама ошибка в игре, 92 ксс
 

Synd1qate

Участник
Сообщения
745
Реакции
259
Подскажите пожалуйста, что это за ошибка и из-за чего она появляется: Cbuf_AddTextWithMarkers: buffer overflow, сама ошибка в игре, 92 ксс
Думаю это описание и решение
 
Сверху Снизу