AWP no zoom

DimkoO.o

Участник
Сообщения
27
Реакции
0
@FrozDark, А можно ли сделать по голосованию? что-бы игроки например писаль !nozoom
 

Туник

Участник
Сообщения
1,281
Реакции
264
Последнее редактирование модератором:

Drimer

Участник
Сообщения
203
Реакции
54
А с голосованием можно как нибудь?
 

Arthur Don

Участник
Сообщения
1,697
Реакции
256
@Drimer, могу продать если хочешь, есть приватная версия от R1KO
 

DimkoO.o

Участник
Сообщения
27
Реакции
0
Кто перепишет NoZoom по голосованию готов заплатить... скайп dimka180696
 

Туник

Участник
Сообщения
1,281
Реакции
264
@DimkoO.o, зачем платить тут кто-то кидал готовый плагин, только нужно перевести текст на русский язык, в текстовике который идет с плагином.
--- Добавлено позже ---
Вот держи
 

Вложения

  • no-scope.zip
    2.1 МБ · Просмотры: 143

Drimer

Участник
Сообщения
203
Реакции
54
@DimkoO.o, зачем платить тут кто-то кидал готовый плагин, только нужно перевести текст на русский язык, в текстовике который идет с плагином.
--- Добавлено позже ---
Вот держи
Он баганый.После смены карты за команду не заходит.
 

ShmoNiX

Участник
Сообщения
541
Реакции
219
Плагин для CS:Source OB, на последнюю версию sm 1.12

Запрещает Zoom на всех снайперках. Есть возможность начать голосование для игрока, через !noscope
Есть возможность сменить режим сразу, в этом же меню, ТОЛЬКО ДЛЯ АДМИНА + запустить голосование от имени админа (без учета таймаута вроде как). Тестите :)

No_Sniper_Scope.sp:
#include <sourcemod>
#include <sdktools>

#pragma newdecls required
#pragma semicolon 1

bool g_bNoScopeActive = false;
bool g_bVoteInProgress = false;
int g_iLastVoteTime = 0;

ConVar g_hNoScopeCvar;

#define VOTE_SOUND "ui/vote_started.wav"

public Plugin myinfo = {
    name = "No Sniper Scope (Menu + Admin Bypass)",
    author = "Google AI Assistant",
    version = "1.2",
    url = ""
};

public void OnPluginStart() {
    g_hNoScopeCvar = CreateConVar("sm_noscope_all", "0", "Блокировать ли прицел", FCVAR_NOTIFY);
    g_hNoScopeCvar.AddChangeHook(OnCvarChanged);
   
    // Регистрируем команду как консольную, чтобы она была доступна всем
    RegConsoleCmd("sm_noscope", Command_NoScopeMenu, "Открыть меню NoScope");

    AutoExecConfig(true, "NoScope");
    CreateTimer(120.0, Timer_Ads, _, TIMER_REPEAT);
}

public void OnMapStart() {
    PrecacheSound(VOTE_SOUND, true);
}

public void OnCvarChanged(ConVar convar, const char[] oldValue, const char[] newValue) {
    g_bNoScopeActive = view_as<bool>(convar.IntValue);
}

public Action Timer_Ads(Handle timer) {
    if (!g_bNoScopeActive) {
        PrintToChatAll(" \x04[NoScope]\x01 Хотите запретить прицелы? Напишите \x03!noscope");
    }
    return Plugin_Continue;
}

public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon, int &subtype, int &cmdnum, int &tickcount, int &seed, int mouse[2]) {
    if (g_bNoScopeActive && IsPlayerAlive(client) && (buttons & IN_ATTACK2)) {
        int iWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
        if (iWeapon != -1) {
            char sWeapon[64];
            GetEntityClassname(iWeapon, sWeapon, sizeof(sWeapon));
            if (StrContains(sWeapon, "awp") != -1 || StrContains(sWeapon, "scout") != -1 ||
                StrContains(sWeapon, "sg550") != -1 || StrContains(sWeapon, "g3sg1") != -1) {
               
                buttons &= ~IN_ATTACK2;
                SetEntProp(client, Prop_Send, "m_iFOV", 0);
                PrintHintText(client, "Прицел ЗАПРЕЩЕН!");
                return Plugin_Changed;
            }
        }
    }
    return Plugin_Continue;
}

public Action Command_NoScopeMenu(int client, int args) {
    if (client == 0) return Plugin_Handled;

    // Проверяем наличие флага админа (например, флаг GENERIC - 'b')
    AdminId admin = GetUserAdmin(client);
    bool isAdmin = (admin != INVALID_ADMIN_ID && GetAdminFlag(admin, Admin_Generic));

    if (isAdmin) {
        AdminChoiceMenu(client);
    } else {
        TryStartPlayerVote(client);
    }
    return Plugin_Handled;
}

void AdminChoiceMenu(int client) {
    Menu menu = new Menu(Handler_AdminChoice);
    menu.SetTitle("Управление NoScope (Админ)");
   
    char buffer[128];
    Format(buffer, sizeof(buffer), "Мгновенно: %s", g_bNoScopeActive ? "Включить прицелы" : "Отключить прицелы");
    menu.AddItem("toggle", buffer);
    menu.AddItem("vote", "Запустить голосование (без КД)");
   
    menu.ExitButton = true;
    menu.Display(client, 20);
}

public int Handler_AdminChoice(Menu menu, MenuAction action, int param1, int param2) {
    if (action == MenuAction_Select) {
        char info[32];
        menu.GetItem(param2, info, sizeof(info));
       
        if (StrEqual(info, "toggle")) {
            g_bNoScopeActive = !g_bNoScopeActive;
            g_hNoScopeCvar.SetInt(g_bNoScopeActive ? 1 : 0);
            PrintToChatAll(" \x04[SM]\x01 Админ %N %s прицелы.", param1, g_bNoScopeActive ? "ЗАПРЕТИЛ" : "РАЗРЕШИЛ");
        } else if (StrEqual(info, "vote")) {
            StartNoScopeVote();
        }
    } else if (action == MenuAction_End) {
        delete menu;
    }
    return 0;
}

void TryStartPlayerVote(int client) {
    if (IsVoteInProgress() || g_bVoteInProgress) {
        PrintToChat(client, " \x04[SM]\x01 Голосование уже идет.");
        return;
    }

    int iElapsed = GetTime() - g_iLastVoteTime;
    if (iElapsed < 300 && g_iLastVoteTime != 0) {
        PrintToChat(client, " \x04[SM]\x01 Ждите %d сек. до нового голосования.", 300 - iElapsed);
        return;
    }

    StartNoScopeVote();
}

void StartNoScopeVote() {
    if (IsVoteInProgress() || g_bVoteInProgress) return;

    Menu menu = new Menu(Handler_VoteNoScope);
    menu.SetTitle(g_bNoScopeActive ? "Разрешить прицелы?" : "Запретить прицелы?");
    menu.AddItem("y", "Да");
    menu.AddItem("n", "Нет");
    menu.ExitButton = false;
   
    g_bVoteInProgress = true;
    g_iLastVoteTime = GetTime(); // Записываем время старта
   
    EmitSoundToAll(VOTE_SOUND);
    menu.DisplayVoteToAll(20);
}

public int Handler_VoteNoScope(Menu menu, MenuAction action, int param1, int param2) {
    if (action == MenuAction_End) {
        g_bVoteInProgress = false;
        delete menu;
    } else if (action == MenuAction_VoteEnd) {
        int iVotes, iTotalVotes;
        GetMenuVoteInfo(param2, iVotes, iTotalVotes);
       
        // 60% голосов "ЗА" (param2 - это индекс выбранного пункта, "y" имеет индекс 0)
        if (param2 == 0 && (float(iVotes) / float(iTotalVotes) >= 0.60)) {
             g_bNoScopeActive = !g_bNoScopeActive;
             g_hNoScopeCvar.SetInt(g_bNoScopeActive ? 1 : 0);
             PrintToChatAll(" \x04[SM]\x01 Голосование завершено! Прицелы %s.", g_bNoScopeActive ? "ЗАПРЕЩЕНЫ" : "РАЗРЕШЕНЫ");
        } else {
             PrintToChatAll(" \x04[SM]\x01 Голосование не набрало 60%% голосов.");
        }
    }
    return 0;
}
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,666
Реакции
5,153
C-подобный:
#include <sourcemod>
#include <sourcemod>
Это чтобы наверняка?

Этот инклюд уже несколько лет нет необходимости прописывать в исходнике, т.к. компилятор в любом случае самостоятельно добавляет его при компиляции
 

ShmoNiX

Участник
Сообщения
541
Реакции
219
Отредактировал код выше. Гугл тоже ошибается)))
Обычные игроки не могли запускать голосовалку через чат. Теперь могут
 
Сверху Снизу