ChangeClientTeamEx

Nekro

Терра инкогнита
Сообщения
4,042
Реакции
2,295
Привет народ, такая проблема, что после смены команды у игрока остаётся старый скин другой команды. Не подскажите как перекинуть в другую команду с новым скином?
ChangeClientTeamEx(i,NewTeam);

C-подобный:
ChangeClientTeamEx(client,team)
{
    if ((game != GAME_CSTRIKE) || (team < TEAM1))
    {
        ChangeClientTeam(client,team);
        return;
    }

    new oldTeam = GetClientTeam(client);
    CS_SwitchTeam(client,team);
    if (!IsPlayerAlive(client)) return;

    decl String:model[PLATFORM_MAX_PATH],String:newmodel[PLATFORM_MAX_PATH];
    GetClientModel(client,model,sizeof(model));
    newmodel = model;

    if (oldTeam == TEAM1)
    {
        new c4 = GetPlayerWeaponSlot(client,CS_SLOT_C4);
        if (c4 != -1) DropWeapon(client,c4);

        if (StrContains(model,t_models[0],false)) newmodel = ct_models[0];
        if (StrContains(model,t_models[1],false)) newmodel = ct_models[1];
        if (StrContains(model,t_models[2],false)) newmodel = ct_models[2];
        if (StrContains(model,t_models[3],false)) newmodel = ct_models[3];     
    } else
    if (oldTeam == TEAM2)
    {
        SetEntProp(client, Prop_Send, "m_bHasDefuser", 0, 1);

        if (StrContains(model,ct_models[0],false)) newmodel = t_models[0];
        if (StrContains(model,ct_models[1],false)) newmodel = t_models[1];
        if (StrContains(model,ct_models[2],false)) newmodel = t_models[2];
        if (StrContains(model,ct_models[3],false)) newmodel = t_models[3];     
    }

    if (hSetModel != INVALID_HANDLE) SDKCall(hSetModel, client, newmodel);
}
 
Последнее редактирование:

NaN

FPE_INTDIV_TRAP
Сообщения
1,513
Реакции
1,487
Не подскажите как перекинуть в другую команду с новым скином?
Никак. Нужно вручную ставить какой-то из дефолтных скинов.
Что в принципе и должно работать в представленной функции.
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Ну, по идее, вызов события смены команды должен решить эту проблему, по крайней мере VIP Skins прослушивает смену команды.
Если же событие не вызывается, то можно вызвать его насильно:
C-подобный:
void Player_Team(int iClient)
{
    Event playerTeam = CreateEvent("player_team", true);
    if(playerTeam)
    {
        // playerTeam params

        playerTeam.Fire(false); // .FireToClient()
    }

    // В случае с Fire, дескриптор будет закрыт самостоятельно
    delete playerTeam;
}
 
Сверху Снизу