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

parthi

Участник
Сообщения
40
Реакции
2
Кто может помочь ?

получить всегда 1 пулю на "deagle" (AWP MAP)
 
Последнее редактирование:

7pElllHuK

Участник
Сообщения
1,416
Реакции
465

parthi

Участник
Сообщения
40
Реакции
2
как я могу удалить это сообщение?
2023-08-05_01h12_31.png
 

Вложения

  • weapon_restrict.sp
    3.2 КБ · Просмотры: 3

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
как я могу удалить это сообщение?
Посмотреть вложение 113592
Сама фраза находится в scripting/weapon_restrict/events.sp
1691194713345.png

В моем случае на 89 и 90 строчке. Но если ты ее уберешь то не будет писаться вообще никакое запрещенное оружие.
Если же ты хочешь убрать именно флешку, то нужно копаться в исходниках и вырезать везде флешку
 

parthi

Участник
Сообщения
40
Реакции
2
Сама фраза находится в scripting/weapon_restrict/events.spПосмотреть вложение 113597
В моем случае на 89 и 90 строчке. Но если ты ее уберешь то не будет писаться вообще никакое запрещенное оружие.
Если же ты хочешь убрать именно флешку, то нужно копаться в исходниках и вырезать везде флешку
мы можем добавить новый «cvar», чтобы удалить SM Message?

вот мой .cfg
 

Вложения

  • RemoveMessages.sp
    8.9 КБ · Просмотры: 2
  • remove_messages.cfg
    1.4 КБ · Просмотры: 2
Последнее редактирование:

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
мы можем добавить новый «cvar», чтобы удалить SM Message?

вот мой .cfg
Там нет квара, выводится сообщение о запрете и подставляется ID оружия. Так что только вырезать флешку с запрета. По-крайней мере я другого способа не знаю
 

parthi

Участник
Сообщения
40
Реакции
2
Искать в файлах по пути что выше кидал перевод флешки и удалять ее оттуда. Могу вырезать сообщение о любом запрете если надо, это легче всего сделать будет

Я добавляю "//" при переводе, но это снимает ограничение
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Я добавляю "//" при переводе, но это снимает ограничение
Если ты закомментируешь строку в переводе, то это не снимет ограничение на оружие или же гранату, так как это просто текст. Ты просто получишь ошибку от плагина, так как он пытается вывести текст с перевода, а его там нет.
Можно сделать проще. Можно просто убрать ограничение гранат с плагина weapon restrict и запретить нужные тебе гранаты через другой плагин
Вот плагин, попробуй его поставить и в конфиге выставь ограничение на необходимое тебе число покупок гранат: Плагин
Если нужно, могу вырезать с плагина что кинул выше текст на запрет
 
Последнее редактирование:

parthi

Участник
Сообщения
40
Реакции
2
Если ты закомментируешь строку в переводе, то это не снимет ограничение на оружие или же гранату, так как это просто текст. Ты просто получишь ошибку от плагина, так как он пытается вывести текст с перевода, а его там нет.
Можно сделать проще. Можно просто убрать ограничение гранат с плагина weapon restrict и запретить нужные тебе гранаты через другой плагин
Вот плагин, попробуй его поставить и в конфиге выставь ограничение на необходимое тебе число покупок гранат: Плагин
Если нужно, могу вырезать с плагина что кинул выше текст на запрет

Спасибо, это работает! Как я могу изменить цвет на красный для этого .sp
 

Вложения

  • TabHud.sp
    6.1 КБ · Просмотры: 6

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Спасибо, это работает! Как я могу изменить цвет на красный для этого .sp
Если я тебя правильно понял то вот как:
1691252013954.png

Находишь выделенную мною строку в исходнике и меняешь значение RGBSpecs на 255, 0, 0, 255
Ниже прикрепил готовый файл, тебе надо только скомпилировать его
 

Вложения

  • TabHud.sp
    6.1 КБ · Просмотры: 7
Последнее редактирование:

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Всем привет, подскажите пожалуйста, в чем проблема:
[SM] Exception reported: Client index 7564115 is invalid (arg 2)
L 08/06/2023 - 22:59:37: [SM] Blaming: MVP CSS34.smx
L 08/06/2023 - 22:59:37: [SM] Call stack trace:
L 08/06/2023 - 22:59:37: [SM] [0] LogMessage
L 08/06/2023 - 22:59:37: [SM] [1] Line 56, D:\Desktop\Компиляторы\1.9 scripting\MVP CSS34.sp::Event_Planted

Код:
public void Event_Planted(Event hEvent, const char[] name, bool dontBroadcast)    //Пачка установлена
{
    int id = GetClientOfUserId( GetEventInt(hEvent, "userid" ) );
       
    char Name[ 32 ];
    GetClientName( id, Name, sizeof( Name ) - 1 );
    LogMessage( "%N поставил пачку!", Name );
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@7pElllHuK, потому что должно быть так:
C-подобный:
public void Event_Planted(Event hEvent, const char[] name, bool dontBroadcast)    //Пачка установлена
{
    int id = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    if(id) LogMessage("%N поставил пачку!", id);
}
%N используется для вывода ника по UserID игрока, а ты ему строку подсовываешь.
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
@7pElllHuK, потому что должно быть так:
C-подобный:
public void Event_Planted(Event hEvent, const char[] name, bool dontBroadcast)    //Пачка установлена
{
    int id = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    if(id) LogMessage("%N поставил пачку!", id);
}
%N используется для вывода ника по UserID игрока, а ты ему строку подсовываешь.
Спасибо большое
Сообщения автоматически склеены:



Подскажите пожалуйста, как сделать проверку на то, была ли бомба разминирована. Нужно не событие, а именно проверка. Хочу в конце раунда вывести ник игрока, который разминировал бомбу. Ник получил, а проверку на то была ли бомба разминирована нет.
 
Последнее редактирование:

DarkerZ

Участник
Сообщения
395
Реакции
175
Подскажите пожалуйста, как сделать проверку на то, была ли бомба разминирована. Нужно не событие, а именно проверка. Хочу в конце раунда вывести ник игрока, который разминировал бомбу. Ник получил, а проверку на то была ли бомба разминирована нет.
а в чём проблема вывести по событию? раунд ведь завершается по разминированию бомбы
Name:bomb_defused
Structure:
shortuseridplayer who defused the bomb
shortsitebombsite index
 

khood

Участник
Сообщения
214
Реакции
51
C++:
ArrayList g_hEXP;

Action Timer_Updater(Handle timer)

{

   for(int i = 1; i <= MaxClients; ++i)

   {

       if(IsClientInGame(i) && !IsPlayerAlive(i))

       {

           //Клиент наблюдает за каким-то одним человеком

           int m_iObserverMode = GetEntProp(i, Prop_Send, "m_iObserverMode");

           int iTarget;

           char sTarget[32];



           if(m_iObserverMode == 4 || m_iObserverMode == 5 || m_iObserverMode == 6)

           {

               //Выясните, на кого смотрит клиент.

               if((iTarget = GetEntPropEnt(i, Prop_Send, "m_hObserverTarget")) > 0)

               {

                   FormatEx(sTarget, sizeof(sTarget), "%N", iTarget);

               }

               else continue;

           }

           else continue;



           char sRANK[128];

           iRANK[iTarget] = LR_GetClientInfo(iTarget, ST_RANK);



           switch(iRANK[iTarget])

           {

               case 1: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_1", iRANK[iTarget]);

               case 2: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_2", iRANK[iTarget]);

               case 3: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_3", iRANK[iTarget]);

               case 4: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_4", iRANK[iTarget]);

               case 5: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_5", iRANK[iTarget]);

               case 6: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_6", iRANK[iTarget]);

               case 7: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_7", iRANK[iTarget]);

               case 8: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_8", iRANK[iTarget]);

               case 9: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_9", iRANK[iTarget]);

               case 10: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_10", iRANK[iTarget]);

               case 11: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_11", iRANK[iTarget]);

               case 12: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_12", iRANK[iTarget]);

               case 13: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_13", iRANK[iTarget]);

               case 14: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_14", iRANK[iTarget]);

               case 15: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_15", iRANK[iTarget]);

               case 16: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_16", iRANK[iTarget]);

               case 17: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_17", iRANK[iTarget]);

               case 18: FormatEx(sRANK, sizeof(sRANK), "%t", "rank_18", iRANK[iTarget]);

           }



           char sBuffer[256];

           int EXP2 = g_hEXP.Get(iRANK[iTarget]);



        FormatEx(sBuffer, sizeof(sBuffer), "",

            sTarget, sRANK, LR_GetClientInfo(iTarget, ST_EXP), EXP2,

             Shop_GetClientCredits(iTarget), GetClientHealth(iTarget), GetClientArmor(iTarget));



           //PrintToChat(i, "Вы смотрите за %N", iTarget);

           hShowStats = StartMessageOne("KeyHintText", i);

           if(hShowStats != null)

           {

               BfWriteByte(hShowStats, 1);

               BfWriteString(hShowStats, sBuffer);

           }

           EndMessage();

       }

   }

   return Plugin_Continue;

}
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@qdwqdwq32, пожалуйста, используй тег [CODE][/CODE] для цитирования кода.
Сообщения автоматически склеены:

Exception reported: Invalid index 18 (count: 18)
Попробуй так:
C-подобный:
Action Timer_Updater(Handle timer)
{
    char sBuffer[256];
    for(int i = 1; i <= MaxClients; ++i) if(IsClientInGame(i) && !IsPlayerAlive(i))
    {
        //Клиент наблюдает за каким-то одним человеком
        int m_iObserverMode = GetEntProp(i, Prop_Send, "m_iObserverMode");
        if(m_iObserverMode < 4 || 6 < m_iObserverMode)
            continue;

        int iTarget = GetEntPropEnt(i, Prop_Send, "m_hObserverTarget");
        if(iTarget < 1 || MaxClients < iTarget)
            continue;

        if((iRANK[iTarget] = LR_GetClientInfo(iTarget, ST_RANK)) < 1 || 18 < iRANK[iTarget])
            continue;

        int next = iRANK[iTarget] < 18 ? g_hEXP.Get(iRANK[iTarget]) : 0;
        char sRANK[128];
        FormatEx(sRANK, sizeof(sRANK), "rank_%i", iRANK[iTarget]);
        FormatEx(sBuffer, sizeof(sBuffer), "%N\n%T\n%i/%iXP\n%icr\n%iHP %iAP", iTarget, sRANK, iTarget, LR_GetClientInfo(iTarget, ST_EXP), next, Shop_GetClientCredits(iTarget), GetClientHealth(iTarget), GetClientArmor(iTarget));

        if((hShowStats[i] = StartMessageOne("KeyHintText", i);))
        {
            BfWriteByte(hShowStats[i], 1);
            BfWriteString(hShowStats[i], sBuffer);
        }
        EndMessage();
    }
    return Plugin_Continue;
}
 
Последнее редактирование:

khood

Участник
Сообщения
214
Реакции
51
@qdwqdwq32, пожалуйста, используй тег [CODE][/CODE] для цитирования кода.
Сообщения автоматически склеены:

Попробуй так:
C-подобный:
Action Timer_Updater(Handle timer)
{
    char sBuffer[256];
    for(int i = 1; i <= MaxClients; ++i) if(IsClientInGame(i) && !IsPlayerAlive(i))
    {
        //Клиент наблюдает за каким-то одним человеком
        int m_iObserverMode = GetEntProp(i, Prop_Send, "m_iObserverMode");
        if(m_iObserverMode < 4 || 6 < m_iObserverMode)
            continue;

        int iTarget = GetEntPropEnt(i, Prop_Send, "m_hObserverTarget");
        if(iTarget < 1 || MaxClients < iTarget)
            continue;

        if((iRANK[iTarget] = LR_GetClientInfo(iTarget, ST_RANK)) < 1 || 18 < iRANK[iTarget])
            continue;

        int next = iRANK[iTarget] < 18 ? g_hEXP.Get(iRANK[iTarget]) : 0;
        char sRANK[128];
        FormatEx(sRANK, sizeof(sRANK), "rank_%i", iRANK[iTarget]);
        FormatEx(sBuffer, sizeof(sBuffer), "%N\n%T\n%i/%iXP\n%icr\n%iHP %iAP", iTarget, sRANK, iTarget, LR_GetClientInfo(iTarget, ST_EXP), next, Shop_GetClientCredits(iTarget), GetClientHealth(iTarget), GetClientArmor(iTarget));

        if((hShowStats[i] = StartMessageOne("KeyHintText", i);))
        {
            BfWriteByte(hShowStats[i], 1);
            BfWriteString(hShowStats[i], sBuffer);
        }
        EndMessage();
    }
    return Plugin_Continue;
}
Оо спасибо братан чётко.
Сообщения автоматически склеены:
 
Сверху Снизу