Locked Chase Cam when joining

Сообщения
219
Реакции
42
I have a server with login system and sometimes, when the player logs in, the game autoselect him the "Locked Chase Cam" instead of the "Free Chase Cam".
I want to be always Free Chase Cam.

It's like random, sometimes I join and get Locked, others Free....

Searching at ReGameDLL I see:
Код:
        default:
            Observer_SetMode(m_bObserverAutoDirector ? OBS_CHASE_LOCKED : OBS_CHASE_FREE);
            break;
        }
Also, https://github.com/s1lentq/ReGameDL...5d2166f66980/regamedll/dlls/player.cpp#L4057;
Код:
    static int iFirstTime = 1;
    if (iFirstTime != 0 && CSGameRules() && CSGameRules()->IsCareer() && !IsBot())
    {
        Observer_SetMode(OBS_CHASE_LOCKED);
        CLIENT_COMMAND(edict(), "spec_autodirector_internal 1\n");
        iFirstTime = 0;
    }
    else
        Observer_SetMode(m_iObserverLastMode);

How to set always Free Chase Cam ?
24 Фев 2024
AutoDirector option is always disabled:

AutoDirector_disabled.png
 

Вложения

Сообщения
264
Реакции
132
Помог
13 раз(а)
А если устанавливать m_iObserverLastMode как тебе нужно - такое сработает ? Что то типо такого :

Код:
#include <amxmodx>
#include <reapi>

public client_putinserver(id)
    set_task(2.0, "free_spec", id)

public free_spec(id)
    set_member(id, m_iObserverLastMode, OBS_CHASE_FREE)
 
  • Нравится
Реакции: ssx
Сообщения
219
Реакции
42
murlemur I don't know how this can help. Searching at code, m_iObserverLastMode is only saving the mode, but the code is not getting a value from him.

Something like this would help.
It's always blocking the Locked Chase Cam. It's not what I really want. Maybe has someone a better idea?

Код:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
    register_plugin("Remove: Locked Chase Cam", "0.1", "RauliTop")
  
    RegisterHookChain(RG_CBasePlayer_Observer_SetMode, "RG_Observer_SetMode_Pre")
}

public RG_Observer_SetMode_Pre(id, iMode)
{
    /*
    #define OBS_NONE                        0
    #define OBS_CHASE_LOCKED                1           // Locked Chase Cam
    #define OBS_CHASE_FREE                  2           // Free Chase Cam
    #define OBS_ROAMING                     3           // Free Look
    #define OBS_IN_EYE                      4           // First Person
    #define OBS_MAP_FREE                    5           // Free Overview
    #define OBS_MAP_CHASE                   6           // Chase Overview
    */

    if (iMode != OBS_CHASE_LOCKED)
    {
        return HC_CONTINUE;
    }

    client_print(0, print_chat, "blocked")

    rg_set_observer_mode(id, OBS_CHASE_FREE);

    SetHookChainReturn(ATYPE_INTEGER, false);
    return HC_SUPERCEDE;
}
 
Последнее редактирование:
Сообщения
673
Реакции
242
Помог
11 раз(а)
Try the Post hook
Код:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
    register_plugin("Remove: Locked Chase Cam", "0.1", "RauliTop")
 
    RegisterHookChain(RG_CBasePlayer_Observer_SetMode, "RG_Observer_SetMode_Post", true)
}

public RG_Observer_SetMode_Post(id, iMode)
{
    if (iMode != OBS_CHASE_LOCKED)
    {
        return HC_CONTINUE;
    }

    client_print(0, print_chat, "blocked")

    rg_set_observer_mode(id, OBS_CHASE_FREE);
}
 
Сообщения
219
Реакции
42
Well, I don't want to block or replace the "Locked Chase Cam", that will be the last option.

I want to know why is random and set always the "Free Chase Cam" when join.
 
Сообщения
18
Реакции
4
Помог
1 раз(а)
raulitop,

Код:
#include <amxmodx>

public plugin_init() {
    register_plugin("FreeChaseCam", "1.0", "YourName")
}

public client_putinserver(id) {
    set_user_rendering(id, kRenderFxNoInterp)
    client_cmd(id, "firstperson")
}
also ReGameDLL,

добавить код Observer_SetMode(OBS_CHASE_FREE); в файлы observer.cpp и player.cpp:

В файле observer.cpp:
Код:
switch (mode) {
    case OBS_CHASE_LOCKED:
        Observer_SetMode(OBS_CHASE_FREE); // Добавь эту строку
        break;
    default:
        Observer_SetMode(m_bObserverAutoDirector ? OBS_CHASE_LOCKED : OBS_CHASE_FREE);
        break;
}
В файле player.cpp:

Код:
static int iFirstTime = 1;
if (iFirstTime != 0 && CSGameRules() && CSGameRules()->IsCareer() && !IsBot()) {
    Observer_SetMode(OBS_CHASE_FREE); // Добавь эту строку
    CLIENT_COMMAND(edict(), "spec_autodirector_internal 1\n");
    iFirstTime = 0;
} else {
    Observer_SetMode(m_iObserverLastMode);
}
Добавь эти строки кода в указанные места в соответствующих файлах. После этого пересобери проект ReGameDLL, и изменения должны вступить в силу.
 

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

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