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

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@AleksandrM3, RegAdminCmd("ex", ExtendedMap, ADMFLAG_RESERVATION); замени на RegConsoleCmd("ex", ExtendedMap); и будет тебе счастье

@Kr1kuzya, ну как бы Seton1447 просил отсчёт для рестарта :dntknw:
 

Mensi1337

Участник
Сообщения
242
Реакции
16
@Seton1447, пробуй
PHP:
#include <sourcemod>
#undef REQUIRE_PLUGIN
#include <adminmenu>

new Handle:hTopMenu,
    bool:bInCountdown;

public OnPluginStart()
{
    RegAdminCmd("sm_restart", Cmd_Restart, ADMFLAG_ROOT);

    new Handle:topmenu;
    if(LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != INVALID_HANDLE)) OnAdminMenuReady(topmenu);
}

public OnLibraryRemoved(const String:name[])
{
    if(StrEqual(name, "adminmenu")) hTopMenu = INVALID_HANDLE;
}

public OnAdminMenuReady(Handle:topmenu)
{
    if(topmenu == hTopMenu) return;

    hTopMenu = topmenu;

    new TopMenuObject:server_cmds = FindTopMenuCategory(hTopMenu, ADMINMENU_SERVERCOMMANDS);

    if(server_cmds != INVALID_TOPMENUOBJECT) AddToTopMenu(hTopMenu, "sm_restart", TopMenuObject_Item, AdminMenu_Restart, server_cmds, "sm_restart", ADMFLAG_ROOT);
}

public AdminMenu_Restart(Handle:topmenu, TopMenuAction:action, TopMenuObject:object_id, param, String:buffer[], maxlength)
{
    switch(action)
    {
        case TopMenuAction_DisplayOption:    Format(buffer, maxlength, "Перезагрузить сервер", param);
        case TopMenuAction_SelectOption:    Restart(param);
    }
}

public Action:Cmd_Restart(client, args)
{
    Restart(client);

    return Plugin_Handled;
}

stock Restart(client)
{
    if(bInCountdown) return;

    PrintCenterTextAll("Сервер будет перезагружен через 3 сек.");
    CreateTimer(1.0, Timer_Restart, TIMER_REPEAT);
}

public Action:Timer_Restart(Handle:timer)
{
    bInCountdown = true;
    static int time = 3;
    if(--time < 1)
    {
        PrintCenterTextAll("Сервер перезагружается.");
        if(time == -1) ServerCommand("_restart");
    }
    else PrintCenterTextAll("Сервер будет перезагружен через %d сек.", time);

    return Plugin_Continue;
}
Если так сделать, то отсчет не работает
CreateTimer(1.0, Timer_Restart, TIMER_REPEAT);
А так работает "CreateTimer(1.0, Timer_Restart, _, TIMER_REPEAT);"
Но спасибо за помощь все равно)
 

Mensi1337

Участник
Сообщения
242
Реакции
16
@Seton1447, точно, запамятовал про 3-й параметр
Я правильно добавил кик игрока с причиной? (вроде работает)

PHP:
#include <sourcemod>
#undef REQUIRE_PLUGIN
#include <adminmenu>

new Handle:hTopMenu,
    bool:bInCountdown;

public OnPluginStart()
{
    RegAdminCmd("sm_restart", Cmd_Restart, ADMFLAG_ROOT);

    new Handle:topmenu;
    if(LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != INVALID_HANDLE)) OnAdminMenuReady(topmenu);
}

public OnLibraryRemoved(const String:name[])
{
    if(StrEqual(name, "adminmenu")) hTopMenu = INVALID_HANDLE;
}

public OnAdminMenuReady(Handle:topmenu)
{
    if(topmenu == hTopMenu) return;

    hTopMenu = topmenu;

    new TopMenuObject:server_cmds = FindTopMenuCategory(hTopMenu, ADMINMENU_SERVERCOMMANDS);

    if(server_cmds != INVALID_TOPMENUOBJECT) AddToTopMenu(hTopMenu, "sm_restart", TopMenuObject_Item, AdminMenu_Restart, server_cmds, "sm_restart", ADMFLAG_ROOT);
}

public AdminMenu_Restart(Handle:topmenu, TopMenuAction:action, TopMenuObject:object_id, param, String:buffer[], maxlength)
{
    switch(action)
    {
        case TopMenuAction_DisplayOption:    Format(buffer, maxlength, "Перезагрузить сервер", param);
        case TopMenuAction_SelectOption:     Restart(param);
    }
}

public Action:Cmd_Restart(client, args)
{
    Restart(client);

    return Plugin_Handled;
}

stock Restart(client)
{
    if(bInCountdown) return;

    PrintCenterTextAll("Сервер будет перезагружен через 10 сек.");
    CreateTimer(1.0, Timer_Restart, _, TIMER_REPEAT);
}

public Action:Timer_Restart(Handle:timer)
{
    bInCountdown = true;
    static time = 10;
    if(--time < 1)
    {
        PrintCenterTextAll("Сервер перезагружается.");
        PrintToChatAll("\x04[SM] \x01Сервер перезагружается.");
        if(time == -1) ServerCommand("sm_kick @all Сервер перезагружается");
        if(time == -2) ServerCommand("_restart");
    }
    else PrintCenterTextAll("Сервер будет перезагружен через %d сек.", time);

    return Plugin_Continue;
}
 

Hollya

❤ GIRL SCRIPTER ❤
Сообщения
128
Реакции
32
Я правильно добавил кик игрока с причиной? (вроде работает)

PHP:
#include <sourcemod>
#undef REQUIRE_PLUGIN
#include <adminmenu>

new Handle:hTopMenu,
    bool:bInCountdown;

public OnPluginStart()
{
    RegAdminCmd("sm_restart", Cmd_Restart, ADMFLAG_ROOT);

    new Handle:topmenu;
    if(LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != INVALID_HANDLE)) OnAdminMenuReady(topmenu);
}

public OnLibraryRemoved(const String:name[])
{
    if(StrEqual(name, "adminmenu")) hTopMenu = INVALID_HANDLE;
}

public OnAdminMenuReady(Handle:topmenu)
{
    if(topmenu == hTopMenu) return;

    hTopMenu = topmenu;

    new TopMenuObject:server_cmds = FindTopMenuCategory(hTopMenu, ADMINMENU_SERVERCOMMANDS);

    if(server_cmds != INVALID_TOPMENUOBJECT) AddToTopMenu(hTopMenu, "sm_restart", TopMenuObject_Item, AdminMenu_Restart, server_cmds, "sm_restart", ADMFLAG_ROOT);
}

public AdminMenu_Restart(Handle:topmenu, TopMenuAction:action, TopMenuObject:object_id, param, String:buffer[], maxlength)
{
    switch(action)
    {
        case TopMenuAction_DisplayOption:    Format(buffer, maxlength, "Перезагрузить сервер", param);
        case TopMenuAction_SelectOption:     Restart(param);
    }
}

public Action:Cmd_Restart(client, args)
{
    Restart(client);

    return Plugin_Handled;
}

stock Restart(client)
{
    if(bInCountdown) return;

    PrintCenterTextAll("Сервер будет перезагружен через 10 сек.");
    CreateTimer(1.0, Timer_Restart, _, TIMER_REPEAT);
}

public Action:Timer_Restart(Handle:timer)
{
    bInCountdown = true;
    static time = 10;
    if(--time < 1)
    {
        PrintCenterTextAll("Сервер перезагружается.");
        PrintToChatAll("\x04[SM] \x01Сервер перезагружается.");
        if(time == -1) ServerCommand("sm_kick @all Сервер перезагружается");
        if(time == -2) ServerCommand("_restart");
    }
    else PrintCenterTextAll("Сервер будет перезагружен через %d сек.", time);

    return Plugin_Continue;
}
Да, все верно.
 

Mensi1337

Участник
Сообщения
242
Реакции
16
Добрый вечер, кто может написать плагин блокировки б на de_dust2, если меньше 5x5 заблокировано, а больше 5x5 открыта.
(Blocker Passes не предлагать)
 

Hollya

❤ GIRL SCRIPTER ❤
Сообщения
128
Реакции
32
Добрый вечер, кто может написать плагин блокировки б на de_dust2, если меньше 5x5 заблокировано, а больше 5x5 открыта.
(Blocker Passes не предлагать)
Опять же, зачем придумывать велосипед? чем тебя Blocker Passes не устроил? очередной DarkAngel ? :D
 

Mensi1337

Участник
Сообщения
242
Реакции
16
@Hollya, @R1KO, Blocker Passes работает не исправно - то есть не работает в конфиге настройка кол-во игроков при котором открывается пропс (UnLockNum)
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
@Seton1447, ну у всех же работает. Там вроде было что-то с ним. Не помню уже.
 

Mensi1337

Участник
Сообщения
242
Реакции
16

Вложения

  • awp_lego_2.txt
    410 байт · Просмотры: 5

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@Seton1447, меняй значение переменной sm_bp_minplayer и смотри на результат (как я понял из кода версии 1.2.5 там параметр UnLockNum конфига не используется для блокировки/разблокировки и прописан в самом конфиге чисто для галочки)
 

Mensi1337

Участник
Сообщения
242
Реакции
16
@Seton1447, меняй значение переменной sm_bp_minplayer и смотри на результат (как я понял из кода версии 1.2.5 там параметр UnLockNum конфига не используется для блокировки/разблокировки и прописан в самом конфиге чисто для галочки)
Мне нужно что бы на de_dust2 было закрыто если меньше 10, а на awp_lego_2 было закрыто если меньше 30
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@Mizuri, какой именно?
Кинь ссыль на коммент
 

Mizuri

Участник
Сообщения
160
Реакции
8
@Mizuri, какой именно?
Кинь ссыль на коммент
@Mizuri, вообще-то я обычно прикладываю к своим сообщениям исходники плагинов, а у тебя декомпил

да и вроде я выкладывал пофикшенную версию
Написание плагинов
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@Mizuri, как понимать фразу "все еще в кс го не работает на скауте вообще не пишет"?
 

Mizuri

Участник
Сообщения
160
Реакции
8
@Mizuri, как понимать фразу "все еще в кс го не работает на скауте вообще не пишет"?
при стрельбе со скаута что noscope что scope табличка не вылазиет , а с awp выдает табличку при любом убийстве даже scope
 
Сверху Снизу