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

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
привет всем
Помогите сделать плагин afk_manager
Чтобы работал цвет {TEAM}
 

Truyn

King of clowns
Сообщения
1,591
Реакции
749
Вот в голову пришла гениальная мысль, почему то в дефолтной админке от sm есть функция изменения ника, но почему еще никто не прикрутил чтобы эти изменения сохранялись после смены карты?
 

gtixon

Участник
Сообщения
1,078
Реакции
401
Как написать данною задумку: При убийстве игрока, от него остается тело, при нажатии +use на тело - оно окрашивается и игроку который нажал выдается награда в шоп кредитах?
 

Shid0

🦾 Свет даëт мне сил!
Сообщения
1,130
Реакции
1,255
Как написать данною задумку: При убийстве игрока, от него остается тело, при нажатии +use на тело - оно окрашивается и игроку который нажал выдается награда в шоп кредитах?
Зачем лишние действия (нажать +use), есть же готовая альтернатива?
 

Ganter1234

Участник
Сообщения
1,149
Реакции
667
Зачем лишние действия (нажать +use), есть же готовая альтернатива?
Для условного ттт режима
 

Ice_Sochi

Участник
Сообщения
709
Реакции
413
Добрый вечер
Помогите пожалуйста исправить ошибку
C-подобный:
L 03/04/2022 - 00:08:32: [SM] Exception reported: Invalid Cookie handle 0 (error 4)
L 03/04/2022 - 00:08:32: [SM] Blaming: legend_weapongiver.smx
L 03/04/2022 - 00:08:32: [SM] Call stack trace:
L 03/04/2022 - 00:08:32: [SM]   [0] GetClientCookie
L 03/04/2022 - 00:08:32: [SM]   [1] Line 20, C:\Users\Miaka\Desktop\scripting\legend_weapongiver.sp::OnClientCookiesCached

C-подобный:
Handle g_hWeaponCookie, g_hOnOffCookie;
char g_sWeapon[MAXPLAYERS+1][32];
bool g_bWeaponOnOff[MAXPLAYERS+1];

public void OnPluginStart()
{
    for (int i; ++i <= MaxClients;)
    {
        if (!IsClientInGame(i) || IsFakeClient(i) || !AreClientCookiesCached(i))
            continue;
            
        OnClientCookiesCached(i);
    }
}

public void OnClientCookiesCached(int iClient)
{
    char sBuffer[32];
    
    GetClientCookie(iClient, g_hOnOffCookie, sBuffer, sizeof(sBuffer));
        if(sBuffer[0]) g_bWeaponOnOff[iClient] = view_as<bool>(StringToInt(sBuffer, sizeof(sBuffer)));
        else g_bWeaponOnOff[iClient] = false;
    
    GetClientCookie(iClient, g_hWeaponCookie, sBuffer, sizeof(sBuffer));
        if(sBuffer[0]) g_sWeapon[iClient] = sBuffer;  //не знаю зачем, но пробовал FormatEx(g_sWeapon[iClient], 32, sBuffer); и в строке ниже - та же самая ошибка
        else g_sWeapon[iClient] = "weapon_ak47";
//так то же самое
//GetClientCookie(iClient, g_hWeaponCookie, g_sWeapon[iClient], 32);
//     if(!g_sWeapon[iClient][0]) g_sWeapon[iClient] = "weapon_ak47";
}

public void OnClientDisconnect(int iClient)
{
    if(!IsFakeClient(iClient))
    {
        char sBuffer[8];
        
        IntToString(view_as<int>(g_bWeaponOnOff[iClient]), sBuffer, sizeof(sBuffer));
        SetClientCookie(iClient, g_hOnOffCookie, sBuffer);
        
        SetClientCookie(iClient, g_hWeaponCookie, g_sWeapon[iClient]);
    }
}
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Добрый вечер
Помогите пожалуйста исправить ошибку
C-подобный:
L 03/04/2022 - 00:08:32: [SM] Exception reported: Invalid Cookie handle 0 (error 4)
L 03/04/2022 - 00:08:32: [SM] Blaming: legend_weapongiver.smx
L 03/04/2022 - 00:08:32: [SM] Call stack trace:
L 03/04/2022 - 00:08:32: [SM]   [0] GetClientCookie
L 03/04/2022 - 00:08:32: [SM]   [1] Line 20, C:\Users\Miaka\Desktop\scripting\legend_weapongiver.sp::OnClientCookiesCached

C-подобный:
Handle g_hWeaponCookie, g_hOnOffCookie;
char g_sWeapon[MAXPLAYERS+1][32];
bool g_bWeaponOnOff[MAXPLAYERS+1];

public void OnPluginStart()
{
    for (int i; ++i <= MaxClients;)
    {
        if (!IsClientInGame(i) || IsFakeClient(i) || !AreClientCookiesCached(i))
            continue;
           
        OnClientCookiesCached(i);
    }
}

public void OnClientCookiesCached(int iClient)
{
    char sBuffer[32];
   
    GetClientCookie(iClient, g_hOnOffCookie, sBuffer, sizeof(sBuffer));
        if(sBuffer[0]) g_bWeaponOnOff[iClient] = view_as<bool>(StringToInt(sBuffer, sizeof(sBuffer)));
        else g_bWeaponOnOff[iClient] = false;
   
    GetClientCookie(iClient, g_hWeaponCookie, sBuffer, sizeof(sBuffer));
        if(sBuffer[0]) g_sWeapon[iClient] = sBuffer;  //не знаю зачем, но пробовал FormatEx(g_sWeapon[iClient], 32, sBuffer); и в строке ниже - та же самая ошибка
        else g_sWeapon[iClient] = "weapon_ak47";
//так то же самое
//GetClientCookie(iClient, g_hWeaponCookie, g_sWeapon[iClient], 32);
//     if(!g_sWeapon[iClient][0]) g_sWeapon[iClient] = "weapon_ak47";
}

public void OnClientDisconnect(int iClient)
{
    if(!IsFakeClient(iClient))
    {
        char sBuffer[8];
       
        IntToString(view_as<int>(g_bWeaponOnOff[iClient]), sBuffer, sizeof(sBuffer));
        SetClientCookie(iClient, g_hOnOffCookie, sBuffer);
       
        SetClientCookie(iClient, g_hWeaponCookie, g_sWeapon[iClient]);
    }
}
Но куки даже не зареганы
 

magis1337

Участник
Сообщения
252
Реакции
23
Кто может исправить выдачу, после бана пропадает привилегия, либо через какое-то время, заранее благодарю
 

Вложения

  • unlimited_ammo.sp
    7.8 КБ · Просмотры: 9

Ice_Sochi

Участник
Сообщения
709
Реакции
413
C-подобный:
public void OnMapStart()
{
    g_bPrimaryOn = false;
    g_bSecondaryOn = false;
  
    char sKey_p[64], sKey_s[64], sMap[64];
    GetCurrentMap(sMap, sizeof(sMap));
  
    config.Rewind();
    if(config.JumpToKey("maps_primary") && config.GotoFirstSubKey(false))
    {
        do
        {
            config.GetSectionName(sKey_p, sizeof(sKey_p));
      
            if(sKey_p[0] && strcmp(sKey_p, sMap) == 0) g_bPrimaryOn = true;
        }
        while config.GotoNextKey(false);
    }
  
    config.Rewind();
    if(config.JumpToKey("maps_secondary") && config.GotoFirstSubKey(false))
    {
        do
        {
            config.GetSectionName(sKey_s, sizeof(sKey_s));
      
            if(sKey_s[0] && strcmp(sKey_s, sMap) == 0) g_bSecondaryOn = true;
        }
        while config.GotoNextKey(false);
    }
}

C-подобный:
"weapon_giver"
{
    "primary"
    {
        "AK-47"            "weapon_ak47"
        "M4A4"            "weapon_m4a1"
        "MP7"            "weapon_mp7"
    }
    "secondary"
    {
        "Desert Eagle"        "weapon_deagle"
        "Five-SeveN"        "weapon_fiveseven"
        "Glock"                "weapon_glock"
        "P250"                "weapon_p250"
    }
    "maps_primary" //карты, на которых выдается основное оружие
    {
        "$2000$_csgo_hdr"
        "fy_snow_oldschool_hdr"
        "winterlude"
    }
    "maps_secondary" //карты, на которых выдается пистолет
    {
        "$2000$_csgo_hdr"
        "fy_snow_oldschool_hdr"
        "winterlude"
        "de_mirage"
        "de_dust2"
        "de_inferno"
        "cs_office"
        "cs_italy"
        "de_cache"
    }
}
как ни пинаю, не хочет работать на карте fy_snow_oldschool_hdr (на ней и g_bPrimaryOn, и g_bSecondaryOn = false)
на остальных вроде как работает нормально
помогите пожалуйста, что не так?
 

Ganter1234

Участник
Сообщения
1,149
Реакции
667
C-подобный:
public void OnMapStart()
{
    g_bPrimaryOn = false;
    g_bSecondaryOn = false;
 
    char sKey_p[64], sKey_s[64], sMap[64];
    GetCurrentMap(sMap, sizeof(sMap));
 
    config.Rewind();
    if(config.JumpToKey("maps_primary") && config.GotoFirstSubKey(false))
    {
        do
        {
            config.GetSectionName(sKey_p, sizeof(sKey_p));
     
            if(sKey_p[0] && strcmp(sKey_p, sMap) == 0) g_bPrimaryOn = true;
        }
        while config.GotoNextKey(false);
    }
 
    config.Rewind();
    if(config.JumpToKey("maps_secondary") && config.GotoFirstSubKey(false))
    {
        do
        {
            config.GetSectionName(sKey_s, sizeof(sKey_s));
     
            if(sKey_s[0] && strcmp(sKey_s, sMap) == 0) g_bSecondaryOn = true;
        }
        while config.GotoNextKey(false);
    }
}

C-подобный:
"weapon_giver"
{
    "primary"
    {
        "AK-47"            "weapon_ak47"
        "M4A4"            "weapon_m4a1"
        "MP7"            "weapon_mp7"
    }
    "secondary"
    {
        "Desert Eagle"        "weapon_deagle"
        "Five-SeveN"        "weapon_fiveseven"
        "Glock"                "weapon_glock"
        "P250"                "weapon_p250"
    }
    "maps_primary" //карты, на которых выдается основное оружие
    {
        "$2000$_csgo_hdr"
        "fy_snow_oldschool_hdr"
        "winterlude"
    }
    "maps_secondary" //карты, на которых выдается пистолет
    {
        "$2000$_csgo_hdr"
        "fy_snow_oldschool_hdr"
        "winterlude"
        "de_mirage"
        "de_dust2"
        "de_inferno"
        "cs_office"
        "cs_italy"
        "de_cache"
    }
}
как ни пинаю, не хочет работать на карте fy_snow_oldschool_hdr (на ней и g_bPrimaryOn, и g_bSecondaryOn = false)
на остальных вроде как работает нормально
помогите пожалуйста, что не так?
Попробуй вместо strcmp, использовать StrContains или StrEqual, ну и можешь удалить из кода config.GotoFirstSubKey(false) (просто какой в этом смысл)
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,517
Реакции
4,979
@Ice_Sochi, ты в конфиге после имён карт забыл поставить пустые кавычки, кмк
C-подобный:
    "maps_primary" //карты, на которых выдается основное оружие
    {
        "$2000$_csgo_hdr" ""
        "fy_snow_oldschool_hdr" ""
        "winterlude" ""
    }
Сообщения автоматически склеены:

и вообще нужно имена карт было искать через KvJumpToKey(config, sMap), а не циклом с проверкой имени
цикл нужен только если тебе нужно частичное совпадение, а не полное
 
Последнее редактирование:

Ice_Sochi

Участник
Сообщения
709
Реакции
413
@Ice_Sochi, ты в конфиге после имён карт забыл поставить пустые кавычки, кмк
C-подобный:
    "maps_primary" //карты, на которых выдается основное оружие
    {
        "$2000$_csgo_hdr" ""
        "fy_snow_oldschool_hdr" ""
        "winterlude" ""
    }
Сообщения автоматически склеены:

и вообще нужно имена карт было искать через KvJumpToKey(config, sMap), а не циклом с проверкой имени
цикл нужен только если тебе нужно частичное совпадение, а не полное
Заработало. Остается загадкой, почему на некоторых картах работало нормально. Спасибо.
Попробуй вместо strcmp, использовать StrContains или StrEqual, ну и можешь удалить из кода config.GotoFirstSubKey(false) (просто какой в этом смысл)
Спасибо за ответ, как минимум ознакомлюсь с этими функциями
Но без config.GotoFirstSubKey(false) таки не работает
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,517
Реакции
4,979
Остается загадкой, почему на некоторых картах работало нормально.
Потому что каждое чётное имя карты считало за значение, а нечётное - за ключ, кмк.
Ты же проверял только ключи.
 

samec051

Участник
Сообщения
26
Реакции
3
Добрый день. Начал писать простенький плагин для кика игроков, все работает, но есть одно но... Мне не нравится, что когда плагин кикает игрока, в чате игры криво отображается причина кика. (Что-то типа: "Player xxxleft the game ({��XGG�2�)"), кик реализован в плагине так:
C-подобный:
KickClient(client, "AFK");
Хотя при кике, игроку эта же причина отображется нормально (я про окно "Disconnected" в главном меню).
Вопрос: где я ошибся?)
 

erdiszr

Участник
Сообщения
55
Реакции
2
Может, пригодится. Когда-то себе заказывал просто спектров, потом переделал под ClientMod. Если будут проблемы, сорян, поддержку не оказываю, мне лень.
Но, в целом, нормально работает
Можно ли скрыть имя администратора?
 

s777

Участник
Сообщения
449
Реакции
74
Всем доброго времени суток. Есть плагин на отображение урона в стиле фейсит, отредактированный @Faya™
Хотелось бы чтобы он по умолчанию был включен у всех. Сейчас его нужно включать командой !damage
 

Вложения

  • printdmg.rar
    3.9 КБ · Просмотры: 10
Последнее редактирование:

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Всем доброго времени суток. Есть плагин на отображение урона в стиле фейсит, отредактированный @Faya™
Хотелось бы чтобы он по умолчанию был включен у всех. Сейчас его нужно включать командой !damage
Попробуйте 21 строку поставить в true
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Всем доброго времени суток. Есть плагин на отображение урона в стиле фейсит, отредактированный @Faya™
Хотелось бы чтобы он по умолчанию был включен у всех. Сейчас его нужно включать командой !damage
 

Вложения

  • csgo_damageprint.sp
    5.5 КБ · Просмотры: 18
  • Люблю это
Реакции: s777
Сверху Снизу