Grey83
не пишу плагины с весны 2022
- Сообщения
- 8,642
- Реакции
- 5,115
@7pElllHuK, и никаких ошибок в логах?
Тот что вы писали, я его вставил и теперь линии не выводится вообще. Пробовал ставить старый плагин и перезапускать его через консоль сервера, линии появляются
appID=240Вопрос)
Ксго id 730 - А у Кс соурс стим версия какой id?
Ксс 34@7pElllHuK, Скажи что у тебя за сервер в какой игре?
Спасибо, не заметил, тогда проверю и отпишусьЯ вам кидал код, он работает. Что не так то у вас до сих пор?
Ошибок нет@7pElllHuK, и никаких ошибок в логах?
К сожалению проблема та же, путь к тестуре выводится, но самой линии нет (добавил команду для проверки значений на сервере, выводит g_iTexture = 0, g_sTexture = sprites/xbeam2.vmt)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
C-подобный:if(!(g_iTexture = PrecacheModel(g_sTexture))) { LogError("Can't precache texture \"%s\"", g_sTexture); return; }
Не могу понять в чем проблема, в лог выводит это: [Visual_Block.smx] [Texture] OnMapStart - Id = 233, Model - sprites/xbeam2.vmt7pElllHuK
Всё работает. Пробуйте.
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();
К сожалению ошибок нет, текстура кешируется, id появляется у нее, но просто линии нетВообще в таком случае должна писаться ошибка в лог:
кинул бы что ли исходник (если там меньше 1к строк) в ЛС, если не хочешь выкладывать в темемб я что-то сломал пока доделывал плагин
так и должно быть, т.к. количество моделек у разных карт отличаетсяпри смене карты id менялось
Эти 2 величины должны совпадать обычно, если делается просто луч (даже не обязательно прямой).g_fSize[0], g_fSize[1],
Можно сделатьg_iTexture, 0,
g_iTexture, g_iTexture,, но вроде разницы особо быть не должно.Как это в v34 (с клиентмодом и без него сказать не могу, но без - скорее всего точно так же).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.
Я ж говорю, в старой версии плагина все работает замечательно, просто решил сделать код красивее (на мой взгляд) и в итоге возникла проблема только с текстурой. В лс скинул вам исходник, посмотрите пожалуйстакинул бы что ли исходник (если там меньше 1к строк) в ЛС, если не хочешь выкладывать в теме
Сообщения автоматически склеены:
так и должно быть, т.к. количество моделек у разных карт отличается
Сообщения автоматически склеены:
Эти 2 величины должны совпадать обычно, если делается просто луч (даже не обязательно прямой).
Можно сделатьg_iTexture, g_iTexture,, но вроде разницы особо быть не должно.
@7pElllHuK, ты ещё учитывай, что количество одновременно существующих для игрока временных энтити ограничено количеством в 32шт
Как это в v34 (с клиентмодом и без него сказать не могу, но без - скорее всего точно так же).
Doneпосмотрите пожалуйста
Ну по моему в теме склад функций такую функцию видел. Загляни тудаВсем добрый день, подскажите пожалуйста, как установить пробел в числах которые находятся в строке. Пример: У вас кредитов: 100200300, а надо сделать так - У вас кредитов 100 200 300. Если у игрока меньше 10к, то сделать надо так: У вас кредитов: 1 000
Можно ссылку пожалуйста, не знаю где она находитсяНу по моему в теме склад функций такую функцию видел. Загляни туда
Можно ссылку пожалуйста, не знаю где она находится
Cпасибо, сейчас посмотрюАвтор грей.Склад функций SourcePawn
Я что-то подобное писал ранее для одного из модулей Дискорда. Результат здесь. Да, я знаю, что там можно избавиться минимум от 5-и дополнительных вызовов. На вход принимает строку с, собственно, самим цветом, а возвращает int (0xRRGGBB). Поддержки альфа-канала и сокращённых записей (RGB) нет (в...hlmod.net
Переводите строку в число и отправляете в функцию и возвращает нужную вам строку
да, это именно то, что я искал, спасибо большоеАвтор грей.Склад функций SourcePawn
Я что-то подобное писал ранее для одного из модулей Дискорда. Результат здесь. Да, я знаю, что там можно избавиться минимум от 5-и дополнительных вызовов. На вход принимает строку с, собственно, самим цветом, а возвращает int (0xRRGGBB). Поддержки альфа-канала и сокращённых записей (RGB) нет (в...hlmod.net
Переводите строку в число и отправляете в функцию и возвращает нужную вам строку
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);
}
}
strcmp · string · SourceMod Scripting API Reference (Быстрее)Всем доброго времени суток, подскажите пожалуйста, как сравнивать текст из подстроки до тех пор пока условие не будет true?
Пример того как должно быть:
char sText[5][32] = {"Слово 1", "Слово 2", "Слово 3", "Слово 4", "Слово 5"};
char sName[32] = {"Слово 4"};
if (strcmp(sText, sName, false)) PrintToChatAll("Строка %s равна %s", sText, sName);
Я знаком с функциями сравнения строк, я не знаю как сравнить строки до тех пор пока условие строки не будут равны. Пробовал сделать через цикл 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);
}
Я знаком с функциями сравнения строк, я не знаю как сравнить строки до тех пор пока условие строки не будут равны. Пробовал сделать через цикл 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); }
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);
}
}
}