Question

Neket228
Новичок

Я пишу простой TDM сервер для проверки знаний. И вот настал момент завершения раунда, я хотел, чтобы если у банды 10 очков, то они выигрывают и наоборот с полицейскими. Но дело не в этом. Дело в рестарте после конца раунда. Таймер просто напросто не выполняет комманды прописанные в паблике.

Вот код:

 

Спойлер

forward EndRound();
public EndRound()
{
    SendRconCommand("gmx");
    return 1;
}

if(GangScore == 10)
{
    SendClientMessageToAll(COLOR_YELLOW,"Выиграла банда! Всем её участникам будет начислено 5 очков!");
    SendClientMessageToAll(COLOR_RED,"Рестарт сервера через 5 секунд");
    for(new i; i<MAX_PLAYERS;i++)
    {
        if(GetPlayerSkin(i) < 200return GiveScore(i,5);
    }
    SetTimer("EndRound",5000,0);
    return 1;
}
if(PoliceScore == 10)
{
    SendClientMessageToAll(COLOR_YELLOW,"Выиграли полицейские! Всем её участникам будет начислено 5 очков!");
    SendClientMessageToAll(COLOR_RED,"Рестарт сервера через 5 секунд");
    for(new i; i<MAX_PLAYERS;i++)
    {
        if(GetPlayerSkin(i) > 200return GiveScore(i,5);
    }
    SetTimer("EndRound"50000);
    return 1;
}

return 1;

 

 

Могу если надо целый паблик скинуть

Edited by Cawfee

Заметка от Cawfee , создано

3.2. Код больше 10 строк необходимо брать в теги "Код" и "Спойлер". Как это сделать рассказано в разделе "FAQ".

Устное предупреждение.

Share this post


Link to post

5 answers to this question

  • 0
Cawfee
Великий Гуру

@Neket228, сообщения в чате про выигрыш одной из команд появляются же в чате? Если в таймер добавить вывод сообщения всем игрокам, сообщение не отобразится?

Share this post


Link to post
  • 0
Neket228
Новичок

@Cawfee Нет, хотя когда я сделал это действие через команду, то все заработало

 

Вот весь паблик если надо

 

Спойлер

public OnPlayerDeath(playerid, killerid, reason)
{
    new PoliceScore,GangScore, string[32],string1[32];
    if(GetPlayerSkin(playerid) < 200 && GetPlayerSkin(killerid) < 200)
    {
        SendClientMessage(killerid,COLOR_RED,"Вы убили своего тиммейта, за это мы у вас отнимаем 5 очков и убиваем вас!");
        SetPlayerHealth(playerid,0.0);
        if(GetScore(killerid) < 5return SetScore(killerid,0);
        GiveScore(killerid,-5);
    }
    if(GetPlayerSkin(playerid) > 200 && GetPlayerSkin(killerid) > 200)
    {
        SendClientMessage(killerid,COLOR_RED,"Вы убили своего тиммейта, за это мы у вас отнимаем 5 очков и убиваем вас!");
        SetPlayerHealth(playerid,0.0);
        if(GetScore(killerid) < 5return SetScore(killerid,0);
        GiveScore(killerid,-5);
    }
    if(GetPlayerSkin(playerid) < 200 && GetPlayerSkin(killerid) > 200)
    {
        SendClientMessage(killerid,COLOR_YELLOW,"Вы убили соперника, вам было зачислено 2 очка!");
        PoliceScore += 1;
        GiveScore(killerid,2);
    }
    if(GetPlayerSkin(playerid) > 200 && GetPlayerSkin(killerid) < 200)
    {
        SendClientMessage(killerid,COLOR_YELLOW,"Вы убили соперника, вам было зачислено 2 очка!");
        GangScore += 1;
        GiveScore(killerid,2);
    }
    format(string,sizeof(string),"Счет банды: %d",GangScore);
    format(string1,sizeof(string1),"Счет полиции: %d",PoliceScore);
    SendClientMessageToAll(COLOR_YELLOW,string);
    SendClientMessageToAll(COLOR_YELLOW,string1);
    if(GangScore == 1)
    {
        SendClientMessageToAll(COLOR_YELLOW,"Выиграла банда! Всем её участникам будет начислено 5 очков!");
        SendClientMessageToAll(COLOR_RED,"Рестарт сервера через 5 секунд");
        for(new i; i<MAX_PLAYERS;i++)
        {
            if(GetPlayerSkin(i) < 200return GiveScore(i,5);
        }
        SetTimer("EndRound"5000true);
        return 1;
    }
    if(PoliceScore == 1)
    {
        SendClientMessageToAll(COLOR_YELLOW,"Выиграли полицейские! Всем её участникам будет начислено 5 очков!");
        SendClientMessageToAll(COLOR_RED,"Рестарт сервера через 5 секунд");
        for(new i; i<MAX_PLAYERS;i++)
        {
            if(GetPlayerSkin(i) > 200return GiveScore(i,5);
        }
        SetTimer("EndRound"5000true);
        return 1;
    }
    return 1;
}

 

 

Edited by Cawfee

Share this post


Link to post
  • 0
Cawfee
Великий Гуру

@Neket228, тогда имеет смысл действительно взглянуть на всю функцию, из которой и создается таймер.

Share this post


Link to post
  • 0
Neket228
Новичок

@Cawfee Переместил сеттаймер на верхнию часть условия и все заработало

Share this post


Link to post
  • 0
Cawfee
Великий Гуру

@Cawfee, не заметил сразу, зачем вам return в цикле? Оператор return прерывает выполнение функции. Таким образом, войдя в цикл начисления очков, первый игрок получает 5 очков, после чего работа функции прерывается.

 

Спойлер

    if(GangScore == 1)
    {
        SendClientMessageToAll(COLOR_YELLOW,"Выиграла банда! Всем её участникам будет начислено 5 очков!");
        SendClientMessageToAll(COLOR_RED,"Рестарт сервера через 5 секунд");
        for(new i; i<MAX_PLAYERS;i++)
        {
            if(GetPlayerSkin(i) < 200) GiveScore(i,5);
        }
        SetTimer("EndRound"5000true);
        return 1;
    }
    if(PoliceScore == 1)
    {
        SendClientMessageToAll(COLOR_YELLOW,"Выиграли полицейские! Всем её участникам будет начислено 5 очков!");
        SendClientMessageToAll(COLOR_RED,"Рестарт сервера через 5 секунд");
        for(new i; i<MAX_PLAYERS;i++)
        {
            if(GetPlayerSkin(i) > 200) GiveScore(i,5);
        }
        SetTimer("EndRound"5000true);
        return 1;
    }

 

 

Share this post


Link to post
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • tgfoscar
      By tgfoscar
      Требуется свободное владение C++. Античит, новый способ добавления техники на сервер, совместимость с CEF и возможность добавления полезных функций. За дополнительной информацией обращайтесь к wayne_gm в Discord.
    • enotplaysupptor
      By enotplaysupptor
      Основа для мода Samp для начинающих
      Скачать файл ╔══════════════════════════════════════════════════╗
      ║               Test-RolePlay v0.1           ║
      ║       Современная основа для SA-MP серверов      ║
      ╚══════════════════════════════════════════════════╝
      ✦ О ПРОЕКТЕ:
         Добро пожаловать в Test-RolePlay - мод с нуля, 
         созданный как универсальная основа для SA-MP проектов.
         Проект был создан для тех кто не знает с чего начать и начинающих разработчиков
         Версия: T-RP v0.1 [Актуальная]
      ✦ ОСНОВНЫЕ ПЛАГИНЫ:
         ▸ CrashDetect    - отладка ошибок
         ▸ MySQL R41+     - работа с базой данных
         ▸ Pawn.CMD       - система команд
         ▸ Pawn.Regex     - регулярные выражения
         ▸ SKY            - улучшенные игровые функции
         ▸ sscanf2        - парсинг параметров
         ▸ Streamer       - динамические объекты
         ▸ TOTP           - двухфакторная аутентификация
      ✦ КЛЮЧЕВЫЕ СИСТЕМЫ:
         ┌──────────────────────────────────────────────┐
         │ 🔹 Умная регистрация/авторизация:            │
         │    - Хеширование паролей                     │
         │    - Привязка Email                          │
         │    - Выбор пола и расы персонажа             │
         ├──────────────────────────────────────────────┤
         │ 🔹 Командная система:                        │
         │    - Полный набор РП-команд                  │
         │    - Расширенные админ-команды               │
         ├──────────────────────────────────────────────┤
         │ 🔹 Игровое меню:                             │
         │    - Персональная статистика                 │
         │    - Настройки аккаунта                      │
         │    - Система жалоб и вопросов                │
         ├──────────────────────────────────────────────┤
         │ 🔹 Дополнительные системы:                   │
         │    - АФК-режим с автоматическим детектом      │
         │    - Интегрированный античит (Nex-AC)        │
         └──────────────────────────────────────────────┘
      ✦ ПЛАНЫ РАЗРАБОТКИ:
         » Добавление новых игровых систем
         » Оптимизация существующего кода
         » Расширение возможностей для администраторов
         » Улучшение пользовательского интерфейса
      Если увижу что вы хотите что бы я продолжил разработку данного мода пишите или можете проявиться большую активность










      Добавил enotplaysupptor Добавлено 09.07.2025 Категория Моды Автор Я  
    • Nekit2019
      By Nekit2019
      Добрый день, имеется сервер в CRMP 0.3е (старичок, знаю, решил поностальгировать) . меняю погоду через ркон, но она скипается через пару минут на нулевую! Не пойму от чего, скриптом отдельно на погоду нет. Пожскажите, может в gamemod0 или где еще и куда прописать можно погоду? либо чтоб менялась сама, либо статическую. Вставлял из инета код в гейммод на рандомную погоду через пол часа с уведомлениями - результат такой же, меняется на 1-20 ,но сама сбрасывается на 0 через минуту.