Запретить переменной переключение на игроков (смотреть за живым игроками) и каждый тик телепортировать игрока в нужную позицию, так его камера будет заморожена в одном положенииКак установить и заморозить камеру мёртвого игрока по нужным координатам?
Вопрос совершенно не про переменную mp_forcecamera.Запретить переменной переключение на игроков (смотреть за живым игроками) и каждый тик телепортировать игрока в нужную позицию, так его камера будет заморожена в одном положении
Ну так тебе ответили ясно и понятно. Запрет для того чтобы игрок не мог переключать камеру.Вопрос совершенно не про переменную mp_forcecamera.
У меня есть координаты, нужно перемести по ним камеру мёртвого игрока. Желательно конкретный пример кода.
Это я понял. А как камеру установить по определённым координатам?Ну так тебе ответили ясно и понятно. Запрет для того чтобы игрок не мог переключать камеру.
Это я понял. А как камеру установить по определённым координатам?
каждый тик телепортировать игрока в нужную позицию
Вопрос совершенно не про переменную mp_forcecamera.
У меня есть координаты, нужно перемести по ним камеру мёртвого игрока. Желательно конкретный пример кода.
bool g_bPlayerAlive[MAXPLAYERS+1];
public void OnPluginStart()
{
HookEvent("player_death", Event_PlayerDeath);
HookEvent("player_spawn", Event_PlayerSpawn);
}
public Action Event_PlayerDeath(Event event, char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(event.GetInt("userid"));
g_bPlayerAlive[client] = false;
}
public Action Event_PlayerSpawn(Event event, char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(event.GetInt("userid"));
g_bPlayerAlive[client] = true;
}
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_bPlayerAlive[client] || !IsClientInGame(client) || IsFakeClient(client))
return;
TeleportEntity(client, <позиция камеры>, <угол поворота камеры>, NULL_VECTOR);
}
#include <sdktools_functions>
bool g_bAlive[MAXPLAYERS+1];
public void OnPluginStart()
{
HookEvent("player_spawn", Event_Player);
HookEvent("player_death", Event_Player);
}
public Action Event_Player(Event event, char[] name, bool dontBroadcast)
{
g_bAlive[GetClientOfUserId(event.GetInt("userid"))] = name[7] == 's';
}
public Action OnPlayerRunCmd(int client, int &buttons)
{
if(!g_bAlive[client] && IsClientInGame(client) && !IsFakeClient(client))
TeleportEntity(client, <позиция_камеры>, <угол_поворота_камеры>, NULL_VECTOR);
}
SetClientViewEntity(iClient, iEntity);
SetEntPropEnt(iClient, Prop_Send, "m_hObserverTarget", 0);
SetEntProp(iClient, Prop_Send, "m_iObserverMode", 1);
SetEntProp(iClient, Prop_Send, "m_bDrawViewmodel", 0);
SetEntPropVector(iEntity, Prop_Data, "m_angRotation", view_as<float>({0.0,90.0,0.0})); // по желанию