Неограниченная смена команд

C

CaJI9pA

Вечер добрый! В принципе тема говорит сама за себя. Мне нужно чтобы любой игрок мог: менять команду, переходить в спек-ры без ограничения и без всяких команд типа "!sp". Поможете реализовать?
Плагин TeamChange Unlimited 1.2.2 не предлагать. Пользовался, он хорош, но много не нужных функций...
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
PHP:
#include <sourcemod>

#pragma newdecls required
#pragma semicolon 1

public void OnPluginStart()
{
    AddCommandListener(Command_CheckJoin, "jointeam");
}

public Action Command_CheckJoin(int client, const char[] command, int args)
{
   if(client)
   {
       char team[4];
       GetCmdArg(1, team, sizeof(team));
       
       ChangeClientTeam(client, StringToInt(team));
   }
}
 

Вложения

  • ChangeTeam.smx
    3.7 КБ · Просмотры: 13
  • ChangeTeam.sp
    375 байт · Просмотры: 10

ivanms1337

Участник
Сообщения
69
Реакции
2
Мне нужно чтобы админ с определеным флагом мог менять команду без ограничения
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Мне нужно чтобы админ с определеным флагом мог менять команду без ограничения
PHP:
#include <sourcemod>

#pragma newdecls required
#pragma semicolon 1

public void OnPluginStart()
{
    AddCommandListener(Command_CheckJoin, "jointeam");
}

public Action Command_CheckJoin(int client, const char[] command, int args)
{
   if(client)
   {
       AdminId admin = GetUserAdmin(client);
       
       if(GetAdminFlag(admin, Admin_Ban)) // Доступ админам с флагом бана
       {
           char team[4];
           GetCmdArg(1, team, sizeof(team));
           
           ChangeClientTeam(client, StringToInt(team));
       }
   }
}
 

Вложения

  • AChangeTeam.sp
    472 байт · Просмотры: 6
  • AChangeTeam.smx
    3.8 КБ · Просмотры: 5
C

CaJI9pA

@Drumanid, спасибо, нашлись добрые люди
С работы приду, попробую поставить
--- Добавлено позже ---
С виду такой простой код...
 

ivanms1337

Участник
Сообщения
69
Реакции
2
PHP:
#include <sourcemod>

#pragma newdecls required
#pragma semicolon 1

public void OnPluginStart()
{
    AddCommandListener(Command_CheckJoin, "jointeam");
}

public Action Command_CheckJoin(int client, const char[] command, int args)
{
   if(client)
   {
       AdminId admin = GetUserAdmin(client);
      
       if(GetAdminFlag(admin, Admin_Ban)) // Доступ админам с флагом бана
       {
           char team[4];
           GetCmdArg(1, team, sizeof(team));
          
           ChangeClientTeam(client, StringToInt(team));
       }
   }
}
Можешь переписать код под sourcemod v1.6.3
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Можешь переписать код под sourcemod v1.6.3
Написал на старом синтаксисе , попробуй...

PHP:
#include <sourcemod>

public OnPluginStart()
{
    AddCommandListener(Command_CheckJoin, "jointeam");
}

public Action:Command_CheckJoin(client, const String:command[], args)
{
   if(client)
   {
       AdminId admin = GetUserAdmin(client);
       
       if(GetAdminFlag(admin, Admin_Ban))
       {
           decl String:team[4];
           GetCmdArg(1, team, sizeof(team));
           
           ChangeClientTeam(client, StringToInt(team));
       }
   }
}
 

Вложения

  • AChangeTeam.sp
    418 байт · Просмотры: 2
  • AChangeTeam.smx
    3.8 КБ · Просмотры: 1

ivanms1337

Участник
Сообщения
69
Реакции
2
Написал на старом синтаксисе , попробуй...

PHP:
#include <sourcemod>

public OnPluginStart()
{
    AddCommandListener(Command_CheckJoin, "jointeam");
}

public Action:Command_CheckJoin(client, const String:command[], args)
{
   if(client)
   {
       AdminId admin = GetUserAdmin(client);
      
       if(GetAdminFlag(admin, Admin_Ban))
       {
           decl String:team[4];
           GetCmdArg(1, team, sizeof(team));
          
           ChangeClientTeam(client, StringToInt(team));
       }
   }
}
 

Вложения

  • 1.png
    1.png
    11.7 КБ · Просмотры: 20

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
PHP:
#include <sourcemod>

public OnPluginStart()
{
    AddCommandListener(Command_CheckJoin, "jointeam");
}

public Action:Command_CheckJoin(client, const String:command[], args)
{
   if(client)
   {
       if(GetAdminFlag(GetUserAdmin(client), Admin_Ban))
       {
           decl String:team[4];
           GetCmdArg(1, team, sizeof(team));
           
           ChangeClientTeam(client, StringToInt(team));
       }
   }
}
 

Вложения

  • AChangeTeam.sp
    388 байт · Просмотры: 4
  • AChangeTeam.smx
    2.8 КБ · Просмотры: 5

ivanms1337

Участник
Сообщения
69
Реакции
2
PHP:
#include <sourcemod>

public OnPluginStart()
{
    AddCommandListener(Command_CheckJoin, "jointeam");
}

public Action:Command_CheckJoin(client, const String:command[], args)
{
   if(client)
   {
       if(GetAdminFlag(GetUserAdmin(client), Admin_Ban))
       {
           decl String:team[4];
           GetCmdArg(1, team, sizeof(team));
          
           ChangeClientTeam(client, StringToInt(team));
       }
   }
}
Спасибо
 
C

CaJI9pA

PHP:
#include <sourcemod>

#pragma newdecls required
#pragma semicolon 1

public void OnPluginStart()
{
    AddCommandListener(Command_CheckJoin, "jointeam");
}

public Action Command_CheckJoin(int client, const char[] command, int args)
{
   if(client)
   {
       char team[4];
       GetCmdArg(1, team, sizeof(team));
     
       ChangeClientTeam(client, StringToInt(team));
   }
}
Работает конечно же)) а можно как то улучшить? чтобы при смене команды, не происходило самоубийство, и фраги в минус не уходили(-1,-2,-3 и т.д).
Если муторно... то и на этом спасибо)) но всё же спросить стоило!
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Работает конечно же)) а можно как то улучшить? чтобы при смене команды, не происходило самоубийство, и фраги в минус не уходили(-1,-2,-3 и т.д).
Если муторно... то и на этом спасибо)) но всё же спросить стоило!
Сделать то можно, только проблем тебе прибавит...
Игрок увидел соперника, резко поменял себе команду и он стал неуязвимым.

PHP:
#include <cstrike>

#pragma newdecls required
#pragma semicolon 1

public void OnPluginStart()
{
   AddCommandListener(Command_CheckJoin, "jointeam");
}

public Action Command_CheckJoin(int client, const char[] command, int args)
{
   if(client)
   {
       char team[4];
       GetCmdArg(1, team, sizeof(team));
       
       CS_SwitchTeam(client, StringToInt(team));
   }
}

Или допустим, остались в команде два игрока и тот кто в противоположной команде взял и сменил себе команду...

Как раунд должен закончиться?
Если только по времени.
 

Вложения

  • ChangeTeam.smx
    3.7 КБ · Просмотры: 1
  • ChangeTeam.sp
    372 байт · Просмотры: 2
C

CaJI9pA

@Drumanid, даже так... не наблюдал конечно таких махинаций на ДМ-е, но получается, чтобы все работало как я хочу, и без косяков, коротким кодом здесь не обойтись))
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
@Drumanid, даже так... не наблюдал конечно таких махинаций на ДМ-е, но получается, чтобы все работало как я хочу, и без косяков, коротким кодом здесь не обойтись))
Раз для дм, тогда похер :biggrin:
 
C

CaJI9pA

Раньше не видел такую переменную #pragma newdecls required, что она обозначает?
 

Dreizehnt

Доминик
Сообщения
1,160
Реакции
798
@Drumanid, такой вопросик при жестком ограничении в 1 игрока разницы между командами, один игрок (перевешивающий [любой игрок]) может шататься по командам без ограничений и как только он уйдёт из команды А в команду Б, то игроки команды А потеряют возможность менять команду, верно? Или сколь угодно игроков сменят команду и их потом через пару раундов утрамбует автобаланс? С моими игроками фиг что проверишь, но думаю второе будет, можешь пожалуйста как-то учесть mp_autobalance и mp_limitteams пока есть муза ? :D
--- Добавлено позже ---
P.S. VIP модуль был бы кстати в первом варианте :D То есть премиум-игрок бегает куда хочет, автобаланс уже решает что с остальными делать...
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Грубо говоря проверяет синтаксис кода.

такой вопросик при жестком ограничении в 1 игрока разницы между командами, один игрок (перевешивающий [любой игрок]) может шататься по командам без ограничений и как только он уйдёт из команды А в команду Б, то игроки команды А потеряют возможность менять команду, верно?
Если стоит автобаланс - да,верно. Если в команде уже достаточное кол-во игроков , простые игроки уже не смогут сменить команду, а вот админу будет пофигу(если поставишь с проверкой на админа, выше код есть). Если же просто, без проверки, игроки смогут свободно перемещаться не зависимо стоит ли у тебя автобаланс или нет.

Можно сделать свой собственный или же поставить существующие автобалансы, которые самостоятельно перемещают всех по командам создавай баланс команд.

По идеи должны быть стандартные квары, но видимо их нет, раз создали эту тему.
 
Сверху Снизу