Иконка ресурса

MapTime TeamSwap 0.2

ravskiy1

Участник
Сообщения
190
Реакции
75
  • Автор ресурса
  • #1

Aplesin4ik

Участник
Сообщения
318
Реакции
47
Я конечно не знаю, может что то не понимаю, ну у меня это реализовано на уровне движка игры без каких либо плагинов
 

FokS

Участник
Сообщения
422
Реакции
52
Сделайте возможность добавлять свои звуки mp3, перед сменой команд - звук играет для всех в начале раунда, и когда произошла смена команд - звук в начале раунда.
Как бы звуковое предупреждение для игроков )
 

rgba

Участник
Сообщения
132
Реакции
14
Это я дурак добавил удаления оружия и денег перед проверкой, что игрок за Т или КТ

C-подобный:
        int iTRoundWIN = CS_GetTeamScore(2), iCTRoundWIN = CS_GetTeamScore(3);
        for (int i = 1; i <= MaxClients; i++)
        {
            if (i && IsClientInGame (i) && IsClientConnected(i) && !IsClientSourceTV(i))
            {   
                int iPlayerTeam = GetClientTeam(i);
                ResetWeapon(iPlayerTeam);
                ResetCash(iPlayerTeam);
                if (iPlayerTeam == 2) { CS_SwitchTeam(i, 3);  }
                else if (iPlayerTeam == 3) { CS_SwitchTeam(i, 2); }
            }
        }
 

ravskiy1

Участник
Сообщения
190
Реакции
75
  • Автор ресурса
  • #6
Это я дурак добавил удаления оружия и денег перед проверкой, что игрок за Т или КТ

C-подобный:
        int iTRoundWIN = CS_GetTeamScore(2), iCTRoundWIN = CS_GetTeamScore(3);
        for (int i = 1; i <= MaxClients; i++)
        {
            if (i && IsClientInGame (i) && IsClientConnected(i) && !IsClientSourceTV(i))
            {  
                int iPlayerTeam = GetClientTeam(i);
                ResetWeapon(iPlayerTeam);
                ResetCash(iPlayerTeam);
                if (iPlayerTeam == 2) { CS_SwitchTeam(i, 3);  }
                else if (iPlayerTeam == 3) { CS_SwitchTeam(i, 2); }
            }
        }
Я хотел сделать с этим обновление
 

rgba

Участник
Сообщения
132
Реакции
14
Я хотел сделать с этим обновление
Здорово, а когда оно будет? Просто почему-то

Ошибка:
L 04/12/2024 - 18:02:33: SourceMod error session started
L 04/12/2024 - 18:02:33: Info (map "de_dust2") (file "/home/server76875/game/cstrike/addons/sourcemod/logs/errors_20240412.log")
L 04/12/2024 - 18:02:33: [SM] Exception reported: Client 3 is not in game
L 04/12/2024 - 18:02:33: [SM] Blaming: MapTime TeamSwap.smx
L 04/12/2024 - 18:02:33: [SM] Call stack trace:
L 04/12/2024 - 18:02:33: [SM]   [0] GetClientTeam
L 04/12/2024 - 18:02:33: [SM]   [1] Line 53, plugin.sp::ResetWeapon
L 04/12/2024 - 18:02:33: [SM]   [2] Line 35, plugin.sp::RoundEnd

Вот код

код:
#pragma tabsize 0

#include <sourcemod>   
#include <sdktools_functions>
#include <cstrike>

#define PROJECT_FULLNAME    "[ PL ] MapTime TeamSwap"

bool bSwapTeam;
new startMoney;
new cashOffset;

public Plugin myinfo = { name = PROJECT_FULLNAME, author = "Ravskiy1 [vk.com/ravskiy1]", version = "0.1", };

public OnPluginStart() { HookEvent("round_end", RoundEnd); cashOffset = FindSendPropInfo("CCSPlayer","m_iAccount"); }
public OnMapStart() { bSwapTeam = false; }

public RoundEnd(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
    int iMapTime, iMapTimeLeft;
      
      GetMapTimeLimit(iMapTime);
    GetMapTimeLeft(iMapTimeLeft);
    
    if ((iMapTimeLeft/60 <= iMapTime/2) && bSwapTeam == false)
    {
        bSwapTeam = true;
        int iTRoundWIN = CS_GetTeamScore(2), iCTRoundWIN = CS_GetTeamScore(3);
        for (int i = 1; i <= MaxClients; i++)
        {
            if (i && IsClientInGame (i) && IsClientConnected(i) && !IsClientSourceTV(i))
            {   
                int iPlayerTeam = GetClientTeam(i);
                if (iPlayerTeam == 2) { CS_SwitchTeam(i, 3); ResetWeapon(iPlayerTeam); ResetCash(iPlayerTeam); }
                else if (iPlayerTeam == 3) { CS_SwitchTeam(i, 2); ResetWeapon(iPlayerTeam); ResetCash(iPlayerTeam); }
            }
        }
        CS_SetTeamScore(2, iCTRoundWIN);
          CS_SetTeamScore(3, iTRoundWIN);
          PrintToChatAll("\x07000000[\x07ff0000Старички\x07000000] \x07FFFFFFСмена команд местами после окончания половины карты.");
    }
}

ResetCash(client)
{
    startMoney = GetConVarInt(FindConVar("mp_startmoney"));

    SetEntData(client,cashOffset,startMoney,4,true);
}

ResetWeapon(client)
{
    new team = GetClientTeam(client);

    new weaponentity;
    new grenade;

    // SLOTS
    // 0 - PRIMARY ARMOR
    // 1 - SECUNDARY ARMOR
    // 2 - KNIFE
    // 3 - GRENADES - flashbang, hegrenade, smokegrenade
    // 4 - C4

    for(new slotweapon = 0; slotweapon <= 3; slotweapon++)
    {
        weaponentity = GetPlayerWeaponSlot(client,slotweapon);

        if(IsValidEntity(weaponentity))
        {
            if (slotweapon != 2)
            {
                RemovePlayerItem(client,weaponentity);

                if(slotweapon == 3)
                {
                    grenade = GetPlayerWeaponSlot(client,slotweapon);

                    while(IsValidEntity(grenade))
                    {
                        RemovePlayerItem(client,grenade);
                        grenade = GetPlayerWeaponSlot(client,slotweapon);
                    }
                }
            }
        }
    }


    if(team == CS_TEAM_CT)
    {
        GivePlayerItem(client,"weapon_usp");
    }
    else if(team == CS_TEAM_T)
    {
        GivePlayerItem(client,"weapon_glock");
    }
}
 

ravskiy1

Участник
Сообщения
190
Реакции
75
  • Автор ресурса
  • #8
ravskiy1 обновил(а) ресурс MapTime TeamSwap новой записью:

Обновление кода!

Исправлены баги!

Узнать больше об этом обновлении...
Сообщения автоматически склеены:

Здорово, а когда оно будет? Просто почему-то

Ошибка:
L 04/12/2024 - 18:02:33: SourceMod error session started
L 04/12/2024 - 18:02:33: Info (map "de_dust2") (file "/home/server76875/game/cstrike/addons/sourcemod/logs/errors_20240412.log")
L 04/12/2024 - 18:02:33: [SM] Exception reported: Client 3 is not in game
L 04/12/2024 - 18:02:33: [SM] Blaming: MapTime TeamSwap.smx
L 04/12/2024 - 18:02:33: [SM] Call stack trace:
L 04/12/2024 - 18:02:33: [SM]   [0] GetClientTeam
L 04/12/2024 - 18:02:33: [SM]   [1] Line 53, plugin.sp::ResetWeapon
L 04/12/2024 - 18:02:33: [SM]   [2] Line 35, plugin.sp::RoundEnd

Вот код

код:
#pragma tabsize 0

#include <sourcemod>  
#include <sdktools_functions>
#include <cstrike>

#define PROJECT_FULLNAME    "[ PL ] MapTime TeamSwap"

bool bSwapTeam;
new startMoney;
new cashOffset;

public Plugin myinfo = { name = PROJECT_FULLNAME, author = "Ravskiy1 [vk.com/ravskiy1]", version = "0.1", };

public OnPluginStart() { HookEvent("round_end", RoundEnd); cashOffset = FindSendPropInfo("CCSPlayer","m_iAccount"); }
public OnMapStart() { bSwapTeam = false; }

public RoundEnd(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
    int iMapTime, iMapTimeLeft;
     
      GetMapTimeLimit(iMapTime);
    GetMapTimeLeft(iMapTimeLeft);
   
    if ((iMapTimeLeft/60 <= iMapTime/2) && bSwapTeam == false)
    {
        bSwapTeam = true;
        int iTRoundWIN = CS_GetTeamScore(2), iCTRoundWIN = CS_GetTeamScore(3);
        for (int i = 1; i <= MaxClients; i++)
        {
            if (i && IsClientInGame (i) && IsClientConnected(i) && !IsClientSourceTV(i))
            {  
                int iPlayerTeam = GetClientTeam(i);
                if (iPlayerTeam == 2) { CS_SwitchTeam(i, 3); ResetWeapon(iPlayerTeam); ResetCash(iPlayerTeam); }
                else if (iPlayerTeam == 3) { CS_SwitchTeam(i, 2); ResetWeapon(iPlayerTeam); ResetCash(iPlayerTeam); }
            }
        }
        CS_SetTeamScore(2, iCTRoundWIN);
          CS_SetTeamScore(3, iTRoundWIN);
          PrintToChatAll("\x07000000[\x07ff0000Старички\x07000000] \x07FFFFFFСмена команд местами после окончания половины карты.");
    }
}

ResetCash(client)
{
    startMoney = GetConVarInt(FindConVar("mp_startmoney"));

    SetEntData(client,cashOffset,startMoney,4,true);
}

ResetWeapon(client)
{
    new team = GetClientTeam(client);

    new weaponentity;
    new grenade;

    // SLOTS
    // 0 - PRIMARY ARMOR
    // 1 - SECUNDARY ARMOR
    // 2 - KNIFE
    // 3 - GRENADES - flashbang, hegrenade, smokegrenade
    // 4 - C4

    for(new slotweapon = 0; slotweapon <= 3; slotweapon++)
    {
        weaponentity = GetPlayerWeaponSlot(client,slotweapon);

        if(IsValidEntity(weaponentity))
        {
            if (slotweapon != 2)
            {
                RemovePlayerItem(client,weaponentity);

                if(slotweapon == 3)
                {
                    grenade = GetPlayerWeaponSlot(client,slotweapon);

                    while(IsValidEntity(grenade))
                    {
                        RemovePlayerItem(client,grenade);
                        grenade = GetPlayerWeaponSlot(client,slotweapon);
                    }
                }
            }
        }
    }


    if(team == CS_TEAM_CT)
    {
        GivePlayerItem(client,"weapon_usp");
    }
    else if(team == CS_TEAM_T)
    {
        GivePlayerItem(client,"weapon_glock");
    }
}
Можешь пробовать обновление.
 

rgba

Участник
Сообщения
132
Реакции
14

Вложения

  • 1713024965447.png
    1713024965447.png
    5.1 КБ · Просмотры: 34

Ice_Sochi

Участник
Сообщения
709
Реакции
413
Исправлю. Но плагин работает
Имеет смысл iw вынести за цикл по всем игрокам, чтоб не создавать каждый шаг цикла новую переменную.
В цикле по игрокам, вероятно, нет смысла проверять i, ведь в условии у тебя i уже начинается с единицы
 

ravskiy1

Участник
Сообщения
190
Реакции
75
  • Автор ресурса
  • #13
Имеет смысл iw вынести за цикл по всем игрокам, чтоб не создавать каждый шаг цикла новую переменную.
В цикле по игрокам, вероятно, нет смысла проверять i, ведь в условии у тебя i уже начинается с единицы
Спасибо за помощь
 
Сверху Снизу