Написание плагинов

NeLifeASkazka

Участник
Сообщения
128
Реакции
70
И при заходе и при смене команды, к примеру игрок играл за 1 из сторон и вышел в спектора
Может быть такое, что если игрок зайдет на сервер и не выберет команду, то GetClientTeam будет возвращать 0
Потому если вам важно чтобы игрок был в какой-то команде, можете делать еще так:

code:
#include <cstrike>

public void OnClientPutInServer(int client){
    CreateTimer(10.0, CheckPlayerTeam, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
}
public Action CheckPlayerTeam(Handle timer, int userid){
    int client = GetClientOfUserId(userid);
    if(client < 1 || client > MaxClients || !IsClientInGame(client)) return Plugin_Continue;

    if(GetClientTeam(client) == 0){
        CS_SwitchTeam(client, 1);
    }

    return Plugin_Continue;
}
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Может быть такое, что если игрок зайдет на сервер и не выберет команду, то GetClientTeam будет возвращать 0
Потому если вам важно чтобы игрок был в какой-то команде, можете делать еще так:

code:
#include <cstrike>

public void OnClientPutInServer(int client){
    CreateTimer(10.0, CheckPlayerTeam, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
}
public Action CheckPlayerTeam(Handle timer, int userid){
    int client = GetClientOfUserId(userid);
    if(client < 1 || client > MaxClients || !IsClientInGame(client)) return Plugin_Continue;

    if(GetClientTeam(client) == 0){
        CS_SwitchTeam(client, 1);
    }

    return Plugin_Continue;
}
Спасибо большое, проверю
 

-=|УЧЕНИК|=-

вся жизнь,сплошной цирк.
Сообщения
876
Реакции
212
Всем привет!
Кому не сложно,можно накидать простенький код?
Чтоб CT могли подбирать бомбу и таскать ее.
Ну и чтоб не каких действий не льзя было сделать,кроме как выбросить.
Подобный плагин видел давненько,ну там вроде было много лишнего и сервер падал от него.
Заранее благодарю.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
есть ли готовая функция проверки на то, перешел ли игрок в спектора? На alliedmods готовую функцию не нашел
если в КС GetClientTeam(client) возвращает 1, то игрок зашёл за команду наблюдателей
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Подобный плагин видел давненько
минимум 2 версии было:
Сообщения автоматически склеены:

@7pElllHuK, если нужен момент смены команды, то лови событие player_team.
C-подобный:
player_team
Note: A player changed their team
Name:    player_team
Structure:   
short    userid    user ID on the server
byte    team    team id
byte    oldteam    old team id
bool    disconnect    team change because player disconnects
bool    autoteam    true if the player was auto assigned to the team (OB only)
bool    silent    if true wont print the team join messages (OB only)
string    name    player's name (OB only)
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Добрый день, подскажите пожалуйста, почему при просмотре за игроком от 1 лица теряется ID его команды?
Код:
int g_iTarget;
public Action Timer_ShowOver(Handle hTimer)
{
    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && IsClientObserver(i) && !IsFakeClient(i))
        {
            int m_iObserverMode = GetEntProp(i, Prop_Send, "m_iObserverMode");
            int iTeam;
            int Team = GetClientTeam(i);
        
            if (m_iObserverMode == 4 || m_iObserverMode == 5)
            {
                g_iTarget = GetEntPropEnt(i, Prop_Send, "m_hObserverTarget");
                iTeam = GetClientTeam(g_iTarget);
            }
            

            if (Team == 1)
            {
                 PrintToChatAll("Игрок в Спеках %s", iTeam == 2 ? "yes" : "no";
            }
        }
    }
    return Plugin_Continue;
}
Если смотреть за игроком от 3 лица или в полете то все нормально, как только я начинаю смотреть за игроком от 1 лица, плагин выдает ошибку о том что iTeam < 1
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@7pElllHuK, у тебя iTeam в коде не используется, только присваевается значение. =)
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@7pElllHuK, ты бы в параметрах строки передавал номер команды: подозреваю, что иногда iTeam равно 0, потому что режим наблюдателя ни 4 и ни 5.
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
@7pElllHuK, ты бы в параметрах строки передавал номер команды: подозреваю, что иногда iTeam равно 0, потому что режим наблюдателя ни 4 и ни 5.
Так в этом то и проблема, что при просмотре от 1 лица за игроком (m_iObserverMode == 4) выдает iTeam == 0
Сообщения автоматически склеены:

П
@7pElllHuK, ты бы в параметрах строки передавал номер команды: подозреваю, что иногда iTeam равно 0, потому что режим наблюдателя ни 4 и ни 5.
Разобрался, спасибо за помощь
 
Последнее редактирование:

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Добрый вечер, помогите пожалуйста исправить проблему с повышением var. Если игрок находится в видимости или рядом с линиями то у него повышается var до 700, и играть становится крайне тяжело
 

Вложения

  • Visual_Block 1.2.sp
    7.8 КБ · Просмотры: 15

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@7pElllHuK, судя по коду (и комментариям в нём), переписывал код я.
Там вроде и так сделано так, чтобы меньше нагружать сервер и клиенты.
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
@7pElllHuK, судя по коду (и комментариям в нём), переписывал код я.
Там вроде и так сделано так, чтобы меньше нагружать сервер и клиенты.
Да, вы переписывали, планировал после фикса в соавторы добавить, нагрузка мб и не большая но варт до 700 скачет ежесекунжно
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@7pElllHuK, а если не сходя с места, где скачет var выгрузить плагин, то он всё так же остаётся скачет?
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
@7pElllHuK, а если не сходя с места, где скачет var выгрузить плагин, то он всё так же остаётся скачет?
Не пробовал, но если плагин убрать, только его, то вар становится нормальным и не скачет. Пробовал даже на пустом сервере. Ставлю плагин и вар 700 несколько раз в секунду
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@7pElllHuK, sm plugins unload %имя_файла_плагина% в консоль сервера или через rcon, когда стоишь у линии.
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
@7pElllHuK, sm plugins unload %имя_файла_плагина% в консоль сервера или через rcon, когда стоишь у линии.
Плагин включен - var - 60 и резко 300 на пол сек, выключил плагин (sm plugins unload "Visual_Block 1.2.smx") сразу вар 60 стабильно без скачков
 

NeLifeASkazka

Участник
Сообщения
128
Реакции
70
Добрый вечер, помогите пожалуйста исправить проблему с повышением var. Если игрок находится в видимости или рядом с линиями то у него повышается var до 700, и играть становится крайне тяжело
Как вариант, можете увеличить значение fLife
 
Сверху Снизу