Happy New Year 2020

Happy New Year 2020 2K20.V3.4

Deff

Участник
Сообщения
350
Реакции
137
Создание предметов (Елки,Снеговека) не работает для карт с workshop (не создается конфиг который отвечает за спавн предметов по координатам)
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Создание предметов (Елки,Снеговека) не работает для карт с workshop (не создается конфиг который отвечает за спавн предметов по координатам)
Плагин полностью функционирует(CS:GO). Ищите ошибку у себя
 

EZZY

Участник
Сообщения
377
Реакции
74
У меня с картами из воркшопа тоже не работало. После конца раунда, всё поставленное просто исчезает. Ерроров нет.
 

Deff

Участник
Сообщения
350
Реакции
137
Плагин полностью функционирует(CS:GO). Ищите ошибку у себя
С обычными картами которые в maps плагин работает корректно,а вот карты которые находятся в maps/workshop/ плагин не работает (именно спавн предметов)
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
С обычными картами которые в maps плагин работает корректно,а вот карты которые находятся в maps/workshop/ плагин не работает (именно спавн предметов)
В этом то и вся проблема.

C-подобный:
    char g_sCurrentMap[32];
    GetCurrentMap(g_sCurrentMap, sizeof(g_sCurrentMap));
    
    if(!DirExists("addons/sourcemod/configs/newyear/"))
    {
        CreateDirectory("addons/sourcemod/configs/newyear/", 511);
    }
    FormatEx(g_sFile, sizeof(g_sFile), "addons/sourcemod/configs/newyear/%s.cfg", g_sCurrentMap);

GetCurrentMap работает наверное только с директорией maps/
 

-=HellFire=-

Kernel panic - not syncing: Fatal exception
Сообщения
1,394
Реакции
585

OkyHek

Участник
Сообщения
419
Реакции
427
Фикс для воркшопа:
1. Добавляем в конец плагина:
C++:
void GetCurrentMapEx(char[] szMapBuffer, int iSize)
{
    char szBuffer[256];
    GetCurrentMap(szBuffer, sizeof szBuffer);
    int iIndex = -1, iLen = strlen(szBuffer);
   
    for(int i = 0; i < iLen; i++)
    {
        if(FindCharInString(szBuffer[i], '/') != -1 || FindCharInString(szBuffer[i], '\\') != -1)
        {
            if(i != iLen - 1)
            {
                iIndex = i;
            }
            continue;
        }
        break;
    }

    strcopy(szMapBuffer, iSize, szBuffer[iIndex+1]);
}

2. Ищем GetCurrentMap и меняем на GetCurrentMapEx.
3. Компилируем плагин.
Готово!
 

Deff

Участник
Сообщения
350
Реакции
137
Фикс для воркшопа:
1. Добавляем в конец плагина:
C++:
void GetCurrentMapEx(char[] szMapBuffer, int iSize)
{
    char szBuffer[256];
    GetCurrentMap(szBuffer, sizeof szBuffer);
    int iIndex = -1, iLen = strlen(szBuffer);
  
    for(int i = 0; i < iLen; i++)
    {
        if(FindCharInString(szBuffer[i], '/') != -1 || FindCharInString(szBuffer[i], '\\') != -1)
        {
            if(i != iLen - 1)
            {
                iIndex = i;
            }
            continue;
        }
        break;
    }

    strcopy(szMapBuffer, iSize, szBuffer[iIndex+1]);
}

2. Ищем GetCurrentMap и меняем на GetCurrentMapEx.
3. Компилируем плагин.
Готово!
L 12/15/2019 - 02:01:15: [SM] Exception reported: Not enough space on the stack
L 12/15/2019 - 02:01:15: [SM] Blaming: HappyNewYear_2K20+.smx
L 12/15/2019 - 02:01:15: [SM] Call stack trace:
L 12/15/2019 - 02:01:15: [SM] [1] Line 832, HappyNewYear_2K20+.sp::GetCurrentMapEx
L 12/15/2019 - 02:01:15: [SM] [104] Line 336, HappyNewYear_2K20+.sp::OnMapStart
L 12/15/2019 - 02:01:15: [SM] [103] Line 816, HappyNewYear_2K20+.sp::GetCurrentMapEx
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
bool g_bActive, g_iAnswer;
У g_iAnswer должен быть тип int

C++:
#tryinclude <shop>
Если так писать, то shop считается не обязательным, тогда стоит сделать так:
C++:
#undef REQUIRE_PLUGIN
#tryinclude <shop>

C++:
switch (GetRandomInt(1,4))
{
    
    #if defined _shop_included
    case 1:
    {
        int shopwin = GetRandomInt(0,100);
    
        if (shopwin <= 15)
            CGOPrintToChat(activator, "%t", "Bronze_Ticket", Shop_GiveClientCredits(activator, GetRandomInt(iBrMin,iBrMax), CREDITS_BY_NATIVE));
        
        else if (shopwin <= 50)
            CGOPrintToChat(activator, "%t", "Silver_Ticket", Shop_GiveClientCredits(activator, GetRandomInt(iSiMin,iSiMax), CREDITS_BY_NATIVE));

        else if (shopwin <= 70)
            CGOPrintToChat(activator, "%t", "Gold_Ticket", Shop_GiveClientCredits(activator, GetRandomInt(iGoldMin,iGoldMax), CREDITS_BY_NATIVE));
    
        else if (shopwin <= 85)
            CGOPrintToChat(activator, "%t", "Platinum_Ticket", Shop_GiveClientCredits(activator, GetRandomInt(iPlatMin,iPlatMax), CREDITS_BY_NATIVE));
    
        else if (shopwin <= 97)
            CGOPrintToChat(activator, "%t", "VIP_Ticket", Shop_GiveClientCredits(activator, GetRandomInt(iVipMin,iVipMax), CREDITS_BY_NATIVE));

        else
        {
            switch (GetRandomInt(0,3))
            {
                case 1: {CGOPrintToChat(activator, "%t", "Jackpot_Ticket_One", Shop_GiveClientCredits(activator, ijackpotOne, CREDITS_BY_NATIVE));}
                case 2: {CGOPrintToChat(activator, "%t", "Jackpot_Ticket_Two", Shop_GiveClientCredits(activator, ijackpotTwo, CREDITS_BY_NATIVE));}
                case 3: {CGOPrintToChat(activator, "%t", "Jackpot_Ticket_Three", Shop_GiveClientCredits(activator, ijackpotThree, CREDITS_BY_NATIVE));}
                default: CGOPrintToChat(activator, "%t", "Jackpot_Ticket_Bad");
            }
        }
    }
    #endif

    default: {CGOPrintToChat(activator,"%t", "Comforting_Gift", Shop_GiveClientCredits(activator, iLow, CREDITS_BY_NATIVE));}
}

C++:
#if defined _shop_included
...
#endif
default: {... Shop_GiveClientCredits(activator, iLow, CREDITS_BY_NATIVE));}
Есть проверка на наличие shop инклюда, но в итоге он используется даже при его отсутствии...
C++:
#if defined _shop_included
...
default: {... Shop_GiveClientCredits(activator, iLow, CREDITS_BY_NATIVE));}
#endif


По поводу workshop
C++:
char g_sFile[64];
размер стоит увеличить до максимального
C++:
char g_sFile[PLATFORM_MAX_PATH];
Добавить поддержку workshop'а можно примерно так: (не проверял)
C++:
    if (!strncmp(g_sCurrentMap, "workshop", 8, false))
    {
        int ik;
        if((ik = FindCharInString(g_sCurrentMap, '/')) != -1 || (ik = FindCharInString(g_sCurrentMap, '\\')) != -1)
        {      
            g_sCurrentMap[9 + ik] = '\0';
            FormatEx(g_sFile, sizeof(g_sFile), "addons/sourcemod/configs/newyear/%s/", g_sCurrentMap);
            if (!DirExists(g_sFile))
            {
                CreateDirectory("addons/sourcemod/configs/newyear/workshop/", 511);
                CreateDirectory(g_sFile, 511);
            }
            g_sCurrentMap[9 + ik] = '/';
        }
    }

    FormatEx(g_sFile, sizeof(g_sFile), "addons/sourcemod/configs/newyear/%s.cfg", g_sCurrentMap);

По поводу Shop, если делать его не обязательным, то стоит сделать это полностью #undef REQUIRE_PLUGIN это только часть дела
 
Последнее редактирование:

GODNIK

🚚 ПеревоЗЧИК 🚛
Сообщения
269
Реакции
73
C-подобный:
HappyNewYear_2K20.smx (Happy New Year 2020+): Could not find required plugin "shop"
Я так понимаю обязательно устанавливать плагин SHOP...

Так что я останусь на 2k15
1576482318420.png
 

-=HellFire=-

Kernel panic - not syncing: Fatal exception
Сообщения
1,394
Реакции
585
C-подобный:
HappyNewYear_2K20.smx (Happy New Year 2020+): Could not find required plugin "shop"
Я так понимаю обязательно устанавливать плагин SHOP...

Так что я останусь на 2k15
Посмотреть вложение 49672
В этой версии всё именно для SHOP'a, без шопа это получится как оригинал, кроме некоторых моментов.
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
В этой версии всё именно для SHOP'a, без шопа это получится как оригинал, кроме некоторых моментов.
Добавьте форвард и 1-2 инклюда натива , чтобы сделать его модульным, так будет куда эффективнее, так и ядро перестанет нуждаться в shop
 
Последнее редактирование:

|Fatalist|

Участник
Сообщения
179
Реакции
10
L 12/16/2019 - 23:04:40: [SM] Failed to load plugin "HappyNewYear_2K20.smx": Unable to load plugin (no debug string table).
В чем проблема?
 

Похожие темы

Сверху Снизу