Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Написать выигрывшей и проигравшей команде в чате сообщение.
Karandachik Дата: Пятница, 20.10.2023, 15:12:15 | Сообщение # 1
Сообщений: 60
Репутация: 3 [ +/- ]
Здравствуйте, подскажите можно ли при событии конца раунда написать победившим в чате типа, "Вы выиграли!", а проигравшим "Вы проиграли!"?
Искала код и нашла только с определением команды победившего, а я хочу что бы не было этого определения и сразу писало в чате. Победил - одна надпись, проиграл другая.
 
_wS_ Дата: Пятница, 20.10.2023, 15:36:24 | Сообщение # 2
Определить команду победителя же всё равно нужно, иначе как узнаем кому и что писать.
В round_end событии есть переменная "winner".
Обычно она равна 2 (выиграли T) или 3 (выиграли CT).
Дальше просто цикл по всем игрокам и в зависимости от их команды что-то пишем :)

Код
public void OnPluginStart()
{
    HookEvent("round_end", Event_round_end, EventHookMode_Post);
}

public void Event_round_end(Event event, const char[] name, bool dontBroadcast)
{
    int winner_team = event.GetInt("winner");
    if (winner_team > 1) {
        for (int client_team, client = 0; ++client <= MaxClients;) {
            if (IsClientInGame(client) && ((client_team = GetClientTeam(client)) > 1)) {
                PrintToChat(client, "Вы %s", client_team == winner_team ? "выиграли" : "проиграли");
            }
        }
    }        
}
 
Karandachik Дата: Пятница, 20.10.2023, 15:52:08 | Сообщение # 3
Сообщений: 60
Репутация: 3 [ +/- ]
Цитата _wS_ ()
Определить команду победителя же всё равно нужно, иначе как узнаем кому и что писать.
В round_end событии есть переменная "winner".
Обычно она равна 2 (выиграли T) или 3 (выиграли CT).
Дальше просто цикл по всем игрокам и в зависимости от их команды что-то пишем :)

Спасибо, но я пока научилась "кодить" на старом варианте сормода,
Можете скинуть код в старом варианте?
И сразу хотела спросить, можно ли разбить сообщения что я могла их раскрасить, по типа если выиграли теры то им в чате пишет одним цветом, а если кт то другим?

Код

public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    new winner = GetEventInt(event, "winner");
    
    if(winner <= 1)
        return;

    for(new client = 1; client <= MaxClients; client++)
        if(IsClientInGame(client) && !IsFakeClient(client))
    {
           тут писать сообщение
    }
}

Вот такой код если правильно поняла выдаст сообщение всем кто выиграл, а тем кто не выиграл ничего не напишет?


Сообщение отредактировал Karandachik - Пятница, 20.10.2023, 15:58:58
 
_wS_ Дата: Пятница, 20.10.2023, 16:17:02 | Сообщение # 4
Код
public OnPluginStart()
{
    HookEvent("round_end", Event_round_end, EventHookMode_Post);
}

public Event_round_end(Handle:event, const String:name[], bool:dontBroadcast)
{
    new winner_team = GetEventInt(event, "winner");
    if (winner_team > 1) {
        for (new client_team, client = 0; ++client <= MaxClients;) {
            if (IsClientInGame(client) && ((client_team = GetClientTeam(client)) > 1)) {
                if (client_team == winner_team) {
                    PrintToChat(client, "Вы выиграли");
                }
                else{
                    PrintToChat(client, "Вы проиграли");
                }
            }
        }
    }
}
 
Karandachik Дата: Пятница, 20.10.2023, 16:24:36 | Сообщение # 5
Сообщений: 60
Репутация: 3 [ +/- ]
Цитата _wS_ ()
public OnPluginStart()

Спасибо вам огромное!!!!!!!!!!!!!

Добавлено (20.10.2023, 18:48:47)
---------------------------------------------
Может я что-то не так сделала,плагин работает все хорошо пока игрок не сменит команду.
У меня стоит плагин баланса и если игрока кидает за другую команду он видит все наоборот. Ему пишет вы проиграли если его команда выиграла и наоборот. Как то это можно исправить?

 
_wS_ Дата: Суббота, 21.10.2023, 10:51:49 | Сообщение # 6
Цитата Karandachik ()
Как то это можно исправить?

Исправлять скорее всего нужно балансировщик, чтобы он не сразу перекидывал, а перед началом нового раунда за 'x' сек (CreateTimer). Исправить можно просто перезагрузив балансировщик sm plugins reload x.smx где-то в .cfg, server.cfg например, т.к. порядок вызовов зависит от порядка загрузки plugin'ов.
 
Karandachik Дата: Суббота, 21.10.2023, 13:45:01 | Сообщение # 7
Сообщений: 60
Репутация: 3 [ +/- ]
Цитата _wS_ ()
Исправлять скорее всего нужно балансировщик

Спасибо вам за помощь, все работает как часы.
Может вам уже сделать кнопку доната, люди бы смогли вас благодарить за помощь денюшкой.
 
  • Страница 1 из 1
  • 1
Поиск: