Иконка ресурса

Default Fov 2.1

Нет прав для скачивания
Сообщения
24
Реакции
12
EvilLolaBunny добавил(а) новый ресурс:

Default Fov - Позволяет менять угол обзора игрока.

Скрипт позволяет изменять угол обзора игрока путём написания команды в чат /fov <значение>.

Минимальное значение - 90 (стандартное для игры). Максимальное значение - 110.

Автор скрипта не я. Все, что я добавил, это текст в чат, уведомляющий об ошибке при вводе слишком большого или маленького значения.
Узнать больше об этом ресурсе...
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
В версии 1.9.0, форвард получает 2 аргументаforward client_authorized(id, const authid[]);
 
Сообщения
649
Реакции
556
Помог
9 раз(а)
new customFOV[32];
Будет ошибка в логах index of bounds для последнего слота.

И зачем мониторит весь чат ради одной команды?
31 Мар 2024
Code_0xABC, Если память не изменяетранних версиях тоже данный аргумент имеется.
 
Сообщения
328
Реакции
93
Помог
2 раз(а)
Вкладку исходного кода измените, чтоб мы не запутались в вашей версии
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
EvilLolaBunny, eсли не авторор, то подправь:
Код:
new customFOV[MAX_PLAYERS +1] = {CS_DEFAULT_FOV, ...};
new pSetFOV ;

public plugin_init() {
    register_plugin( PLUGIN, VERSION, AUTHOR );

    register_clcmd("say", "sayHandle");
    register_clcmd("say_team", "sayHandle");
  
    pSetFOV = get_user_msgid( "SetFOV" );
    register_message( pSetFOV, "Message_SetFOV" );
    RegisterHam( Ham_Spawn, "player", "OnCBasePlayer_Spawn_P", true );

    g_nVault = nvault_open(g_sznVaultName);

    if(g_nVault == INVALID_HANDLE)
        set_fail_state("Couldn t open ^"%s^" nvault file", g_sznVaultName);
}

public client_disconnected(id)
    customFOV[id] = CS_DEFAULT_FOV;

public client_authorized(id, szAuthhID[])
{
    new iTs, szData[5];

    if(nvault_lookup(g_nVault, szAuthID, szData, charsmax(szData), iTs))
        customFOV[id] = str_to_num(szData);
}

public userFOV( id, iFOV )
{

    if( ( iFOV < 90 ) || ( iFOV > 180 ) ) {
        client_print(id, print_chat, "Min fov 90 | Max fov 110 | Default fov 90");
        return PLUGIN_HANDLED;
    }

    customFOV[ id ] = iFOV;

    message_begin( MSG_ONE,  pSetFOV, _, id );
    write_byte( iFOV );
    message_end();

    save_user_fov(id, iFOV);

    return PLUGIN_HANDLED;
}
 
Последнее редактирование:
Сообщения
649
Реакции
556
Помог
9 раз(а)
Code_0xABC,
Код:
if(nvault_lookup(g_nVault, szAuthID, szData, charsmax(szData), iTs))
        customFOV[id] = str_to_num(szData);
Знаешь что будет если игрок не найден в бд (те новый игрок) а в ячейке осталось значение предыдущего игрока?
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Vaqtincha, ты про это? Как-то упустил из виду))
Код:
public client_disconnected(id)
    customFOV[id] = CS_DEFAULT_FOV;
 
Последнее редактирование:
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Если не против автор ТС, то скину переделаный вариант.

Требования:
AMX (1.9.0, 1.10), Reapi

Настройки:

Консольная команда: fov 110 (пример)

const FV_MIN = 80; //Min value.
const FV_DEFAULT = 90; //Default value.
const FV_MAX = 130; //Max value.
Код:
#include <amxmodx>
#include <nvault>
#include <reapi>

const FV_MIN = 80;          //Min value.
const FV_DEFAULT = 90;      //Default value.
const FV_MAX = 130;         //Max value.

const MAX_LEN_BUFFER = 64;

enum any: DATA {
    NVAULT,
    MSG
};

new
    g_szNameNvault[] = "FOV",
    eGame[DATA],
    g_UserFov[MAX_PLAYERS +1] = {FV_DEFAULT, ...};

public plugin_init() {
    register_plugin("[REAPI] User FOV", "2.04.24", "DEV-CS.RU");

    new szNameNvault[] = "FOV";
    eGame[NVAULT] = nvault_open(szNameNvault);

    if(eGame[NVAULT] == INVALID_HANDLE)
        set_fail_state("Couldn t open ^"%s^" nvault file", g_szNameNvault);

    register_clcmd("fov", "UTIL_Cmd");

    eGame[MSG] = get_user_msgid("SetFOV");

    register_message(eGame[MSG], "MSG_SetFov");
    RegisterHookChain(RG_CBasePlayer_Spawn, "RG_CBasePlayer_Spawn_Post", true);
}

public plugin_end()
    nvault_close(eGame[NVAULT]);

public client_disconnected(id)
    g_UserFov[id] = FV_DEFAULT;

public UTIL_Cmd(const id) {
    new
        szBuffer[MAX_LEN_BUFFER +1],
        Fov;

    read_args(szBuffer, MAX_LEN_BUFFER);
    remove_quotes(szBuffer);
    parse(szBuffer, szBuffer, MAX_LEN_BUFFER, szBuffer, MAX_LEN_BUFFER);

    UTIL_LimitationValue(true, g_szNameNvault, id, FV_MIN, FV_MAX, str_to_num(szBuffer), Fov);
    SET_UserFov(id, Fov);

    return PLUGIN_HANDLED;
}

public client_authorized(id, const szAuthid[]) {
    new szBuffer[MAX_LEN_BUFFER +1];

    enum {
        CELL_TIMESTAMP,
        CELL_VALUE
    };

    if(nvault_lookup(eGame[NVAULT], szAuthid, szBuffer[CELL_VALUE], MAX_LEN_BUFFER, szBuffer[CELL_TIMESTAMP]))
        g_UserFov[id] = str_to_num(szBuffer[CELL_VALUE]);
}

public MSG_SetFov(mId, mDest, mEntity) {
    #define NUM_ARGS 1

    if(!is_user_alive(mEntity) || get_msg_arg_int(NUM_ARGS) != FV_DEFAULT)
        return;

    set_msg_arg_int(NUM_ARGS, get_msg_argtype(NUM_ARGS),g_UserFov[mEntity]);
}

public RG_CBasePlayer_Spawn_Post(const id)
    if(is_user_alive(id))
        set_member(id, m_iFOV, g_UserFov[id]);

SET_UserFov(const id, const Fov) {
    message_begin(MSG_ONE_UNRELIABLE, eGame[MSG], .player = id);
    write_byte(Fov);
    message_end();

    UTIL_SaveUserFov(id, Fov);
}

UTIL_SaveUserFov(const id, const Fov) {
    if(!is_user_connected(id))
        return;

    new szBuffer[MAX_LEN_BUFFER +1];
    get_user_authid(id, szBuffer, MAX_LEN_BUFFER +1);

    nvault_set(eGame[NVAULT], szBuffer, fmt("%i", Fov));
    g_UserFov[id] = Fov;
}

/*
* The value of the variable, if it goes beyond the acceptable limit, is reduced to the limit.
*
* @param bNotif           Notification in the chat (true - on, false - off).
* @param szBuffer         The prefix for the message.
* @param pUser            The player's index (If it is present to receive for the player).
* @param Min              Min value.
* @param Max              Max value.
* @param NewValue         Buffer of the received number.
*
* @return                 Not returns.
*/
stock UTIL_LimitationValue(const bool:bNotif = false, const szTmp[] = "", const pUser = 0, const Min, const Max, const OldValue, &NewValue) {
    if(OldValue < Min) {
        NewValue = Min;

        if(bNotif)
            client_print(pUser, print_chat, "[%s] Min Fov %i", szTmp, Min);
    }

    else if(OldValue > Max) {
        NewValue = Max;

        if(bNotif)
            client_print(pUser, print_chat, "[%s] Max Fov %i", szTmp, Max);
    }

    else NewValue = OldValue;
}
 

Вложения

Последнее редактирование:
Сообщения
1,543
Реакции
1,543
Предупреждения
1
Помог
2 раз(а)
Есть такая тема,что на широкоформатниках 16:9 ( монитор-телевизор ) обрезается конкретно фов
Сразу есть решение в настройках игры клиента "подогнать поле зрения" и оно выставляет всё нормально

На каких то билдах более старых не работает default_fov вовсе
 
Сообщения
672
Реакции
242
Помог
11 раз(а)
это не придирки ТС, но мне кажется это плагин не меняет угол обзора (как описано в описание) а меняет поле зрения игрока
Угол обзора это совсем другой код (плагин) - это куда повернут игрок , пример: var_v_angle , var_angles
 
Сообщения
16
Реакции
2
у кт частично отлетает випменю из 5 только 2 оружия показывает, у тт это меню вовсе не выходит, команда rs не реагирует на обнуление счета
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Fern, 54 строку замени на return; a, 65 удали вообще
 
Сообщения
24
Реакции
12
у кт частично отлетает випменю из 5 только 2 оружия показывает, у тт это меню вовсе не выходит, команда rs не реагирует на обнуление счета
Залил фикс от Code_0xABC
Перекачай новую версию.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу