AMX MOD X
Суббота, 03.01.2026, 02:08:58



Приветствую Вас Гость | RSS
[ Главная ] [ Написание плагина - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Написание плагина
SerrrgioДата: Понедельник, 17.09.2007, 16:17:14 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Не в сети
Хочу написать плагин, но т.к. с этим языком не знаком, прошу помощи.

Есть сервер КС с вармодом, идея такая, люди против ботов, установлены podbot.
что хочется:
1. сервер пустой, заходит человек, выбирает за кого играть, в игру входят n ботов, за противоположную команду, при дисконекте человека, эти n ботов удаляются с сервера
2. заходит человек, и на сервере уже есть человек, тогда он автоматом попадает в ту команду где играет человек, и в игру входят еще n ботов, при дисконекте как и впервом случае боты удаляются.

полазил по функциям amx но не нашел событие, когда чел входит в игру
помогите как и счего начать и что дальше делать, или алгоритм как это реализовать, сделал только вот

Code
#define BOT_C 3

public plugin_init()
{
  register_cvar("my_team","1")
  register_event("ShowMenu", "menuclass", "b", "4&CT_Select", "4&Terrorist_Select");  
  register_event("ShowMenu", "menuteam", "b", "4&Team_Select_Spect", "4&Team_Select", "4&IG_Team_Select");
}

public menuclass(id)  
{  
    client_cmd(id, "slot5");
    return PLUGIN_HANDLED
}

public menuteam(id)  
{   
       // Вот здесь нужно определить, за какую команду играет человек,  
               // чтобы автоматом следующего туда кидало, сейчас кидает за CT (slot2)  

  if (get_playersnum()>0) {
    
   if (get_cvar_num("my_team") == 1) {
    client_cmd(id, "slot1");  
   } else {
    client_cmd(id, "slot2");  
   }
  }
  return PLUGIN_HANDLED
}

public client_disconnect(id)
{
//    if (is_user_bot(id)==0) {
   new pC,i  
   new Pl [32]
   new pname[32]
   get_players(Pl, pC, "ch")
   if (pC > 1) {
    get_players(Pl, pC, "d")
    for (i=0; i<BOT_C; i++) {
     get_user_name(Pl[i], pname, 31)
     server_cmd("pb remove %s",pname)
    }
   } else {
    server_cmd("pb removebots")
   }
//    server_cmd("pb removebots")
//    }
  return PLUGIN_CONTINUE
}

public client_putinserver ( id )
{
  if (!is_user_bot(id)) {
   new pC,i  
   new Pl [32]
   new my_join_team = cs_get_user_team(id)
   get_players(Pl, pC, "ch")
   if (pC==1) {
    set_cvar_num("my_team",my_join_team)
   }
   new my_team = get_cvar_num("my_team")
   if (my_team==1) {
    for (i=0; i<BOT_C; i++)  {
     server_cmd("pb add 35 5 2")
    }
   } else {
    for (i=0; i<BOT_C; i++) {
     server_cmd("pb add 35 5 1")
    }
   }
  }
  return PLUGIN_CONTINUE
}

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

 
marikcoolДата: Понедельник, 17.09.2007, 20:09:55 | Сообщение # 2
Подполковник
Группа: Пользователи
Сообщений: 139
Репутация: 1
Статус: Не в сети
resethud есть.
определяет отреспавнился игрок или нет.
но я юзаю из CSDM csdm_PostSpawn(id)

вот с чего бы я писать начал.

new respawned[33]
new human_team // команда где люди играют, отсюда тыкать в автожоин.

public csdm_PostSpawn(id) //функция спавна
{
if (respawned[id] == 1) return PLUGIN_HANDLED
// первый спавн в игре
respawned[id] = 1

if (get_user_team(id)==1) {
if (get_playersnum()==1) human_team = 1 // ты типо 1 на сервере тада выдаем значение переменой. за которую будут последущие заходить.
server_cmd("bot_add_CT") // ставим бота в противоположную команду
}
else {
if (get_playersnum()==1) human_team = 2
server_cmd("bot_add_T")
}

}

public disconnect(id)
{
respawned[id] =0
// уничтожаем 1 бота
// у тебя уже написано как удалять 1 бота.
}

Сообщение отредактировал marikcool - Понедельник, 17.09.2007, 20:13:30
 
AlModДата: Вторник, 18.09.2007, 07:57:20 | Сообщение # 3
Сонный кодер
Группа: Админы
Сообщений: 600
Репутация: 27
Статус: Не в сети
У podbot He bot_add_t u bot_add_ct, а чето другое

 
SerrrgioДата: Вторник, 18.09.2007, 18:40:24 | Сообщение # 4
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Не в сети
Quote (marikcool)
resethud есть.определяет отреспавнился игрок или нет.

в начале следующего раунда это событие опять возникает?, если да, то это мне не подходит.

Еще есть какиенить мысли?

да, забыл написать конфигурацию сервера: v1.1.2.5/Stdio 2738 insecure (RCON) (Linux, Dedicated, Protocol 47), AMXX v1.76d, WC3:FT v3.0, MM v1.19, PODBot v3.0B18c.

 
AlModДата: Вторник, 18.09.2007, 20:30:22 | Сообщение # 5
Сонный кодер
Группа: Админы
Сообщений: 600
Репутация: 27
Статус: Не в сети
Quote (marikcool)
resethud есть.
определяет отреспавнился игрок или нет.

Неверно кстати. ResetHUD не определяет, отреспавнился игрок или нет.
Это сообщение посылается когда обновляется HUD игрока, как например при вызове sv_restart 1. При респе он естественно тоже вызывается


 
marikcoolДата: Вторник, 18.09.2007, 21:24:11 | Сообщение # 6
Подполковник
Группа: Пользователи
Сообщений: 139
Репутация: 1
Статус: Не в сети
угу, лучше юзать csdm функцию, а то resethud вызывается на протяжение примерно пол секунды много раз.
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026