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

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86
Тот что вы писали, я его вставил и теперь линии не выводится вообще. Пробовал ставить старый плагин и перезапускать его через консоль сервера, линии появляются

Я вам кидал код, он работает. Что не так то у вас до сих пор?
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
@7pElllHuK, Скажи что у тебя за сервер в какой игре?
Ксс 34
Сообщения автоматически склеены:

Я вам кидал код, он работает. Что не так то у вас до сих пор?
Спасибо, не заметил, тогда проверю и отпишусь
Сообщения автоматически склеены:

@7pElllHuK, и никаких ошибок в логах?
Ошибок нет
Сообщения автоматически склеены:

C++:
char g_sTexture[PLATFORM_MAX_PATH];
int g_iTexture;

public void OnPluginStart()
{
    ConVar hCvar;
    hCvar = CreateConVar("sm_vsb_linetexture", "sprites/xbeam2.vmt", "Текстура обводки блокировки");
    hCvar.GetString(g_sTexture, sizeof g_sTexture);
    hCvar.AddChangeHook(VSB_Texture);
    AutoExecConfig(true, "Visual_Block");
}

public void OnMapStart()
{
    if(!IsModelPrecached(g_sTexture))
        g_iTexture = PrecacheModel(g_sTexture);
}

public void VSB_Texture(ConVar hCvar, const char[] OldValue, const char[] sNewValue)
{
    hCvar.GetString(sNewValue, sizeof sNewValue);
    if(sNewValue[0])
    {
        FormatEx(g_sTexture, sizeof g_sTexture, sNewValue);
        g_iTexture = PrecacheModel(g_sTexture);
    }
    else
    {
        FormatEx(g_sTexture, sizeof g_sTexture, "sprites/xbeam2.vmt");
        g_iTexture = PrecacheModel(g_sTexture);
    }
    return;
}

А если так ?
К сожалению проблема та же, путь к тестуре выводится, но самой линии нет (добавил команду для проверки значений на сервере, выводит g_iTexture = 0, g_sTexture = sprites/xbeam2.vmt)
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86

7pElllHuK

Всё работает. Пробуйте.
 

Вложения

  • texture.smx
    3.2 КБ · Просмотры: 3
  • texture.sp
    1.2 КБ · Просмотры: 7
  • Screenshot_1.png
    Screenshot_1.png
    5.5 КБ · Просмотры: 43
  • Screenshot_2.png
    Screenshot_2.png
    3.6 КБ · Просмотры: 43
  • texture.log
    258 байт · Просмотры: 4

7pElllHuK

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

7pElllHuK

Всё работает. Пробуйте.
Не могу понять в чем проблема, в лог выводит это: [Visual_Block.smx] [Texture] OnMapStart - Id = 233, Model - sprites/xbeam2.vmt
Но при этом линий как нет так и небыло. Код который писал Grey83 выводил ту же информацию (при смене карты id менялось, оно не всегда 233) но так же линий нет. Линии должны показываться через
Код:
TE_SetupBeamPoints(de_dust2_t[i], de_dust2_t[i+1], g_iTexture, 0, 0, 0, 1.0, g_fSize[0], g_fSize[1], 0, 0.0, g_iColor, 10);
TE_SendToAll();
Если делать на старом синтаксисе (код выше кидал), то все работает (При сравнении 2 версий кода, id текстур совпадает, но плагин на старом синтаксисе выводит линию, новый - нет)
Сообщения автоматически склеены:

Вообще в таком случае должна писаться ошибка в лог:
К сожалению ошибок нет, текстура кешируется, id появляется у нее, но просто линии нет

Возможно проблема в самом плагине, попробую вернуть старый код для вывода линии, мб я что-то сломал пока доделывал плагин
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
мб я что-то сломал пока доделывал плагин
кинул бы что ли исходник (если там меньше 1к строк) в ЛС, если не хочешь выкладывать в теме
Сообщения автоматически склеены:

при смене карты id менялось
так и должно быть, т.к. количество моделек у разных карт отличается
Сообщения автоматически склеены:

Эти 2 величины должны совпадать обычно, если делается просто луч (даже не обязательно прямой).
Можно сделать g_iTexture, g_iTexture,, но вроде разницы особо быть не должно.

@7pElllHuK, ты ещё учитывай, что количество одновременно существующих для игрока временных энтити ограничено количеством в 32шт
TEs are unreliable and get dropped if too many are created at once. The maximum per update is 32 in multiplayer and 255 in single player.
Как это в v34 (с клиентмодом и без него сказать не могу, но без - скорее всего точно так же).
 
Последнее редактирование:

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
кинул бы что ли исходник (если там меньше 1к строк) в ЛС, если не хочешь выкладывать в теме
Сообщения автоматически склеены:


так и должно быть, т.к. количество моделек у разных карт отличается
Сообщения автоматически склеены:


Эти 2 величины должны совпадать обычно, если делается просто луч (даже не обязательно прямой).

Можно сделать g_iTexture, g_iTexture,, но вроде разницы особо быть не должно.

@7pElllHuK, ты ещё учитывай, что количество одновременно существующих для игрока временных энтити ограничено количеством в 32шт

Как это в v34 (с клиентмодом и без него сказать не могу, но без - скорее всего точно так же).
Я ж говорю, в старой версии плагина все работает замечательно, просто решил сделать код красивее (на мой взгляд) и в итоге возникла проблема только с текстурой. В лс скинул вам исходник, посмотрите пожалуйста
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Всем добрый день, подскажите пожалуйста, как установить пробел в числах которые находятся в строке. Пример: У вас кредитов: 100200300, а надо сделать так - У вас кредитов 100 200 300. Если у игрока меньше 10к, то сделать надо так: У вас кредитов: 1 000
 

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86
Всем добрый день, подскажите пожалуйста, как установить пробел в числах которые находятся в строке. Пример: У вас кредитов: 100200300, а надо сделать так - У вас кредитов 100 200 300. Если у игрока меньше 10к, то сделать надо так: У вас кредитов: 1 000
Ну по моему в теме склад функций такую функцию видел. Загляни туда
 

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86
Можно ссылку пожалуйста, не знаю где она находится
Автор грей.
Переводите строку в число и отправляете в функцию и возвращает нужную вам строку
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Автор грей.
Переводите строку в число и отправляете в функцию и возвращает нужную вам строку
Cпасибо, сейчас посмотрю
Сообщения автоматически склеены:

Автор грей.
Переводите строку в число и отправляете в функцию и возвращает нужную вам строку
да, это именно то, что я искал, спасибо большое
Сообщения автоматически склеены:

Подскажите пожалуйста как с массива пропустить последние значения?
Пример:

Пример:
char sTime_Online[32];
GetStringTime(iPlay_Time, sTime_Online, sizeof sTime_Online);

PrintToChatAll("%s", sTime_Online);


void GetStringTime(int iTime, char[] sBuffer, int iMaxLength)
{
    static int iDims[] = {60, 60, 24, 30, 12, cellmax};
    static char szSign[][] = {"с", "м", "ч", "д", "м", "г"};
    static char sForm[][] = {"%02i%s%s", "%02i%s %s", "%i%s %s"};
    sBuffer[0] = EOS;
    int i = 0, f = -1;
    bool bCond = false;
    while (!bCond)
    {
        if (f++ == 1) bCond = true;
        do
        {
            Format(sBuffer, iMaxLength, sForm[f], iTime % iDims[i], szSign[i], sBuffer);
            if (iTime /= iDims[i++], iTime == 0) return;
        }
        while (bCond);
    }
}
На выходе мы получим 3ч. 30м. 40 сек, надо эти секунты в конце убрать чтоб писались дни, часы, минуты.
Пробовал убрать из блокаGetStringTime секунды, на выходе получал минуты которые шли как секунды
 
Последнее редактирование:

lesha

Участник
Сообщения
84
Реакции
7
Приветствую всех! Исправьте ошибку пожалуйста. not found (тут разными entity спамит, но во всех ошибка 271)

L 01/16/2024 - 00:17:47: [SM] Exception reported: Property "m_hOwner" not found (entity 70/soundent)
L 01/16/2024 - 00:17:47: [SM] Blaming: AKC.smx
L 01/16/2024 - 00:17:47: [SM] Call stack trace:
L 01/16/2024 - 00:17:47: [SM] [0] GetEntPropEnt
L 01/16/2024 - 00:17:47: [SM] [1] Line 271, AKC.sp::OnEntitySpawned
L 01/16/2024 - 00:17:47: [SM] Exception reported: Property "m_hOwner" not found (entity 71/cs_player_manager)
 

Вложения

  • AKC.sp
    33.2 КБ · Просмотры: 10

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Всем доброго времени суток, подскажите пожалуйста, как сравнивать текст из подстроки до тех пор пока условие не будет true?
Пример того как должно быть:
char sText[5][32] = {"Слово 1", "Слово 2", "Слово 3", "Слово 4", "Слово 5"};
char sName[32] = {"Слово 4"};
if (strcmp(sText, sName, false)) PrintToChatAll("Строка %s равна %s", sText, sName);
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Всем доброго времени суток, подскажите пожалуйста, как сравнивать текст из подстроки до тех пор пока условие не будет true?
Пример того как должно быть:
char sText[5][32] = {"Слово 1", "Слово 2", "Слово 3", "Слово 4", "Слово 5"};
char sName[32] = {"Слово 4"};
if (strcmp(sText, sName, false)) PrintToChatAll("Строка %s равна %s", sText, sName);
strcmp · string · SourceMod Scripting API Reference (Быстрее)
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Я знаком с функциями сравнения строк, я не знаю как сравнить строки до тех пор пока условие строки не будут равны. Пробовал сделать через цикл while, выдает ошибку: error 048: array (s do not match

Код:
char sText[5][32] = {"Слово 1", "Слово 2", "Слово 3", "Слово 4", "Слово 5"};
char sName[32] = {"Слово 4"};
while(strcmp(sText, sName, false))
{
    PrintToChatAll("Строка %s равна %s", sText, sName);
}
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Я знаком с функциями сравнения строк, я не знаю как сравнить строки до тех пор пока условие строки не будут равны. Пробовал сделать через цикл while, выдает ошибку: error 048: array (s do not match

Код:
char sText[5][32] = {"Слово 1", "Слово 2", "Слово 3", "Слово 4", "Слово 5"};
char sName[32] = {"Слово 4"};
while(strcmp(sText, sName, false))
{
    PrintToChatAll("Строка %s равна %s", sText, sName);
}
C-подобный:
char sText[5][32] = {"Слово 1", "Слово 2", "Слово 3", "Слово 4", "Слово 5"};
char sName[32] = "Слово 4";

public void OnMapStart()
{
    for(int i = 0; i < sizeof(sText); ++i)
    {
        if(strcmp(sText[i], sName, false) == 0)
        {
            PrintToChatAll("Строка %s равна %s", sText[i], sName);
        }
    }
}
 
Сверху Снизу