v1.3.4: фикс моделей после 1vAll (ChangeClientTeam вместо CS_SwitchTeam)
CS_SwitchTeam меняет только флаг команды, не обновляя модель игрока. В результате после 1vAll игрок с CT-моделью оставался в ней на T-команде. ChangeClientTeam триггерит death+respawn — игра выдаёт правильную модель.
This commit is contained in:
@@ -97,10 +97,12 @@ addons/sourcemod/logs/custom_rounds.log
|
|||||||
|
|
||||||
## Версия
|
## Версия
|
||||||
|
|
||||||
`1.3.3` — Автор: deidara.dev
|
`1.3.4` — Автор: deidara.dev
|
||||||
|
|
||||||
### Changelog
|
### Changelog
|
||||||
|
|
||||||
|
- **1.3.4**
|
||||||
|
- Фикс: после 1vAll-раунда модели игроков теперь корректно меняются под их восстановленную команду. Раньше игрок с CT-моделью оставался в этой модели даже после возврата в команду T (и наоборот), потому что `CS_SwitchTeam` не обновляет модель. Теперь используется `ChangeClientTeam` — он триггерит правильный death+respawn → игра выдаёт модель для новой команды.
|
||||||
- **1.3.3**
|
- **1.3.3**
|
||||||
- Префикс изменён с `[ArcaneGame CR]` (зелёный) на `[CUSTOM ROUNDS]` (жёлтый, цветовой код `\x09`)
|
- Префикс изменён с `[ArcaneGame CR]` (зелёный) на `[CUSTOM ROUNDS]` (жёлтый, цветовой код `\x09`)
|
||||||
- **1.3.2**
|
- **1.3.2**
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public Plugin myinfo =
|
|||||||
name = "ArcaneGame Custom Rounds Core",
|
name = "ArcaneGame Custom Rounds Core",
|
||||||
author = "deidara.dev",
|
author = "deidara.dev",
|
||||||
description = "Core plugin for custom rounds with AG Coin integration",
|
description = "Core plugin for custom rounds with AG Coin integration",
|
||||||
version = "1.3.3",
|
version = "1.3.4",
|
||||||
url = "https://deidara.dev"
|
url = "https://deidara.dev"
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -619,8 +619,10 @@ public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
|
|||||||
ResetAllPlayerStats();
|
ResetAllPlayerStats();
|
||||||
|
|
||||||
// Восстанавливаем команды после предыдущего 1vAll
|
// Восстанавливаем команды после предыдущего 1vAll
|
||||||
// CS_SwitchTeam меняем сразу (чтобы спавн использовал нужную команду),
|
// ChangeClientTeam (а не CS_SwitchTeam) обязателен, иначе у игроков остаётся старая
|
||||||
// а телепорт делаем через таймер после того как игроки заспавнились
|
// модель (CT-модель на T-команде и наоборот). ChangeClientTeam вызывает death+respawn
|
||||||
|
// что обновляет модель. На этом этапе игроки ещё не заспавнились — death side-effect
|
||||||
|
// безобиден.
|
||||||
if (g_PendingTeamRestore)
|
if (g_PendingTeamRestore)
|
||||||
{
|
{
|
||||||
for (int i = 1; i <= MaxClients; i++)
|
for (int i = 1; i <= MaxClients; i++)
|
||||||
@@ -632,12 +634,11 @@ public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
|
|||||||
|
|
||||||
if (g_OriginalTeam[i] >= CS_TEAM_T && GetClientTeam(i) != g_OriginalTeam[i])
|
if (g_OriginalTeam[i] >= CS_TEAM_T && GetClientTeam(i) != g_OriginalTeam[i])
|
||||||
{
|
{
|
||||||
CS_SwitchTeam(i, g_OriginalTeam[i]);
|
ChangeClientTeam(i, g_OriginalTeam[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Через 0.4с телепортируем всех на спавны их исходных команд
|
// Через 0.4с телепортируем всех на спавны их исходных команд (safety net)
|
||||||
// (к этому моменту CSGO уже отработает игровой спавн)
|
|
||||||
CreateTimer(0.4, Timer_FinalTeamRestore, _, TIMER_FLAG_NO_MAPCHANGE);
|
CreateTimer(0.4, Timer_FinalTeamRestore, _, TIMER_FLAG_NO_MAPCHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -987,10 +988,10 @@ public Action Timer_FinalTeamRestore(Handle timer)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Дополнительная проверка команды
|
// Если по какой-то причине команда всё ещё неправильная — ChangeClientTeam (с обновлением модели)
|
||||||
if (GetClientTeam(i) != g_OriginalTeam[i])
|
if (GetClientTeam(i) != g_OriginalTeam[i])
|
||||||
{
|
{
|
||||||
CS_SwitchTeam(i, g_OriginalTeam[i]);
|
ChangeClientTeam(i, g_OriginalTeam[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Телепортируем на спавн исходной команды если игрок жив
|
// Телепортируем на спавн исходной команды если игрок жив
|
||||||
|
|||||||
Reference in New Issue
Block a user